|
Решение 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 |
|
|
start [/forum/topic.php?fid=16&fpage=1&tid=1339616]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 411ms |
0 / 0 |