|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 10:05 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, непонятно что он под асимптотикой понимает асимптотика будет от размера числа или от количества битов ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 10:25 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, на видео несколько оговорок, надо "сочетания из N по 3" вместо "сочетания из 3 по N" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 11:30 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, на слайде забыл поделить на 6 С(3, N) = N! / ((N-3)! 3!) = N * (N-1) * (N-2) / 6 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 11:46 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, Непонятно, откуда следует, что после первичного устранения конфликтов "решение существует всегда". Ведь после назначения значений неконфликтующим переменным мы снова получаем задачу, которую надо решать. А если там будет кофликт, то придется делать новые назначения и т.д. Т.е. задача будет оставаться нерешенной все время, пока мы будем получать конфликты при назначениях. И в худшем случае нам придется сделать все возможные назначения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 12:22 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, непонятно что он под асимптотикой понимает асимптотика будет от размера числа или от количества битов В данном случае это одно и тоже: N булевских переменных = N бит ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 12:37 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, а проект смотрели? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 12:44 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Aleksandr Sharahov, а проект смотрели? нет, не смотрел, судя по видео, он не доделан до конца ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 12:49 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov kealon(Ruslan) Aleksandr Sharahov, а проект смотрели? нет, не смотрел, судя по видео, он не доделан до конца Не доделан до all-3-sat. Просто 3-sat он решает. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:42 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, на видео несколько оговорок, надо "сочетания из N по 3" вместо "сочетания из 3 по N" Спасибо. От волнения это. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:46 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, Непонятно, откуда следует, что после первичного устранения конфликтов "решение существует всегда". Ведь после назначения значений неконфликтующим переменным мы снова получаем задачу, которую надо решать. А если там будет кофликт, то придется делать новые назначения и т.д. Т.е. задача будет оставаться нерешенной все время, пока мы будем получать конфликты при назначениях. И в худшем случае нам придется сделать все возможные назначения. У нас состояния в точке стыковки двух веток согласованы в обе стороны. По крайней мере до следующего уровня ветвления дерева. Если в процессе прохода от одного уровня ветвления до следующего маска поменялась, то следующее состояние будет полностью согласовано с обеими частями ветки выше очередной точки ветвления ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 14:49 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov Верблюд, Непонятно, откуда следует, что после первичного устранения конфликтов "решение существует всегда". Ведь после назначения значений неконфликтующим переменным мы снова получаем задачу, которую надо решать. А если там будет кофликт, то придется делать новые назначения и т.д. Т.е. задача будет оставаться нерешенной все время, пока мы будем получать конфликты при назначениях. И в худшем случае нам придется сделать все возможные назначения. У нас состояния в точке стыковки двух веток согласованы в обе стороны. По крайней мере до следующего уровня ветвления дерева. Если в процессе прохода от одного уровня ветвления до следующего маска поменялась, то следующее состояние будет полностью согласовано с обеими частями ветки выше очередной точки ветвления Речь не о том, что согласовано или нет, а о том, как долго придется ходить и согласовывать. Если грубо. У нас матрешка, а у нее в самом конце может оказаться баба-яга. На вопрос, что в конце не ответишь, пока всю матрешку не разберешь. Но у нас в каждой матрешке не одна матрешка предыдущего уровня, а 100. И так на каждом уровне. Переходя на предыдущий уровень по одной ветке, мы не особенно понижаем сложность задачи. И чтобы ответить на вопрос, есть ли там хоть одна баба-яга, может потребоваться очень много проб. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:05 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... У нас состояния в точке стыковки двух веток согласованы в обе стороны. По крайней мере до следующего уровня ветвления дерева. Если в процессе прохода от одного уровня ветвления до следующего маска поменялась, то следующее состояние будет полностью согласовано с обеими частями ветки выше очередной точки ветвления Речь не о том, что согласовано или нет, а о том, как долго придется ходить и согласовывать. Если грубо. У нас матрешка, а у нее в самом конце может оказаться баба-яга. На вопрос, что в конце не ответишь, пока всю матрешку не разберешь. Но у нас в каждой матрешке не одна матрешка предыдущего уровня, а 100. И так на каждом уровне. Переходя на предыдущий уровень по одной ветке, мы не особенно понижаем сложность задачи. И чтобы ответить на вопрос, есть ли там хоть одна баба-яга, может потребоваться очень много проб. Объясню. Вот ты взял одно состояние и построил по нему часть решения. Неразрешенные биты соответствуют той части пространства решений, которое мы выберем при разветвлении. При этом в каждой итерации по новому состоянию заполнится как минимум один бит маски. То есть общее число итераций не может превышать n*n^3. При этом если учесть, что для построения следующего бита нам нужны только те состояния, в которых один бит соответствует текущему набору переменных и один не соответствует, то ходить мы будем не n*n^3, а n*n^2 максимум. Ну и для выгрузки всех возможных решений нам надо просто хранить маску до последнего ветвления и после получения одного решения, продолжать с того места, где было предыдущее ветвление ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:25 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, а если взять какую-то более понятную и практическую задачу как объяснение? я правильно понимаю, что в самом начале составляются все комбинации булевых троек? O(N^3) а вот на чём дальше получаются отсечки, непонятно ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:38 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov пропущено... нет, не смотрел, судя по видео, он не доделан до конца Не доделан до all-3-sat. Просто 3-sat он решает. Нужно решить за полиномиальное время. Насколько я понял, у вас в цикле делается: 1) отбросить противоречивые тройки за полиномиальное время 2) если найдено 1 решение - выход положительный 3) если на данном уровне проверены все вложенные ветки - возврат к предыдущему состоянию 4) если возможно, рекурсивно сформировать новую ветку, назначив значение для Xi,Xj 1<=i,j<=n, и перейти к шагу 1 5) если невозможно сформировать новую ветку - выход отрицательный Откуда следует, что алгоритм работает полиномиальное время, если рекурсия никуда не делась? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:57 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, а если взять какую-то более понятную и практическую задачу как объяснение? я правильно понимаю, что в самом начале составляются все комбинации булевых троек? O(N^3) а вот на чём дальше получаются отсечки, непонятно 1. Сначала создается массив комбинаций троек по N 2. Затем накатывается КНФ, состояния, которые описаны в КНФ удаляются (обнуляются биты) 3. Затем идет цикл по каждому биту, представляющему собой некоторое состояние трёх переменных и для него делается расчет решения, то есть проверяется, что ни одно другое состояние из одного или двух битов не противоречит ему. Если получаем противоречие - сбрасываем конфликтный бит и смотрим следующие. Цикл заканчивается, если больше нет состояний в одном сочетании (байт равен 0) или если в предыдущей итерации не было удалено ни одного состояния. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:00 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Не доделан до all-3-sat. Просто 3-sat он решает. Нужно решить за полиномиальное время. Насколько я понял, у вас в цикле делается: 1) отбросить противоречивые тройки за полиномиальное время 2) если найдено 1 решение - выход положительный 3) если на данном уровне проверены все вложенные ветки - возврат к предыдущему состоянию 4) если возможно, рекурсивно сформировать новую ветку, назначив значение для Xi, 1<=i<=n, и перейти к шагу 1 5) если невозможно сформировать новую ветку - выход отрицательный Откуда следует, что алгоритм работает полиномиальное время, если рекурсия никуда не делась? выше написал. там нет рекурсии ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:01 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov пропущено... Нужно решить за полиномиальное время. Насколько я понял, у вас в цикле делается: 1) отбросить противоречивые тройки за полиномиальное время 2) если найдено 1 решение - выход положительный 3) если на данном уровне проверены все вложенные ветки - возврат к предыдущему состоянию 4) если возможно, рекурсивно сформировать новую ветку, назначив значение для Xi, 1<=i<=n, и перейти к шагу 1 5) если невозможно сформировать новую ветку - выход отрицательный Откуда следует, что алгоритм работает полиномиальное время, если рекурсия никуда не делась? выше написал. там нет рекурсии 1. расчет совместимости состояния: за одну итерацию по маске у нас получается или меняется как минимум один бит в маске, или мы получаем противоречие. максимум итераций n - маска размером n. если противоречий и изменений в маске нет, выходим. 2. расчет происходит по всем состояниям: за одну итерацию мы или удаляем хотя бы одно состояние или выходим с сообщением SAT. Тут нет никаких рекурсий. п.1 выполняется максимум за n^4, п.2 - максимум n^6. один вложен в другой, суммарное время n^10. Но учитывая мою статистику по нескольким десяткам тысяч различных CNF цикл из п.2 завершается уже на 4-5 итерации, n^3 там не знаю на какой случай, надо видимо специально такой придумывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:04 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Ролики не смотрю. Для начала неплохо увидеть, относится ли название темы к каждой NP-сложной или только к некоторым? Если к некоторым, имеется ли возможность из постановки задачи сделать вывод о подпадании задачи под тему топика? Надеюсь, что задача на 1лимон$ подпадает? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:50 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
exp98 Ролики не смотрю. Для начала неплохо увидеть, относится ли название темы к каждой NP-сложной или только к некоторым? Если к некоторым, имеется ли возможность из постановки задачи сделать вывод о подпадании задачи под тему топика? Надеюсь, что задача на 1лимон$ подпадает? попадает. прорешано уже несколько десятков тысяч различных cnf из интернетов, решены все. на миллион не рассчитываю - пусть в зад себе запихают, бюрократы сраные ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:56 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 17:24 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Верблюд пропущено... выше написал. там нет рекурсии 1. расчет совместимости состояния: за одну итерацию по маске у нас получается или меняется как минимум один бит в маске, или мы получаем противоречие. максимум итераций n - маска размером n. если противоречий и изменений в маске нет, выходим. 2. расчет происходит по всем состояниям: за одну итерацию мы или удаляем хотя бы одно состояние или выходим с сообщением SAT. Тут нет никаких рекурсий. п.1 выполняется максимум за n^4, п.2 - максимум n^6. один вложен в другой, суммарное время n^10. Но учитывая мою статистику по нескольким десяткам тысяч различных CNF цикл из п.2 завершается уже на 4-5 итерации, n^3 там не знаю на какой случай, надо видимо специально такой придумывать. Мне не ясен переход на следующий шаг алгоритма, после того как обнаружили, что очередная итерация ничего не меняет. Также неясно, почему не потребуется откат: ведь мы можем не угадать значение переменной и узнать об этом не сразу. Хорошо бы увидеть все на примере N=6..8 переменных. А еще лучше строгое доказательство, со всеми определениями (что есть состояние, что есть маска, как и когда они меняются). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 19:39 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Да, я понял. Строгое доказательство будет. Начал писать функцию, возвращающую все возможные результаты решения и похоже всё оно так и есть как я говорил, последовательно переключая состояния дерева мы за n^3 итераций точно приходим к следующему решению. То есть массив, оставшийся после алгоритма голосования содержит не просто все неконфликтующие друг с другом состояния, он содержит суперпозицию всех возможных решений и ни одного который не подходит под наш КНФ. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 19:58 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Мне не ясен переход на следующий шаг алгоритма, после того как обнаружили, что очередная итерация ничего не меняет. Также неясно, почему не потребуется откат: ведь мы можем не угадать значение переменной и узнать об этом не сразу. А мы и не пытаемся угадывать значение переменной. Если для какой-то переменной не существует однозначного назначения, мы оставляем её в суперпозиции состояний. Из этого как раз и следует тот факт, что если на очередной итерации маска не изменилась, мы просто заканчиваем работу и говорим, что состояние согласовано. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 20:02 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov Мне не ясен переход на следующий шаг алгоритма, после того как обнаружили, что очередная итерация ничего не меняет. Также неясно, почему не потребуется откат: ведь мы можем не угадать значение переменной и узнать об этом не сразу. А мы и не пытаемся угадывать значение переменной. Если для какой-то переменной не существует однозначного назначения, мы оставляем её в суперпозиции состояний. Из этого как раз и следует тот факт, что если на очередной итерации маска не изменилась, мы просто заканчиваем работу и говорим, что состояние согласовано. Определение согласованности тоже хочется увидеть. В самом начале работы состояние согласовано? Вот, допустим, определили несколько переменных, а все остальные не можем назначить, что тогда делаем? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 20:10 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Определение согласованности тоже хочется увидеть. В самом начале работы состояние согласовано? В самом начале это когда? До применения КНФ существуют все возможные решения, они согласованы и равны 1. И да, и их 2^n )). После применения КНФ часть состояний становится несовместима друг с другом. Для согласования применяется алгоритм консенсуса с удалением участников (конфликтующих состояний). После работы алгоритма все состояния опять согласованы и их набор содержит суперпозицию всех возможных решений. Aleksandr Sharahov Вот, допустим, определили несколько переменных, а все остальные не можем назначить, что тогда делаем? Александр, вы видео смотрели? Там подробно рассмотрены все варианты действий. И в презентации pptx на гитхабе. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 20:21 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov Определение согласованности тоже хочется увидеть. В самом начале работы состояние согласовано? В самом начале это когда? До применения КНФ существуют все возможные решения, они согласованы и равны 1. И да, и их 2^n )). После применения КНФ часть состояний становится несовместима друг с другом. Для согласования применяется алгоритм консенсуса с удалением участников (конфликтующих состояний). После работы алгоритма все состояния опять согласованы и их набор содержит суперпозицию всех возможных решений. Aleksandr Sharahov Вот, допустим, определили несколько переменных, а все остальные не можем назначить, что тогда делаем? Александр, вы видео смотрели? Там подробно рассмотрены все варианты действий. И в презентации pptx на гитхабе. Смотрел. Проблема в отсутствии четких определений, которые я пытаюсь нащупать. > После работы алгоритма все состояния опять согласованы и их набор содержит суперпозицию всех возможных решений. По идее после работы алгоритма нам нужно другое, ответ: да или нет. Неясно, какова сложность вычисления единственного решения или доказательства, что его нет, по этой суперпозиции. Кстати, вы решали КНФ и с положительными, и с отрицательными ответами? или только положительные? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 20:32 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Кстати, вы решали КНФ и с положительными, и с отрицательными ответами? или только положительные? Я решал примеры, которые есть в папке /samples Там и положительные и отрицательные и с разным числом переменных. Больше тысячи штук. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 21:40 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov Кстати, вы решали КНФ и с положительными, и с отрицательными ответами? или только положительные? Я решал примеры, которые есть в папке /samples Там и положительные и отрицательные и с разным числом переменных. Больше тысячи штук. Насколько я теперь понимаю, ваш алгоритм сокращает множество возможных решений, но не дает окончательный ответ на вопрос существования решения. Как вы получали окончательный ответ: 1) Использовали перебор всех комбинаций значений переменных из суперпозиции, выданной вашим алгоритмом? 2) Назначали значения неопределенных переменных и рекурсивно применяли ваш алгоритм? 3) Как-то по-другому? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 21:54 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Как вы получали окончательный ответ: 1) Использовали перебор всех комбинаций значений переменных из суперпозиции, выданной вашим алгоритмом? 2) Назначали значения неопределенных переменных и рекурсивно применяли ваш алгоритм? 3) Как-то по-другому? Выяснил один неприятный момент. Если мы хотим получить решение для какой-то ветки, то просто пройтись по ней и выбрать не получится. Хотя на некоторых примерах работает. После каждого выбора необходимо схлопнуть суперпозицию, удалив НЕВЫБРАННЫЕ состояния и запустив алгоритм консенсуса еще раз. Естественно, если хочется потом получить еще одно решения, потребуется скопировать оригинальный массив. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 21:59 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov Как вы получали окончательный ответ: 1) Использовали перебор всех комбинаций значений переменных из суперпозиции, выданной вашим алгоритмом? 2) Назначали значения неопределенных переменных и рекурсивно применяли ваш алгоритм? 3) Как-то по-другому? Выяснил один неприятный момент. Если мы хотим получить решение для какой-то ветки, то просто пройтись по ней и выбрать не получится. Хотя на некоторых примерах работает. После каждого выбора необходимо схлопнуть суперпозицию, удалив НЕВЫБРАННЫЕ состояния и запустив алгоритм консенсуса еще раз. Естественно, если хочется потом получить еще одно решения, потребуется скопировать оригинальный массив. Т.е. вы для КАЖДОГО назначения используете рекурсивный вариант (2). Отсюда следует, что оценка сложности не верна. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 22:08 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Выяснил один неприятный момент. Если мы хотим получить решение для какой-то ветки, то просто пройтись по ней и выбрать не получится. Хотя на некоторых примерах работает. После каждого выбора необходимо схлопнуть суперпозицию, удалив НЕВЫБРАННЫЕ состояния и запустив алгоритм консенсуса еще раз. Естественно, если хочется потом получить еще одно решения, потребуется скопировать оригинальный массив. Т.е. вы для КАЖДОГО назначения используете рекурсивный вариант (2). Отсюда следует, что оценка сложности не верна. Нет там рекурсии. От слова совсем. Набор неизвестных битов конечен и не превышает число переменных. То есть максимум оценка может оказаться выше в n раз. Но уже нашли другую проблему, более серьёзную. Замыкание цепочек назначений через отрицание группы состояний. В результате получаем SAT вместо UNSAT. Вот тут да, придется в результате вычисления эти циклы искать отдельным алгоритмом. Надеюсь что решится и очень странно что среди найденных в интернете нескольких десятков тысяч тестов ни одного с таким циклом не попалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 02:20 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov пропущено... Т.е. вы для КАЖДОГО назначения используете рекурсивный вариант (2). Отсюда следует, что оценка сложности не верна. Нет там рекурсии. От слова совсем. Набор неизвестных битов конечен и не превышает число переменных. То есть максимум оценка может оказаться выше в n раз. Но уже нашли другую проблему, более серьёзную. Замыкание цепочек назначений через отрицание группы состояний. В результате получаем SAT вместо UNSAT. Вот тут да, придется в результате вычисления эти циклы искать отдельным алгоритмом. Надеюсь что решится и очень странно что среди найденных в интернете нескольких десятков тысяч тестов ни одного с таким циклом не попалось. Есть там рекурсия. Вы не решаете 3-SAT. Вместо этого вы "упрощаете" проблему за полиномиальное время, а потом окончательно решаете ПЕРЕБОРОМ. Вот в этом переборе и скрыта рекурсия, которую вы не хотите признать, т.к. на ваших примерах перебор тривиален. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 09:36 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Нет там рекурсии. От слова совсем. Набор неизвестных битов конечен и не превышает число переменных. То есть максимум оценка может оказаться выше в n раз. Но уже нашли другую проблему, более серьёзную. Замыкание цепочек назначений через отрицание группы состояний. В результате получаем SAT вместо UNSAT. Вот тут да, придется в результате вычисления эти циклы искать отдельным алгоритмом. Надеюсь что решится и очень странно что среди найденных в интернете нескольких десятков тысяч тестов ни одного с таким циклом не попалось. Есть там рекурсия. Вы не решаете 3-SAT. Вместо этого вы "упрощаете" проблему за полиномиальное время, а потом окончательно решаете ПЕРЕБОРОМ. Вот в этом переборе и скрыта рекурсия, которую вы не хотите признать, т.к. на ваших примерах перебор тривиален. Перебором я выбираю решения, а не создаю их и не решаю. Стоимость - разница между 3-SAT и ALL-3-SAT. Вы не сможете выбрать все 2^n степени решений за время меньшее количества этих решений. Построить можете, выбрать нет. Думаю разница вполне должна быть понятна. Алгоритм строит все решения. Результат работы - информация об их наличии или отсутствии. Выбор всех решений вопрос отдельный, к задаче выполнимости не имеющий ни какого отношения. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 11:53 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, По существу, вы реализовали улучшенный перебор. От этого задача не стала полиномиальной. Еще раз, вы не решили 3-SAT за полиномиальное время Но для небольших N и несложных КНФ задача, безусловно, упростилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:18 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, Обратите внимание на то, что вы подменяете задачу: вместо ответа на вопрос существует ли решение КНФ(x1,x2...xN)=true, вы находите множество значений переменных, в котором ВОЗМОЖНО есть решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:33 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, Обратите внимание на то, что вы подменяете задачу: вместо ответа на вопрос существует ли решение КНФ(x1,x2...xN)=true, вы находите множество значений переменных, в котором ВОЗМОЖНО есть решение. Не ВОЗМОЖНО. А есть. При чем только они. С циклами, которые алгоритм не обнаруживает в силу локальности я проблему решу. Перебиралку решений вчера вечером делал и она выбирала решения однозначно и ничего лишнего, ни каких бэктрекингов и прочих проблем решателей класса 2^n ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:41 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Хотя наверное соглашусь, пока нет формального доказательства это всего лишь гипотезы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:43 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, Именно ВОЗМОЖНО. У вас же для отрицательных примеров множество не всегда будет пустым. Если докажете, что для них множество всегда пусто, - вот тогда дело сделано, задача решена. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:47 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, Именно ВОЗМОЖНО. У вас же для отрицательных примеров множество не всегда будет пустым. Если докажете, что для них множество всегда пусто, - вот тогда дело сделано, задача решена. Именно это я пытаюсь сделать. Вчера пытался. Пока мне не подкинули пример с циклом, для которого алгоритм как раз пустые пропускает. Из других проверенных тестовых примеров неправильных решений не получалось выбрать, как я не старался. Понять и осознать сложно почему так, хотя я как раз представлял именно такой вариант решения, когда дошел до алгоритма. Но вот доказать что так всегда... Один пример уже есть, что это может быть не так, но там проблема понятна почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:52 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov Верблюд, Именно ВОЗМОЖНО. У вас же для отрицательных примеров множество не всегда будет пустым. Если докажете, что для них множество всегда пусто, - вот тогда дело сделано, задача решена. Именно это я пытаюсь сделать. Вчера пытался. Пока мне не подкинули пример с циклом, для которого алгоритм как раз пустые пропускает. Из других проверенных тестовых примеров неправильных решений не получалось выбрать, как я не старался. Понять и осознать сложно почему так. А доказать... В таком случае имеет смысл оценить сложность рекурсивного алгоритма с назначениями. Может, найдете способ делать удачные назначения, а потом вашим алгоритмом сокращать множество возможных решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 12:57 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Именно это я пытаюсь сделать. Вчера пытался. Пока мне не подкинули пример с циклом, для которого алгоритм как раз пустые пропускает. Из других проверенных тестовых примеров неправильных решений не получалось выбрать, как я не старался. Понять и осознать сложно почему так. А доказать... В таком случае имеет смысл оценить сложность рекурсивного алгоритма с назначениями. Может, найдете способ делать удачные назначения, а потом вашим алгоритмом сокращать множество возможных решений. Удачные назначения как раз и остаются после работы алгоритма. И только удачные, и других нет. Не учитывая логической проблемы с циклами с отрицанием друг друга (два невыполнимых состояния рекурсивно отрицают друг друга, получается логическая проблема, которую мой алгоритм не умеет находить). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 13:05 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov пропущено... В таком случае имеет смысл оценить сложность рекурсивного алгоритма с назначениями. Может, найдете способ делать удачные назначения, а потом вашим алгоритмом сокращать множество возможных решений. Удачные назначения как раз и остаются после работы алгоритма. И только удачные, и других нет. Не учитывая логической проблемы с циклами с отрицанием друг друга (два невыполнимых состояния рекурсивно отрицают друг друга, получается логическая проблема, которую мой алгоритм не умеет находить). Значит, и надо переменным из этих состояний сделать назначения, чтобы потом отсечь их и оставить только то, что надо. Разорвете цикл взаимозависимости, циклов конечное число. Важно найти и порвать все циклы без рекурсии. Можно попробовать классифицировать циклы на "хорошие" и "плохие". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 13:17 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Удачные назначения как раз и остаются после работы алгоритма. И только удачные, и других нет. Не учитывая логической проблемы с циклами с отрицанием друг друга (два невыполнимых состояния рекурсивно отрицают друг друга, получается логическая проблема, которую мой алгоритм не умеет находить). Значит, и надо переменным из этих состояний сделать назначения, чтобы потом отсечь их и оставить только то, что надо. Разорвете цикл взаимозависимости, циклов конечное число. Важно найти и порвать все циклы без рекурсии. Можно попробовать классифицировать циклы на "хорошие" и "плохие". Да, по решениям думаю пока составлять матрицу инцидентности и её исследовать. Может еще какие проблемы найдутся. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 13:36 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, покажите здесь графики с говорящей ассимптотикой прогонов? С этого надо начинать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 13:42 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
А можно вместо 30 минутного видео приложить описание метода? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 14:10 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Хотя наверное соглашусь, пока нет формального доказательства это всего лишь гипотезы. для интереса, попробуйте прикинуть сколько вы проживёте после такого открытия ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 17:24 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
exp98 Верблюд, покажите здесь графики с говорящей ассимптотикой прогонов? С этого надо начинать. 20 переменных решение находит в среднем 6 секунд на моем ноуте 50 переменных отсутствие решения находит в среднем за 20 секунд 50 переменных существование решения находит примерно за 12 минут. Мой старенький ноут неспособен перебрать 10^15 вариантов, что бы найти решение наверное даже за месяц ))) это если кто-то будет утверждать, что тут есть экспоненциальная сложность. Хотя n^10 это уже слишком много. Ну и собственно само наблюдение не нужно. Есть же исходники на гитхабе, там текста на две страницы всего. Проверить, что бесконечных циклов нет проблемы не должно быть. https://github.com/gromas/polysat ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 02:16 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, Даже миллион успешных решений для небольших N говорит лишь о том, что вы, возможно, на правильном пути. Например, срезали у экспоненты M степеней. Это здорово, но этого мало. На мой взгляд, имеет смысл сосредоточиться на генерировании функций с отрицательным результатом для больших N и поиске вариантов решения для них. И хотя более менее ясно, что мешает быстро давать отрицательный ответ, именно это не дает решить проблему в целом. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 08:30 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, Даже миллион успешных решений для небольших N говорит лишь о том, что вы, возможно, на правильном пути. Например, срезали у экспоненты M степеней. Это здорово, но этого мало. На мой взгляд, имеет смысл сосредоточиться на генерировании функций с отрицательным результатом для больших N и поиске вариантов решения для них. И хотя более менее ясно, что мешает быстро давать отрицательный ответ, именно это не дает решить проблему в целом. Отрицательный ответ алгоритм наоборот даёт очень быстро, так как с каждым шагом пространство возможных решений резко уменьшается в размере. Долго считается как раз вариант если решения есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 14:08 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Даже миллион успешных решений для небольших N говорит лишь о том, что вы, возможно, на правильном пути. Например, срезали у экспоненты M степеней. Это здорово, но этого мало. Мы видимо так и будем тут говорить о разном ) Нет там экспоненты вообще. Откройте уже исходный код и убедитесь. Две страницы текста всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 14:10 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov Даже миллион успешных решений для небольших N говорит лишь о том, что вы, возможно, на правильном пути. Например, срезали у экспоненты M степеней. Это здорово, но этого мало. Мы видимо так и будем тут говорить о разном ) Нет там экспоненты вообще. Откройте уже исходный код и убедитесь. Две страницы текста всего. Открыл. Убедился. Вы гарантируете, что при любом N единственный вызов функции IsSatisfable дает окончательный ответ и не придется ничего "дорешивать" и перепроверять? Если ответ "да", то поздравляю. Если ответ "в редких случаях надо еще...", то сами понимаете. Интересуют ложноположительные срабатывания. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 14:31 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, Я правильно понимаю, что на всех примерах и каталога samples нет ложноположительных срабатываний? Еще стоит присмотреться к тому примеру, о котором вы писали, что не все назначения из допустимой с точки зрения решателя суперпозиции давали положительный результат. Можно попробовать добавить в этот пример несколько условий с целью отсечь назначения, дающие положительный результат, и оставить только ложноположительный. Можно попробовать сделать это не прямо, а при помощи произведения с симметричной КНФ (с перенумерованными переменными). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 15:07 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд 20 переменных 50 переменных если кто-то будет утверждать, что тут есть экспоненциальная сложность. Есть же исходники на гитхабе, там текста на две страницы всего. Проверить, что бесконечных циклов нет, проблемы не должно быть. Покажите графики с ассимптотикой здесь. Там 2 страницы, а здесь уже 3-я стр., а тех двух здесь всё ещё нет. Что означает "проверить"? бесконечные циклы - вопрос на стороне программиста, при чём здесь беск. циклы? Экспоненциальной может и не быть для некоторого подмножества данных. У Usov'а тоже старый ноут, и ничего, долго - на ночь можно. Графики убеждают лучше, чем ля-ля. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 15:40 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Мы видимо так и будем тут говорить о разном ) Нет там экспоненты вообще. Откройте уже исходный код и убедитесь. Две страницы текста всего. Открыл. Убедился. Вы гарантируете, что при любом N единственный вызов функции IsSatisfable дает окончательный ответ и не придется ничего "дорешивать" и перепроверять? Если ответ "да", то поздравляю. Если ответ "в редких случаях надо еще...", то сами понимаете. Интересуют ложноположительные срабатывания. Дорешивать придется. Есть пример, на котором алгоритм всегда выдает ложноположительный ответ. Особый случай КНФ, в котором алгоритм не может разрешить две или более невыполнимых циклических зависимости, взаимоотрицающих друг друга. В разделе samples лежит файл Mikhail_unsat.cnf , содержащий восемь таких циклов. Как найти и разрешить такие зависимости я вполне представляю и сейчас занимаюсь алгоритмом этой проблемы. Других вариантов ложноположительных ответов не существует. Уже написана большая часть формального доказательства работы алгоритма, в котором подробно рассматривается это исключение. Так же есть доказательство того, что невозможно получить ложноотрицательное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 16:46 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
exp98 Там 2 страницы, а здесь уже 3-я стр., а тех двух здесь всё ещё нет. Вы серьезно? Может мне сюда проект весь выложить в отдельную тему специально для тех, кто не увидел тут ссылки на проект github? Думаю модераторы будут очень рады такому. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 16:48 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov пропущено... Открыл. Убедился. Вы гарантируете, что при любом N единственный вызов функции IsSatisfable дает окончательный ответ и не придется ничего "дорешивать" и перепроверять? Если ответ "да", то поздравляю. Если ответ "в редких случаях надо еще...", то сами понимаете. Интересуют ложноположительные срабатывания. Дорешивать придется. Есть пример, на котором алгоритм всегда выдает ложноположительный ответ. Особый случай КНФ, в котором алгоритм не может разрешить две или более невыполнимых циклических зависимости, взаимоотрицающих друг друга. В разделе samples лежит файл Mikhail_unsat.cnt, содержащий восемь таких циклов. Как найти и разрешить такие зависимости я вполне представляю и сейчас занимаюсь алгоритмом этой проблемы. Других вариантов ложноположительных ответов не существует. Уже написана большая часть формального доказательства работы алгоритма, в котором подробно рассматривается это исключение. Дорешивание - это и есть экспонента. > Других вариантов ложноположительных ответов не существует Откуда вы это знаете. Может, просто другие варианты вам не попадались. В общем, это надо доказать, или дорешивать придется всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 16:52 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov это надо доказать, или дорешивать придется всегда. Согласен. После моего алгоритма в случае положительного ответа придется запускать алгоритм или получения всех ответов - он экспоненциальный, так как решение может содержать все 2 n возможных решений, но может быть выгоден, если количество оставшихся "в живых" состояний крайне мало и соответственно решений тоже очень мало, или алгоритм с построением направленного графа таких зависимостей, он неприятный, требует дополнительно N 6 памяти и работает соответственно не меньше чем за N 6 времени, хотя на фоне общего времени получения решения N 10 его стоимость мала. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 16:58 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov это надо доказать, или дорешивать придется всегда. Согласен. После моего алгоритма в случае положительного ответа придется запускать алгоритм или получения всех ответов - он экспоненциальный, так как решение может содержать все 2 n возможных решений, но может быть выгоден, если количество оставшихся "в живых" состояний крайне мало и соответственно решений тоже очень мало, или алгоритм с построением направленного графа таких зависимостей, он неприятный, требует дополнительно N 6 памяти и работает соответственно не меньше чем за N 6 времени, хотя на фоне общего времени получения решения N 10 его стоимость мала. N^6 по памяти - это проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 17:16 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Есть пока только гипотеза, что исследовать нужно не только пространство возможных решений, но и пространство нулей - тех состояний которые были выкинуты на этапе работы алгоритма консенсуса. Если среди них есть циклические зависимости, то вероятно они являются отражением наших циклов на область нулей. Плюс такого подхода в том, что при ложноположительном результате в области нулей практически отсутствуют состояния, что значительно сокращает пространство поиска такой зависимости. Например со случаем файла mikhail_unsat в пространство нулей кроме самой КНФ вобще ничего не попадает. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 17:22 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov, Есть пока только гипотеза, что исследовать нужно не только пространство возможных решений, но и пространство нулей - тех состояний которые были выкинуты на этапе работы алгоритма консенсуса. Если среди них есть циклические зависимости, то вероятно они являются отражением наших циклов на область нулей. Плюс такого подхода в том, что при ложноположительном результате в области нулей практически отсутствуют состояния, что значительно сокращает пространство поиска такой зависимости. Например со случаем файла mikhail_unsat в пространство нулей кроме самой КНФ вобще ничего не попадает. Что мешает домножить файл mikhail_unsat на КНФ с сотней других переменных, которая имеет решение и кучу нулей. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 17:51 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд Aleksandr Sharahov, Есть пока только гипотеза, что исследовать нужно не только пространство возможных решений, но и пространство нулей - тех состояний которые были выкинуты на этапе работы алгоритма консенсуса. Если среди них есть циклические зависимости, то вероятно они являются отражением наших циклов на область нулей. Плюс такого подхода в том, что при ложноположительном результате в области нулей практически отсутствуют состояния, что значительно сокращает пространство поиска такой зависимости. Например со случаем файла mikhail_unsat в пространство нулей кроме самой КНФ вобще ничего не попадает. Что мешает домножить файл mikhail_unsat на КНФ с сотней других переменных, которая имеет решение и кучу нулей. Вообще в конце можно попытаться построить хотя бы одно решение, тогда получим конкретный вектор, указывающий на конфликт, рассматриваем этот вектор и убиваем конфликт. Проблема может быть в том, что число таких конфликтов конечно конечно, но я не готов сейчас назвать даже порядок ) Проблема еще и в том, что на данный момент я даже не знаю, влияет ли такой конфликт на всё решение сразу или только на часть возможных решений. Если он влияет только на часть возможных решений, то способ с построением конкретного решения может стать экспоненциальным. Например, имеется одно решение и 2^n -1 конфликтующих. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 18:02 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov пропущено... Что мешает домножить файл mikhail_unsat на КНФ с сотней других переменных, которая имеет решение и кучу нулей. Вообще в конце можно попытаться построить хотя бы одно решение, тогда получим конкретный вектор, указывающий на конфликт, рассматриваем этот вектор и убиваем конфликт. Проблема может быть в том, что число таких конфликтов конечно конечно, но я не готов сейчас назвать даже порядок ) Проблема еще и в том, что на данный момент я даже не знаю, влияет ли такой конфликт на всё решение сразу или только на часть возможных решений. Если он влияет только на часть возможных решений, то способ с построением конкретного решения может стать экспоненциальным. Например, имеется одно решение и 2^n -1 конфликтующих. Решатели так и делают. Расщепляют по наиболее популярной переменной и упрощают. Тут сразу рекурсия вырисовывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 18:14 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Вообще в конце можно попытаться построить хотя бы одно решение, тогда получим конкретный вектор, указывающий на конфликт, рассматриваем этот вектор и убиваем конфликт. Проблема может быть в том, что число таких конфликтов конечно конечно, но я не готов сейчас назвать даже порядок ) Проблема еще и в том, что на данный момент я даже не знаю, влияет ли такой конфликт на всё решение сразу или только на часть возможных решений. Если он влияет только на часть возможных решений, то способ с построением конкретного решения может стать экспоненциальным. Например, имеется одно решение и 2^n -1 конфликтующих. Решатели так и делают. Расщепляют по наиболее популярной переменной и упрощают. Тут сразу рекурсия вырисовывается. Интересно, да, если имеет место расщепление по какой-то переменной, то сумма всех нулевых векторов в обоих половинах не может превышать сумму таких векторов в общем решении. Но я не уверен, что это нам что-то даёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 18:22 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov пропущено... Решатели так и делают. Расщепляют по наиболее популярной переменной и упрощают. Тут сразу рекурсия вырисовывается. Интересно, да, если имеет место расщепление по какой-то переменной, то сумма всех нулевых векторов в обоих половинах не может превышать сумму таких векторов в общем решении. Но я не уверен, что это нам что-то даёт. Оно не много дает, если действовать рекурсивно. Хорошо бы уметь определять независимые конфликты не рекурсивно. Нечто подобное есть в эвристиках решателей - они не суются повторно туда, где однажды обожглись. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 18:34 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Интересно, да, если имеет место расщепление по какой-то переменной, то сумма всех нулевых векторов в обоих половинах не может превышать сумму таких векторов в общем решении. Но я не уверен, что это нам что-то даёт. Оно не много дает, если действовать рекурсивно. Хорошо бы уметь определять независимые конфликты не рекурсивно. Нечто подобное есть в эвристиках решателей - они не суются повторно туда, где однажды обожглись. Можно нулевые вектора попробовать проверить на наличие цепочек приводящих к какому-то локальному решению. Консенсус среди нулей. Пусть сами выберут кто лишний. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 18:37 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Интересно, да, если имеет место расщепление по какой-то переменной, то сумма всех нулевых векторов в обоих половинах не может превышать сумму таких векторов в общем решении. Но я не уверен, что это нам что-то даёт. Оно не много дает, если действовать рекурсивно. Хорошо бы уметь определять независимые конфликты не рекурсивно. Нечто подобное есть в эвристиках решателей - они не суются повторно туда, где однажды обожглись. Решение готово. Надо просто ХРАНИТЬ все построенные векторы и сравнивать не с тремя переменными комбинации, а с вектором целиком. Новое решение решает проблему, жрёт в 2n раз больше памяти и соответственно времени. Исходники можно найти тут: https://github.com/gromas/polysat/tree/extended_vector ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 18:12 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov пропущено... Оно не много дает, если действовать рекурсивно. Хорошо бы уметь определять независимые конфликты не рекурсивно. Нечто подобное есть в эвристиках решателей - они не суются повторно туда, где однажды обожглись. Решение готово. Надо просто ХРАНИТЬ все построенные векторы и сравнивать не с тремя переменными комбинации, а с вектором целиком. Новое решение решает проблему, жрёт в 2n раз больше памяти и соответственно времени. Исходники можно найти тут: https://github.com/gromas/polysat/tree/extended_vector Насчет 2n можно пояснить: что хранится, как сравнивается, почему этого достаточно для фильтрации множества решений? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 18:49 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... Решение готово. Надо просто ХРАНИТЬ все построенные векторы и сравнивать не с тремя переменными комбинации, а с вектором целиком. Новое решение решает проблему, жрёт в 2n раз больше памяти и соответственно времени. Исходники можно найти тут: https://github.com/gromas/polysat/tree/extended_vector Насчет 2n можно пояснить: что хранится, как сравнивается, почему этого достаточно для фильтрации множества решений?
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 19:04 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov почему этого достаточно для фильтрации множества решений? Вопрос интересный. Сейчас сижу описываю принцип работы. Смысл следующий.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 19:21 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 19:27 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд Почему? На пальцах сложно объяснить. Общий смысл такой: допустим у нас в списке существует некоторый вектор, для которого решение (полный вектор размером n) построить нельзя. Предыдущий алгоритм пропускал такие векторы по той причине, что он каждый раз начинал строиться не учитывая предыдущей истории, а проверяя соответствие только текущему назначению трёх переменных. Теперь если вектору соответствует какая-то цепочка, не приводящая к решению, то в ней как минимум две маски сочетаний будут противоречить друг другу. Это означает две вещи - что данная пара конфликтующих векторов единственная и другого варианта выбора (расщепления пространства решений с другими значениями маски) для этого конфликта у нас нет, иначе бы мы не получили конфликт, так как каждый вектор соответствует хотя бы одному другому в каждом сочетании, ну и из этого следует, что два проверяемых вектора конфликтуют с единственным возможным вектором, что невозможно в силу того, что алгоритм как раз такие конфликтующие пары удаляет. На а про то, что цепочки из возможных решений не могут быть удалены объяснение совсем простое. Если существует решение (полный вектор размером n), то для него в каждой комбинации должен существовать вектор как минимум размером 3. При этом для каждого такого вектора в одной комбинации переменных должен существовать как минимум один не противоречащий ему вектор в следующей комбинации и их полные вектора будут полностью соответствовать друг другу и всем последующим, подходящим к решению, так как они не могут конфликтовать друг с другом в силу того, что являются частью одного решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 21:14 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Теперь если вектору соответствует какая-то цепочка, не приводящая к решению, то в ней как минимум две маски сочетаний будут противоречить друг другу. Это простейший случай, с ним все понятно. Но ведь может существовать длинная цепочка, не приводящая к решению, в которой нет попарно противоречащих друг другу масок сочетаний. Она запросто даст ложноположительное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 21:33 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд Теперь если вектору соответствует какая-то цепочка, не приводящая к решению, то в ней как минимум две маски сочетаний будут противоречить друг другу. Это простейший случай, с ним все понятно. Но ведь может существовать длинная цепочка, не приводящая к решению, в которой нет попарно противоречащих друг другу масок сочетаний. Она запросто даст ложноположительное решение. могла существовать в прошлом варианте. тут нет как таковой длинной цепочки, так как вектор после пересчета по сути сам является концом длинной цепочки "слева" и по сути в бесконечном плане происходит замыкание начала и конца цепочки (раньше так сделать было невозможно, так как истории слева не было) - цепочки, где любой выбор не противоречит любому другому дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 21:53 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, То, что если ее "вытянуть", то она замкнется это как раз понятно. Но непонятно, как вы это обнаружите. Что такого нового вы добавили в алгоритм, из-за чего он стал это обнаруживать. Не факт, что в любом случае будет достаточно цикла, можете удалить лишнее. Вдруг цепочки имеют общие части, и нужна рекурсия. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 22:04 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, То, что если ее "вытянуть", то она замкнется это как раз понятно. Но непонятно, как вы это обнаружите. Что такого нового вы добавили в алгоритм, из-за чего он стал это обнаруживать. Не факт, что в любом случае будет достаточно цикла, можете удалить лишнее. Вдруг цепочки имеют общие части, и нужна рекурсия. По сути пространство решений имеет некое подобие с поверхностью Римана, все цепочки находятся в разных измерениях и непрерывны, при этом на проекции в трёхмерное пространство кажется что функция имеет разрывы и построить из этих цепочек её невозможно. Каждая часть полного вектора имеет или точное соответствие следующей и предыдущей части или частичное соответствие двум или более другим. При этом каждая из этих двух в конечном итоге замыкает цепь в первый выбранный вектор, так как выбрав конкретный путь, мы уже не сможем выбрать другой. И в этом конкретном пути все вектора консистентны друг с другом, если имеется решение, и неконсистентны, если такого решения нет. Но в последнем случае между двумя какими-то векторами цепочки обязательно будет противоречие и один из них будет удален алгоритмом. В прошлый раз поверхность решений не была замкнута, начиналась с некоторого края и получался разрыв, приводящий к противоречию только при полном исследовании возможного варианта решения. Именно поэтому алгоритм за n^3 памяти не был способен отследить варианты логической взаимоблокировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 22:10 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Тут еще один момент замечу на всякий. У нас, что бы цепочка после замыкания привела к ложноположительному результату необходимо сделать так, что бы в пути в разных векторах этой цепочки была назначена одна и та же переменная разными способами (0 или 1). Это единственный вариант, который делает решение невозможным. При этом тогда в одном из векторов должно быть четкое назначение 1 или 0. То есть ему соответствует один единственный вариант решения вместе со следующим вектором. Из этого следует, что этот 0 будет реплицирован по всей цепочке векторов до того вектора, где переменной назначается значение 1. И тут как раз алгоритм отсекает вектор с единицей, так как он не совпадает с предыдущим... Не отсечь он может только если ранее существует ветвление, сбрасывающее значение этой переменной, то есть деление по значению самой этой переменной. Но тогда наш вариант цепочки с установленным 0 не попадет в эту ветку с установленной 1 вообще, то есть конфликта не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 22:20 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, Непонятно, как удается исключить цепочки без рекурсии. Я правильно понимаю, что мы идем по цепочке, делая назначения, до ее замыкания, а затем удаляем ее навсегда. Почему не может существовать решения с тем же началом, что в удаленной цепочке, но другим назначением где-то посередине цепочки? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 22:28 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, Непонятно, как удается исключить цепочки без рекурсии. Я правильно понимаю, что мы идем по цепочке, делая назначения, до ее замыкания, а затем удаляем ее навсегда. Почему не может существовать решения с тем же началом, что в удаленной цепочке, но другим назначением где-то посередине цепочки? Ну вот смотри. Вариант 1. Цепочка замкнута в себя, потому что другого пути у неё нет, она не может прийти в другое состояние уже назначенных нами переменных. Если внутри цепочки мы где-то назначили переменную в 0 и ветвлений нет, то алгоритм обязательно расширит её до того момента, где мы предполагаем существует назначение 1 и отвергнет её. Просто перебирая все совместимые цепочки он дойдет до этого места и скажет что для этого назначения нет решений. Вариант 2. Цепочка замкнута, мы это уже обсудили. Но из неё есть ответвления в другую часть пространства решений. Если внутри цепочки мы назначили 0, то единственный способ не дойти до назначения 1 - свернуть в другую часть пространства решений. При чем именно по этой переменной, так как от назначения 1 в нашу сторону так же идёт алгоритм, который жаждет убить то другое назначение. Значит что бы он не пришел к нам со своим назначением, тот вектор так же должен в какой-то момент расщепиться по этой установленной им переменной и её значение в той области, куда он уходит, будет четко определено, иначе она совпала бы с нашей цепочкой. И тут надо заметить, что что бы алгоритм не нашел два противоречащих назначения, должен существовать обход без назначения. собственно как-то так. Я всё еще представляю себе водопроводные трубы в своей квартире, о прокладке которых я думал когда в голову пришла эта идея - они не замкнуты друг в друга, поэтому первый вариант комом вышел. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 22:37 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд так как от назначения 1 в нашу сторону так же идёт алгоритм, который жаждет убить то другое назначение. Это так в случае, если цепочка от назначения 1 плохая. А если там есть решение, то ничего оно не жаждет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 22:50 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Например, что-то похожее на касательную к окружности. Касательная - это решение, а окружность - противоречивая цепочка. Нельзя исключить окружность, не разорвав касательную, и тем самым не испортив решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 23:05 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд так как от назначения 1 в нашу сторону так же идёт алгоритм, который жаждет убить то другое назначение. Это так в случае, если цепочка от назначения 1 плохая. А если там есть решение, то ничего оно не жаждет. Если там есть решение, значит где-то есть ветвление, при чем вторая ветка промаркирована иначе чем наша, иначе алгоритм их схлопнет. В обратную сторону всё совершено так же. Смысл в том, что если ветвления нет, то алгоритм это найдёт, а если ветвление есть, значит есть обход противоречащего назначения. Если бы это был не обходной путь, то ветвления бы не было, и по нашей переменной эта ветка схлопнулась бы с той, где противоречие и алгоритм опять бы его нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 23:05 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, Я правильно понял, что ваш алгоритм умеет исключать только цепочки без ветвлений? Как он исключит две цепочки с общей частью (что-то вроде восьмерки)? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 23:26 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Что бы не говорить на пустом месте, я тут картинку быстро набросал. Кривая ну и пофиг. Вот если в abc мы назначили b = 1. Алгоритм жадный и пытается распространить назначенное нами значение на как можно большее число векторов. Он утащит его сначала в abd, затем в acd, затем в bcd и при отсутствии ветвлений в конце концов это назначение вернется обратно в abc. Теперь, допустим у нас есть ветвление, в котором переменной b мы назначаем 0. Соответственно это назначение также будет распространено вплоть до разветвления. При этом алгоритм обнаружит, что в нашей ветке оно не соответствует назначению b = 1 и назначение b = 0 будет удалено. При этом в другую сторону наш алгоритм или оставит разветвление без назначения, пока до него не распространится b=0, либо если оно уже тут - выберет другую ветку и будет распространять нашу 1 на неё. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 23:30 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, Я правильно понял, что ваш алгоритм умеет исключать только цепочки без ветвлений? Как он исключит две цепочки с общей частью (что-то вроде восьмерки)? Собственно тестовый файл Mikhail как раз такой случай - там не восьмерка даже, там 8 колец в одной точке соединяются. Старый алгоритм не умел это решать, новый сразу говорит UNSAT. При чем рядом лежит второй файл, в котором как раз два кольца оставлено - у него решение есть. https://github.com/gromas/polysat/tree/extended_vector/samples/Circular logical deadlock Хотя выше как раз про восьмерку объяснение ) Консенсус он такой, внутри общей части тоже есть назначение, и оно тоже распространяется в разные стороны. И когда к разветвлению придут две ветки с назначением b = 1 и одна с назначением b = 0, то b=0 умрёт. И еще момент - если внутри общей части назначения нет, то возможен путь через этот участок для обоих колец - оба останутся и будут вполне себе мирно сосуществовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2021, 23:33 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
За ночь сделал описание работы алгоритма и ответы на частые вопросы https://github.com/gromas/polysat/blob/main/docs/Polysat.docx ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 04:07 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 05:34 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 09:34 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Автор: Романов В.Ф. Описание: https://romvf.wordpress.com/ Реализация: https://github.com/anjlab/sat3 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 11:11 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Описание: https://arxiv.org/pdf/1011.3944.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 11:27 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Интересно. Почитаю. 10 лет и тишина - странно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 15:24 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Оказывается вот так. ((( Автор признал, что его вариант не решает проблему 3-SAT, придумал новый алгоритм, но не успел его даже опробовать и умер. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 16:56 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, пишут, что он и соавторы исправили найденную ошибку и последняя версии статьи и алгоритма ее уже не содержит ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 17:03 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, пишут, что он и соавторы исправили найденную ошибку и последняя версии статьи и алгоритма ее уже не содержит тогда вот это очень старая статья Aleksandr Sharahov Описание: https://arxiv.org/pdf/1011.3944.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 17:13 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд Aleksandr Sharahov Верблюд, пишут, что он и соавторы исправили найденную ошибку и последняя версии статьи и алгоритма ее уже не содержит тогда вот это очень старая статья Aleksandr Sharahov Описание: https://arxiv.org/pdf/1011.3944.pdf он впервые описал в 2002, потом что-то было у его студентов, а эта статья 2011 - она новее по любому, если изучать, то лучше сразу алгоритм ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 17:23 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... тогда вот это очень старая статья пропущено... он впервые описал в 2002, потом что-то было у его студентов, а эта статья 2010 - она новее Вот последняя статья. Но под неё так и не смогли сделать решатель, как я понял. Ибо автор умер и выяснить непонятности не удалось. https://arxiv.org/pdf/1309.6078.pdf А так я еще в 90-х над этой проблемой думал, но руки никак не доходили - семья, дети, кактусы... а потом и забыл совсем, года три назад вспомнил и снова начал думать. И тут бац - труба, которую при пайке закупорило... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 17:26 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, нашел на русском еще свежее: http://www.isa.ru/proceedings/images/documents/2014-64-3/t-14-3_13-24.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 17:55 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Палево когда в блокнотике <EPAM> просвечивает... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 17:59 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
mayton Палево когда в блокнотике <EPAM> просвечивает... просвечивает. лет десять назад там работал, блокнотики остались, в них пишу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 18:22 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, нашел на русском еще свежее: http://www.isa.ru/proceedings/images/documents/2014-64-3/t-14-3_13-24.pdf но показывает он ту же "ленту решений" (стр 17, 18 нумерации) что и автор топика ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 19:08 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Aleksandr Sharahov Верблюд, нашел на русском еще свежее: http://www.isa.ru/proceedings/images/documents/2014-64-3/t-14-3_13-24.pdf но показывает он ту же "ленту решений" (стр 17, 18 нумерации) что и автор топика Сочетания 3 по n давно известны, так что ничего удивительного. Но вот на 20 странице он своё решение "дорешивает". Так что видимо есть различия и существенные, в сам текст не вникал еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 19:16 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, авторПредварительный этап решения заключается в унификации S1 и S2, так как унификация по принципу действия сохраняет в структурахоперандах все существующие СВН и одновременно минимизирует упомянутые структуры по числу элементов (строк). очень тяжело его читать, лирика неуместная :-( он кажется задачу к 2-КНФ сводит (там всё доказано и решено), а как - непонятно ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 19:18 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, авторПредварительный этап решения заключается в унификации S1 и S2, так как унификация по принципу действия сохраняет в структурахоперандах все существующие СВН и одновременно минимизирует упомянутые структуры по числу элементов (строк). он кажется задачу к 2-КНФ сводит (там всё доказано и решено), а как - непонятно Надо почитать. Но вроде он параллельно показывает как 3сат и 2 сат его методом решать. Мой метод тоже умеет 2сат решать, но смысла в этом нет, 2 сат за линейное время решается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 19:25 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, я и говорю что лирики много, а самого главного нема но это у большинства так, кто пишет доки к своим работам у вас тоже так же ничего не понять ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 19:31 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 19:53 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, я и говорю что лирики много, а самого главного нема но это у большинства так, кто пишет доки к своим работам у вас тоже так же ничего не понять У меня смысл такой. Берешь ведро и синюю изоленту. Наматываешь изоленту на ведро, если буквы обоих концах изоленты сошлись, то красиво, если не сошлись - ведро выбрасывается )))) Да, чуть не забыл. Без перехлёста не все варианты подойдут ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 21:22 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, а что, так можно? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 21:36 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд, а что, так можно? )) суть примерно та же. только тут для одного решения переплетается n^3 слоёв изоленты, при этом части букв в каждом слое не должны противоречить друг другу. Я собираюсь показать, что из n^3 кусочков ленты с минимум тремя частями букв можно собрать 2^n различных вариантов так, что бы кусочки букв не противоречили друг другу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 00:57 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, а почему C(3, N) а не C(3, N) * 2^3 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 17:58 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan), В первой версии один бит отвечал за одно состояние. Поэтому 2^3 это байт ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 18:47 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, я в плане того спрашиваю, что троек то возможных не C(3,N), а в 8 раз больше (с учётом not-вариантов) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 20:31 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, я в плане того спрашиваю, что троек то возможных не C(3,N), а в 8 раз больше (с учётом not-вариантов) не понял вопроса. Сочетаний 3 по n существует (n^3-3n^2+2n)/6. Число возможных размещений из {0,1} по 3 равно 2^3. Итого максимальное число размещений {0,1} в сочетаниях из n по 3 равно 8*(n^3-3n^2+2n)/6. Если каждое размещение 2 по 3 обозначить одним битом, то для хранение их всех потребуется(n^3-3n^2+2n)/6 байт. Или уточните о чем речь. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 20:38 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, это я пытаюсь понять "Описание алгоритма решения задачи 3-КНФ", что откуда и зачем из этого текста очень сложно понять, без гугления, что 8 состояний комбинаций для каждой тройки {vi, vj, vk}, это: {vi | vj | vk}, { vi | vj | vk}, {vi | vj | vk}, ... в этом блоке осталось осилить авторВекторы, соответствующие ограничениям 3-КНФ формулы помечаются как удаленные.это какие? которые входят в формулу? зачем удалённые? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 00:10 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, если перефразировать блок "Описание алгоритма решения задачи 3-КНФ" человеческим языком, выходит следующее утверждение Любую 3-КНФ формулу из n переменных можно представить в виде вектора состоящего из 8 * C(3, N) бит теперь про то, что вы говорите далее, про операции с эти вектором Возможно ли, подставив значение N-й переменной, получить однозначное 3-КНФ уравнение из (N-1) переменных ? и если возможно, то как это сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 09:10 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, если перефразировать блок "Описание алгоритма решения задачи 3-КНФ" человеческим языком, выходит следующее утверждение Любую 3-КНФ формулу из n переменных можно представить в виде вектора состоящего из 8 * C(3, N) бит теперь про то, что вы говорите далее, про операции с эти вектором Возможно ли, подставив значение N-й переменной, получить однозначное 3-КНФ уравнение из (N-1) переменных ? и если возможно, то как это сделать Можно на n получить просто удалив все векторы, соответствующие ограничению. В исходниках смотрите, там есть функция addconstraint(x). N-1 получить можно, это надо весь набор пересобирать, такого функционала у меня нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:59 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, вот в чём и фигня (v1, v2, vn) & (v7, v16, vn) vn = 1 левый можно удалить, куда девать правый? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 19:44 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, вот в чём и фигня (v1, v2, vn) & (v7, v16, vn) vn = 1 левый можно удалить, куда девать правый? Ахаха. Да, логично. Правый никуда не девать. 2SAT выражение получается. Если vn это отрицание, то он равен 0. И из v7 v16 получаем 2SAT ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 21:18 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, но вообще я один способ придумал, можно добавить в уравнение известные переменные, минимально достаточно двух ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 21:49 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, но вообще я один способ придумал, можно добавить в уравнение известные переменные, минимально достаточно двух здорово. осталось выяснить способ чего. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 21:53 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, для начала, хотя бы иметь возможность понизить количество переменных ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 22:21 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, для начала, хотя бы иметь возможность понизить количество переменных Хороший ход. Но ты не сможешь утоптать 2^n возможных решений в n-1 переменных. Вместо сочетаний n по 3 придётся использовать сочетания n по 4, что увеличит размер хранения полученной формулы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 22:55 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, ничего особо не увеличит (кардинально во всяком случае), вместо 8*C(3,n) бит потребуется 8*C(3,n + 3) например добавим 3 переменные (t0 = 0, t1 = 0, t2 =0) - это 7 известных соотношений. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 23:45 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, фактически можно хранить в развёрнутом виде только разницу 8* [C(3,n + 3) - C(3,n)] бит, так как исходные блоки не меняются ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 00:01 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, фактически можно хранить в развёрнутом виде только разницу 8* [C(3,n + 3) - C(3,n)] бит, так как исходные блоки не меняются Немного не понял, для чего вообще хранить t0 t1 t2, если они в задачу не входят? Сохранить не проблема, достаточно в начале сказать что в задаче на 3 переменных больше. Что с ними делать дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 00:36 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, я пытаюсь понять базовые операции, которые нам доступны вполне очевидно, что понижение уровня уравнения довольно базовая вещь Собственно невозможность подставки 1 натолкнула на мысль, что можно подставить не конкретно 1 или 0, а переменную. Потом пришла мысль, что может получиться ситуация (vi, vi, vj) - что недопустимо, и я подумал, а почему бы не добавить соотношение которое однозначно задаёт переменные, количество решений это не увеличивает. Т.е. это позволяет решить конкретную проблему: понижение уровня уравнения Пойдём дальше: из операции видно, что при подстановке всегда будет меняться только часть с включением этих добавленных переменных (помним, что для добавки достаточно 8* [C(3,n + 3) - C(3,n)] бит. ), что очень хорошо. Можно не хранить исходную функцию в развёрнутом виде, а просто помечать те переменные, которые уже найдены\предположены - и это можно сделать гораздо эффективнее (нужно лишь определиться с базовыми операциями). Теперь вернёмся к тому, что говорит Aleksandr Sharahov при подстановке у нас получается дробление на 2 ветки, Aleksandr Sharahov утверждает, что возможно задать такое уравнение что при любой подстановке у вас не обнаружится коллизий и придётся опять дробить на 2. Логично, что в худшем случае вам придётся раздробиться на 2^N решений, что как бы уже относится к NP. Отсюда следует простой вывод: чтобы не было дроблений, либо их количество было минимально нужен алгоритм определяющий по какой переменной стоит дробиться. И я как бы не вижу у вас описание решения вопроса, который поднял Aleksandr Sharahov ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 09:36 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) И я как бы не вижу у вас описание решения вопроса, который поднял Aleksandr Sharahov Не понял про дробление. Что дробить? Заглянул в результат, который возвращает алгоритм. Список фиктивных переменных из него достаётся на раз. За исключением переменных входящих в логические взаимоблокировки назначений. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 12:18 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, Вот смотрите, актуализация одной из переменных в 1 или 0 даёт две функции, каждую из которых надо решать. Если допустить, что функция решаема, тут два решения: либо сразу выяснится, что 1 из них несовместима, либо в обоих случаях конфликта не будет Допустим, вы прошлись по всем переменным и попробовали произвести такую замену и оказывается, что конфликтов нет ваши действия? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 12:55 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, я вам простой пример приведу допустим есть число n = P1 * P2 - произведение двух простых если я запишу в 3-кнф функцию описывающую уравнение n mod a = 0 оно естественно будет иметь два решения 1 и P2 (я ограничу количество бит корнем из n) соответственно лишь часть P2 будет иметь нулевые биты (а может и вообще не иметь) для остальных переменных будет 1 и как вы не задавайте у вас для любой разбивки будут оба решения ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 13:20 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 14:25 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Верблюд пропущено... У нас состояния в точке стыковки двух веток согласованы в обе стороны. По крайней мере до следующего уровня ветвления дерева. Если в процессе прохода от одного уровня ветвления до следующего маска поменялась, то следующее состояние будет полностью согласовано с обеими частями ветки выше очередной точки ветвления Речь не о том, что согласовано или нет, а о том, как долго придется ходить и согласовывать. Если грубо. У нас матрешка, а у нее в самом конце может оказаться баба-яга. На вопрос, что в конце не ответишь, пока всю матрешку не разберешь. Но у нас в каждой матрешке не одна матрешка предыдущего уровня, а 100. И так на каждом уровне. Переходя на предыдущий уровень по одной ветке, мы не особенно понижаем сложность задачи. И чтобы ответить на вопрос, есть ли там хоть одна баба-яга, может потребоваться очень много проб. Да, вопрос правильный. Нужно доказательство. Есть доказательство отсутствия ложноотрицательных ответов. И есть наличие ложноположительных - тот еще оракул )))). Так что не работает это в том виде, который я описал. Но пока никто не доказал что способа не существует, буду дальше ковырять )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 08:50 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, вот кстати задавать значение переменным сложнее, чем выставлять равенство\неравенство переменных т.е., если функция содержит два включения (vi, vj, p1) и (vi, vj, p2) и если при задании p1=p2 или p1 = not p2 выявится конфликт, то мы выразим одну переменную через другую так же по аналогии с алгоритмом Карацубы для (vi, pa, pb) и (vi, pc, pd) разрешение конфликтов подобным образом может дать 3 ветвления за 2 замены, а не 4 В литературе ещё есть разбиения функции на две независимых функции, у вас этот вопрос как-то вообще упущен. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 14:40 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, ещё такая мысль: если алгоритм будет доказанно "стопориться" только при наличии нетривиальных решений, то такой алгоритм уже приобретёт ценность ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 14:51 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Верблюд, ещё такая мысль: если алгоритм будет доказанно "стопориться" только при наличии нетривиальных решений, то такой алгоритм уже приобретёт ценность Я вроде нашел способ определить фиктивность всех переменных в результатах работы алгоритма за n^2 времени. Используя тот факт, что не бывает ложноотрицательных ответов. Вроде должен работать. Сижу думаю как это в программу воплотить, придётся isdeleted переделывать на метку времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 19:18 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд kealon(Ruslan) Верблюд, ещё такая мысль: если алгоритм будет доказанно "стопориться" только при наличии нетривиальных решений, то такой алгоритм уже приобретёт ценность Я вроде нашел способ определить фиктивность всех переменных в результатах работы алгоритма за n^2 времени. Используя тот факт, что не бывает ложноотрицательных ответов. Вроде должен работать. Сижу думаю как это в программу воплотить, придётся isdeleted переделывать на метку времени. Решение найдено. Описание тут: ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 22:09 |
|
Решение NP-сложных задач за полиномиальное время
|
|||
---|---|---|---|
#18+
Верблюд, опять в том же ракурсе, сложно понять это, и доказательности мало, речь вообще очень тяжело воспринимается хотя какая-то аналогия идёт с заменой переменных для перевода в 2-КНФ ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 09:20 |
|
|
start [/forum/topic.php?all=1&fid=16&tid=1339616]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
123ms |
get tp. blocked users: |
1ms |
others: | 238ms |
total: | 439ms |
0 / 0 |