powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Решение NP-сложных задач за полиномиальное время
136 сообщений из 136, показаны все 6 страниц
Решение NP-сложных задач за полиномиальное время
    #40102572
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно сабж.

исходники на гитхабе: https://github.com/gromas/polysat
видео на ютубе:
YouTube Video
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102582
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

непонятно что он под асимптотикой понимает
асимптотика будет от размера числа или от количества битов
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102618
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

на видео несколько оговорок, надо "сочетания из N по 3" вместо "сочетания из 3 по N"
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102623
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

на слайде забыл поделить на 6

С(3, N) = N! / ((N-3)! 3!) = N * (N-1) * (N-2) / 6
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102649
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

Непонятно, откуда следует, что после первичного устранения конфликтов "решение существует всегда".
Ведь после назначения значений неконфликтующим переменным мы снова получаем задачу, которую надо решать.
А если там будет кофликт, то придется делать новые назначения и т.д.
Т.е. задача будет оставаться нерешенной все время, пока мы будем получать конфликты при назначениях.
И в худшем случае нам придется сделать все возможные назначения.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102655
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
Верблюд,

непонятно что он под асимптотикой понимает
асимптотика будет от размера числа или от количества битов


В данном случае это одно и тоже: N булевских переменных = N бит
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102657
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

а проект смотрели?
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102660
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
Aleksandr Sharahov,

а проект смотрели?


нет, не смотрел,
судя по видео, он не доделан до конца
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102728
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
kealon(Ruslan)
Aleksandr Sharahov,

а проект смотрели?


нет, не смотрел,
судя по видео, он не доделан до конца


Не доделан до all-3-sat. Просто 3-sat он решает.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102733
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд,

на видео несколько оговорок, надо "сочетания из N по 3" вместо "сочетания из 3 по N"



Спасибо. От волнения это.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102738
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд,

Непонятно, откуда следует, что после первичного устранения конфликтов "решение существует всегда".
Ведь после назначения значений неконфликтующим переменным мы снова получаем задачу, которую надо решать.
А если там будет кофликт, то придется делать новые назначения и т.д.
Т.е. задача будет оставаться нерешенной все время, пока мы будем получать конфликты при назначениях.
И в худшем случае нам придется сделать все возможные назначения.


У нас состояния в точке стыковки двух веток согласованы в обе стороны. По крайней мере до следующего уровня ветвления дерева. Если в процессе прохода от одного уровня ветвления до следующего маска поменялась, то следующее состояние будет полностью согласовано с обеими частями ветки выше очередной точки ветвления
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102749
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
Верблюд,

Непонятно, откуда следует, что после первичного устранения конфликтов "решение существует всегда".
Ведь после назначения значений неконфликтующим переменным мы снова получаем задачу, которую надо решать.
А если там будет кофликт, то придется делать новые назначения и т.д.
Т.е. задача будет оставаться нерешенной все время, пока мы будем получать конфликты при назначениях.
И в худшем случае нам придется сделать все возможные назначения.


У нас состояния в точке стыковки двух веток согласованы в обе стороны. По крайней мере до следующего уровня ветвления дерева. Если в процессе прохода от одного уровня ветвления до следующего маска поменялась, то следующее состояние будет полностью согласовано с обеими частями ветки выше очередной точки ветвления


Речь не о том, что согласовано или нет, а о том, как долго придется ходить и согласовывать.

Если грубо.
У нас матрешка, а у нее в самом конце может оказаться баба-яга.
На вопрос, что в конце не ответишь, пока всю матрешку не разберешь.
Но у нас в каждой матрешке не одна матрешка предыдущего уровня, а 100. И так на каждом уровне.
Переходя на предыдущий уровень по одной ветке, мы не особенно понижаем сложность задачи.
И чтобы ответить на вопрос, есть ли там хоть одна баба-яга, может потребоваться очень много проб.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102760
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


У нас состояния в точке стыковки двух веток согласованы в обе стороны. По крайней мере до следующего уровня ветвления дерева. Если в процессе прохода от одного уровня ветвления до следующего маска поменялась, то следующее состояние будет полностью согласовано с обеими частями ветки выше очередной точки ветвления


Речь не о том, что согласовано или нет, а о том, как долго придется ходить и согласовывать.

Если грубо.
У нас матрешка, а у нее в самом конце может оказаться баба-яга.
На вопрос, что в конце не ответишь, пока всю матрешку не разберешь.
Но у нас в каждой матрешке не одна матрешка предыдущего уровня, а 100. И так на каждом уровне.
Переходя на предыдущий уровень по одной ветке, мы не особенно понижаем сложность задачи.
И чтобы ответить на вопрос, есть ли там хоть одна баба-яга, может потребоваться очень много проб.


Объясню. Вот ты взял одно состояние и построил по нему часть решения. Неразрешенные биты соответствуют той части пространства решений, которое мы выберем при разветвлении. При этом в каждой итерации по новому состоянию заполнится как минимум один бит маски. То есть общее число итераций не может превышать n*n^3. При этом если учесть, что для построения следующего бита нам нужны только те состояния, в которых один бит соответствует текущему набору переменных и один не соответствует, то ходить мы будем не n*n^3, а n*n^2 максимум. Ну и для выгрузки всех возможных решений нам надо просто хранить маску до последнего ветвления и после получения одного решения, продолжать с того места, где было предыдущее ветвление
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102763
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

а если взять какую-то более понятную и практическую задачу как объяснение?

я правильно понимаю, что в самом начале составляются все комбинации булевых троек? O(N^3)
а вот на чём дальше получаются отсечки, непонятно
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102771
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
пропущено...


нет, не смотрел,
судя по видео, он не доделан до конца


Не доделан до all-3-sat. Просто 3-sat он решает.


Нужно решить за полиномиальное время.

Насколько я понял, у вас в цикле делается:
1) отбросить противоречивые тройки за полиномиальное время
2) если найдено 1 решение - выход положительный
3) если на данном уровне проверены все вложенные ветки - возврат к предыдущему состоянию
4) если возможно, рекурсивно сформировать новую ветку, назначив значение для Xi,Xj 1<=i,j<=n, и перейти к шагу 1
5) если невозможно сформировать новую ветку - выход отрицательный

Откуда следует, что алгоритм работает полиномиальное время, если рекурсия никуда не делась?
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102772
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
Верблюд,

а если взять какую-то более понятную и практическую задачу как объяснение?

я правильно понимаю, что в самом начале составляются все комбинации булевых троек? O(N^3)
а вот на чём дальше получаются отсечки, непонятно


1. Сначала создается массив комбинаций троек по N
2. Затем накатывается КНФ, состояния, которые описаны в КНФ удаляются (обнуляются биты)
3. Затем идет цикл по каждому биту, представляющему собой некоторое состояние трёх переменных и для него делается расчет решения, то есть проверяется, что ни одно другое состояние из одного или двух битов не противоречит ему. Если получаем противоречие - сбрасываем конфликтный бит и смотрим следующие. Цикл заканчивается, если больше нет состояний в одном сочетании (байт равен 0) или если в предыдущей итерации не было удалено ни одного состояния.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102773
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Не доделан до all-3-sat. Просто 3-sat он решает.


Нужно решить за полиномиальное время.

Насколько я понял, у вас в цикле делается:
1) отбросить противоречивые тройки за полиномиальное время
2) если найдено 1 решение - выход положительный
3) если на данном уровне проверены все вложенные ветки - возврат к предыдущему состоянию
4) если возможно, рекурсивно сформировать новую ветку, назначив значение для Xi, 1<=i<=n, и перейти к шагу 1
5) если невозможно сформировать новую ветку - выход отрицательный

Откуда следует, что алгоритм работает полиномиальное время, если рекурсия никуда не делась?


выше написал. там нет рекурсии
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102776
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
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 там не знаю на какой случай, надо видимо специально такой придумывать.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102796
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролики не смотрю.
Для начала неплохо увидеть, относится ли название темы к каждой NP-сложной или только к некоторым?
Если к некоторым, имеется ли возможность из постановки задачи сделать вывод о подпадании задачи под тему топика?
Надеюсь, что задача на 1лимон$ подпадает?
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102801
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
Ролики не смотрю.
Для начала неплохо увидеть, относится ли название темы к каждой NP-сложной или только к некоторым?
Если к некоторым, имеется ли возможность из постановки задачи сделать вывод о подпадании задачи под тему топика?
Надеюсь, что задача на 1лимон$ подпадает?


попадает. прорешано уже несколько десятков тысяч различных cnf из интернетов, решены все. на миллион не рассчитываю - пусть в зад себе запихают, бюрократы сраные
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102809
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

тынц
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102867
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Верблюд
пропущено...


выше написал. там нет рекурсии


1. расчет совместимости состояния: за одну итерацию по маске у нас получается или меняется как минимум один бит в маске, или мы получаем противоречие. максимум итераций n - маска размером n. если противоречий и изменений в маске нет, выходим.
2. расчет происходит по всем состояниям: за одну итерацию мы или удаляем хотя бы одно состояние или выходим с сообщением SAT.
Тут нет никаких рекурсий. п.1 выполняется максимум за n^4, п.2 - максимум n^6. один вложен в другой, суммарное время n^10. Но учитывая мою статистику по нескольким десяткам тысяч различных CNF цикл из п.2 завершается уже на 4-5 итерации, n^3 там не знаю на какой случай, надо видимо специально такой придумывать.


Мне не ясен переход на следующий шаг алгоритма, после того как обнаружили, что очередная итерация ничего не меняет.
Также неясно, почему не потребуется откат: ведь мы можем не угадать значение переменной и узнать об этом не сразу.
Хорошо бы увидеть все на примере N=6..8 переменных.
А еще лучше строгое доказательство, со всеми определениями (что есть состояние, что есть маска, как и когда они меняются).
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102872
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

Да, я понял. Строгое доказательство будет. Начал писать функцию, возвращающую все возможные результаты решения и похоже всё оно так и есть как я говорил, последовательно переключая состояния дерева мы за n^3 итераций точно приходим к следующему решению. То есть массив, оставшийся после алгоритма голосования содержит не просто все неконфликтующие друг с другом состояния, он содержит суперпозицию всех возможных решений и ни одного который не подходит под наш КНФ.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102874
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov

Мне не ясен переход на следующий шаг алгоритма, после того как обнаружили, что очередная итерация ничего не меняет.
Также неясно, почему не потребуется откат: ведь мы можем не угадать значение переменной и узнать об этом не сразу.

А мы и не пытаемся угадывать значение переменной. Если для какой-то переменной не существует однозначного назначения, мы оставляем её в суперпозиции состояний. Из этого как раз и следует тот факт, что если на очередной итерации маска не изменилась, мы просто заканчиваем работу и говорим, что состояние согласовано.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102876
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov

Мне не ясен переход на следующий шаг алгоритма, после того как обнаружили, что очередная итерация ничего не меняет.
Также неясно, почему не потребуется откат: ведь мы можем не угадать значение переменной и узнать об этом не сразу.

А мы и не пытаемся угадывать значение переменной. Если для какой-то переменной не существует однозначного назначения, мы оставляем её в суперпозиции состояний. Из этого как раз и следует тот факт, что если на очередной итерации маска не изменилась, мы просто заканчиваем работу и говорим, что состояние согласовано.


Определение согласованности тоже хочется увидеть. В самом начале работы состояние согласовано?

Вот, допустим, определили несколько переменных, а все остальные не можем назначить, что тогда делаем?
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102877
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov


Определение согласованности тоже хочется увидеть. В самом начале работы состояние согласовано?




В самом начале это когда? До применения КНФ существуют все возможные решения, они согласованы и равны 1. И да, и их 2^n )). После применения КНФ часть состояний становится несовместима друг с другом. Для согласования применяется алгоритм консенсуса с удалением участников (конфликтующих состояний). После работы алгоритма все состояния опять согласованы и их набор содержит суперпозицию всех возможных решений.

Aleksandr Sharahov
Вот, допустим, определили несколько переменных, а все остальные не можем назначить, что тогда делаем?


Александр, вы видео смотрели? Там подробно рассмотрены все варианты действий. И в презентации pptx на гитхабе.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102878
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov


Определение согласованности тоже хочется увидеть. В самом начале работы состояние согласовано?




В самом начале это когда? До применения КНФ существуют все возможные решения, они согласованы и равны 1. И да, и их 2^n )). После применения КНФ часть состояний становится несовместима друг с другом. Для согласования применяется алгоритм консенсуса с удалением участников (конфликтующих состояний). После работы алгоритма все состояния опять согласованы и их набор содержит суперпозицию всех возможных решений.

Aleksandr Sharahov
Вот, допустим, определили несколько переменных, а все остальные не можем назначить, что тогда делаем?


Александр, вы видео смотрели? Там подробно рассмотрены все варианты действий. И в презентации pptx на гитхабе.


Смотрел.
Проблема в отсутствии четких определений, которые я пытаюсь нащупать.

> После работы алгоритма все состояния опять согласованы и их набор содержит суперпозицию всех возможных решений.
По идее после работы алгоритма нам нужно другое, ответ: да или нет.

Неясно, какова сложность вычисления единственного решения или доказательства, что его нет, по этой суперпозиции.

Кстати, вы решали КНФ и с положительными, и с отрицательными ответами? или только положительные?
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102900
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov


Кстати, вы решали КНФ и с положительными, и с отрицательными ответами? или только положительные?


Я решал примеры, которые есть в папке /samples
Там и положительные и отрицательные и с разным числом переменных. Больше тысячи штук.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102903
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov


Кстати, вы решали КНФ и с положительными, и с отрицательными ответами? или только положительные?


Я решал примеры, которые есть в папке /samples
Там и положительные и отрицательные и с разным числом переменных. Больше тысячи штук.


Насколько я теперь понимаю, ваш алгоритм сокращает множество возможных решений,
но не дает окончательный ответ на вопрос существования решения.

Как вы получали окончательный ответ:
1) Использовали перебор всех комбинаций значений переменных из суперпозиции, выданной вашим алгоритмом?
2) Назначали значения неопределенных переменных и рекурсивно применяли ваш алгоритм?
3) Как-то по-другому?
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102905
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov


Как вы получали окончательный ответ:
1) Использовали перебор всех комбинаций значений переменных из суперпозиции, выданной вашим алгоритмом?
2) Назначали значения неопределенных переменных и рекурсивно применяли ваш алгоритм?
3) Как-то по-другому?


Выяснил один неприятный момент. Если мы хотим получить решение для какой-то ветки, то просто пройтись по ней и выбрать не получится. Хотя на некоторых примерах работает. После каждого выбора необходимо схлопнуть суперпозицию, удалив НЕВЫБРАННЫЕ состояния и запустив алгоритм консенсуса еще раз. Естественно, если хочется потом получить еще одно решения, потребуется скопировать оригинальный массив.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102907
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov


Как вы получали окончательный ответ:
1) Использовали перебор всех комбинаций значений переменных из суперпозиции, выданной вашим алгоритмом?
2) Назначали значения неопределенных переменных и рекурсивно применяли ваш алгоритм?
3) Как-то по-другому?


Выяснил один неприятный момент. Если мы хотим получить решение для какой-то ветки, то просто пройтись по ней и выбрать не получится. Хотя на некоторых примерах работает. После каждого выбора необходимо схлопнуть суперпозицию, удалив НЕВЫБРАННЫЕ состояния и запустив алгоритм консенсуса еще раз. Естественно, если хочется потом получить еще одно решения, потребуется скопировать оригинальный массив.


Т.е. вы для КАЖДОГО назначения используете рекурсивный вариант (2).
Отсюда следует, что оценка сложности не верна.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102926
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Выяснил один неприятный момент. Если мы хотим получить решение для какой-то ветки, то просто пройтись по ней и выбрать не получится. Хотя на некоторых примерах работает. После каждого выбора необходимо схлопнуть суперпозицию, удалив НЕВЫБРАННЫЕ состояния и запустив алгоритм консенсуса еще раз. Естественно, если хочется потом получить еще одно решения, потребуется скопировать оригинальный массив.


Т.е. вы для КАЖДОГО назначения используете рекурсивный вариант (2).
Отсюда следует, что оценка сложности не верна.


Нет там рекурсии. От слова совсем. Набор неизвестных битов конечен и не превышает число переменных. То есть максимум оценка может оказаться выше в n раз. Но уже нашли другую проблему, более серьёзную. Замыкание цепочек назначений через отрицание группы состояний. В результате получаем SAT вместо UNSAT. Вот тут да, придется в результате вычисления эти циклы искать отдельным алгоритмом. Надеюсь что решится и очень странно что среди найденных в интернете нескольких десятков тысяч тестов ни одного с таким циклом не попалось.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40102951
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
пропущено...


Т.е. вы для КАЖДОГО назначения используете рекурсивный вариант (2).
Отсюда следует, что оценка сложности не верна.


Нет там рекурсии. От слова совсем. Набор неизвестных битов конечен и не превышает число переменных. То есть максимум оценка может оказаться выше в n раз. Но уже нашли другую проблему, более серьёзную. Замыкание цепочек назначений через отрицание группы состояний. В результате получаем SAT вместо UNSAT. Вот тут да, придется в результате вычисления эти циклы искать отдельным алгоритмом. Надеюсь что решится и очень странно что среди найденных в интернете нескольких десятков тысяч тестов ни одного с таким циклом не попалось.


Есть там рекурсия.

Вы не решаете 3-SAT.

Вместо этого вы "упрощаете" проблему за полиномиальное время, а потом окончательно решаете ПЕРЕБОРОМ.
Вот в этом переборе и скрыта рекурсия, которую вы не хотите признать, т.к. на ваших примерах перебор тривиален.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103003
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Нет там рекурсии. От слова совсем. Набор неизвестных битов конечен и не превышает число переменных. То есть максимум оценка может оказаться выше в n раз. Но уже нашли другую проблему, более серьёзную. Замыкание цепочек назначений через отрицание группы состояний. В результате получаем SAT вместо UNSAT. Вот тут да, придется в результате вычисления эти циклы искать отдельным алгоритмом. Надеюсь что решится и очень странно что среди найденных в интернете нескольких десятков тысяч тестов ни одного с таким циклом не попалось.


Есть там рекурсия.

Вы не решаете 3-SAT.

Вместо этого вы "упрощаете" проблему за полиномиальное время, а потом окончательно решаете ПЕРЕБОРОМ.
Вот в этом переборе и скрыта рекурсия, которую вы не хотите признать, т.к. на ваших примерах перебор тривиален.


Перебором я выбираю решения, а не создаю их и не решаю. Стоимость - разница между 3-SAT и ALL-3-SAT.
Вы не сможете выбрать все 2^n степени решений за время меньшее количества этих решений. Построить можете, выбрать нет. Думаю разница вполне должна быть понятна. Алгоритм строит все решения. Результат работы - информация об их наличии или отсутствии. Выбор всех решений вопрос отдельный, к задаче выполнимости не имеющий ни какого отношения.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103008
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

По существу, вы реализовали улучшенный перебор.
От этого задача не стала полиномиальной.
Еще раз, вы не решили 3-SAT за полиномиальное время

Но для небольших N и несложных КНФ задача, безусловно, упростилась.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103015
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

Обратите внимание на то, что вы подменяете задачу:
вместо ответа на вопрос существует ли решение КНФ(x1,x2...xN)=true,
вы находите множество значений переменных, в котором ВОЗМОЖНО есть решение.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103018
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд,

Обратите внимание на то, что вы подменяете задачу:
вместо ответа на вопрос существует ли решение КНФ(x1,x2...xN)=true,
вы находите множество значений переменных, в котором ВОЗМОЖНО есть решение.


Не ВОЗМОЖНО. А есть. При чем только они. С циклами, которые алгоритм не обнаруживает в силу локальности я проблему решу. Перебиралку решений вчера вечером делал и она выбирала решения однозначно и ничего лишнего, ни каких бэктрекингов и прочих проблем решателей класса 2^n
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103019
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя наверное соглашусь, пока нет формального доказательства это всего лишь гипотезы.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103022
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

Именно ВОЗМОЖНО.
У вас же для отрицательных примеров множество не всегда будет пустым.
Если докажете, что для них множество всегда пусто, - вот тогда дело сделано, задача решена.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103024
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд,

Именно ВОЗМОЖНО.
У вас же для отрицательных примеров множество не всегда будет пустым.
Если докажете, что для них множество всегда пусто, - вот тогда дело сделано, задача решена.


Именно это я пытаюсь сделать. Вчера пытался. Пока мне не подкинули пример с циклом, для которого алгоритм как раз пустые пропускает. Из других проверенных тестовых примеров неправильных решений не получалось выбрать, как я не старался. Понять и осознать сложно почему так, хотя я как раз представлял именно такой вариант решения, когда дошел до алгоритма. Но вот доказать что так всегда... Один пример уже есть, что это может быть не так, но там проблема понятна почему.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103028
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
Верблюд,

Именно ВОЗМОЖНО.
У вас же для отрицательных примеров множество не всегда будет пустым.
Если докажете, что для них множество всегда пусто, - вот тогда дело сделано, задача решена.


Именно это я пытаюсь сделать. Вчера пытался. Пока мне не подкинули пример с циклом, для которого алгоритм как раз пустые пропускает. Из других проверенных тестовых примеров неправильных решений не получалось выбрать, как я не старался. Понять и осознать сложно почему так. А доказать...


В таком случае имеет смысл оценить сложность рекурсивного алгоритма с назначениями.
Может, найдете способ делать удачные назначения, а потом вашим алгоритмом сокращать множество возможных решений.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103031
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Именно это я пытаюсь сделать. Вчера пытался. Пока мне не подкинули пример с циклом, для которого алгоритм как раз пустые пропускает. Из других проверенных тестовых примеров неправильных решений не получалось выбрать, как я не старался. Понять и осознать сложно почему так. А доказать...


В таком случае имеет смысл оценить сложность рекурсивного алгоритма с назначениями.
Может, найдете способ делать удачные назначения, а потом вашим алгоритмом сокращать множество возможных решений.


Удачные назначения как раз и остаются после работы алгоритма. И только удачные, и других нет. Не учитывая логической проблемы с циклами с отрицанием друг друга (два невыполнимых состояния рекурсивно отрицают друг друга, получается логическая проблема, которую мой алгоритм не умеет находить).
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103036
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
пропущено...


В таком случае имеет смысл оценить сложность рекурсивного алгоритма с назначениями.
Может, найдете способ делать удачные назначения, а потом вашим алгоритмом сокращать множество возможных решений.


Удачные назначения как раз и остаются после работы алгоритма. И только удачные, и других нет. Не учитывая логической проблемы с циклами с отрицанием друг друга (два невыполнимых состояния рекурсивно отрицают друг друга, получается логическая проблема, которую мой алгоритм не умеет находить).


Значит, и надо переменным из этих состояний сделать назначения, чтобы потом отсечь их и оставить только то, что надо.
Разорвете цикл взаимозависимости, циклов конечное число.
Важно найти и порвать все циклы без рекурсии.

Можно попробовать классифицировать циклы на "хорошие" и "плохие".
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103046
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Удачные назначения как раз и остаются после работы алгоритма. И только удачные, и других нет. Не учитывая логической проблемы с циклами с отрицанием друг друга (два невыполнимых состояния рекурсивно отрицают друг друга, получается логическая проблема, которую мой алгоритм не умеет находить).


Значит, и надо переменным из этих состояний сделать назначения, чтобы потом отсечь их и оставить только то, что надо.
Разорвете цикл взаимозависимости, циклов конечное число.
Важно найти и порвать все циклы без рекурсии.

Можно попробовать классифицировать циклы на "хорошие" и "плохие".


Да, по решениям думаю пока составлять матрицу инцидентности и её исследовать. Может еще какие проблемы найдутся.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103047
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд, покажите здесь графики с говорящей ассимптотикой прогонов? С этого надо начинать.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103056
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно вместо 30 минутного видео приложить описание метода?
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103141
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Хотя наверное соглашусь, пока нет формального доказательства это всего лишь гипотезы.
Вы ещё подумайте, надо ли оно вам
для интереса, попробуйте прикинуть сколько вы проживёте после такого открытия
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103225
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
Верблюд, покажите здесь графики с говорящей ассимптотикой прогонов? С этого надо начинать.


20 переменных решение находит в среднем 6 секунд на моем ноуте
50 переменных отсутствие решения находит в среднем за 20 секунд
50 переменных существование решения находит примерно за 12 минут. Мой старенький ноут неспособен перебрать 10^15 вариантов, что бы найти решение наверное даже за месяц ))) это если кто-то будет утверждать, что тут есть экспоненциальная сложность. Хотя n^10 это уже слишком много.

Ну и собственно само наблюдение не нужно. Есть же исходники на гитхабе, там текста на две страницы всего. Проверить, что бесконечных циклов нет проблемы не должно быть.

https://github.com/gromas/polysat
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103232
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

Даже миллион успешных решений для небольших N говорит лишь о том,
что вы, возможно, на правильном пути.
Например, срезали у экспоненты M степеней.
Это здорово, но этого мало.

На мой взгляд, имеет смысл сосредоточиться на генерировании функций
с отрицательным результатом для больших N
и поиске вариантов решения для них.
И хотя более менее ясно, что мешает быстро давать отрицательный ответ,
именно это не дает решить проблему в целом.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103276
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд,

Даже миллион успешных решений для небольших N говорит лишь о том,
что вы, возможно, на правильном пути.
Например, срезали у экспоненты M степеней.
Это здорово, но этого мало.

На мой взгляд, имеет смысл сосредоточиться на генерировании функций
с отрицательным результатом для больших N
и поиске вариантов решения для них.
И хотя более менее ясно, что мешает быстро давать отрицательный ответ,
именно это не дает решить проблему в целом.


Отрицательный ответ алгоритм наоборот даёт очень быстро, так как с каждым шагом пространство возможных решений резко уменьшается в размере. Долго считается как раз вариант если решения есть.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103277
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov


Даже миллион успешных решений для небольших N говорит лишь о том,
что вы, возможно, на правильном пути.
Например, срезали у экспоненты M степеней.
Это здорово, но этого мало.


Мы видимо так и будем тут говорить о разном ) Нет там экспоненты вообще. Откройте уже исходный код и убедитесь. Две страницы текста всего.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103282
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov


Даже миллион успешных решений для небольших N говорит лишь о том,
что вы, возможно, на правильном пути.
Например, срезали у экспоненты M степеней.
Это здорово, но этого мало.


Мы видимо так и будем тут говорить о разном ) Нет там экспоненты вообще. Откройте уже исходный код и убедитесь. Две страницы текста всего.


Открыл. Убедился.
Вы гарантируете, что при любом N единственный вызов функции IsSatisfable
дает окончательный ответ и не придется ничего "дорешивать" и перепроверять?
Если ответ "да", то поздравляю.
Если ответ "в редких случаях надо еще...", то сами понимаете.

Интересуют ложноположительные срабатывания.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103287
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

Я правильно понимаю, что на всех примерах и каталога samples
нет ложноположительных срабатываний?

Еще стоит присмотреться к тому примеру, о котором вы писали,
что не все назначения из допустимой с точки зрения решателя суперпозиции
давали положительный результат.
Можно попробовать добавить в этот пример несколько условий
с целью отсечь назначения, дающие положительный результат,
и оставить только ложноположительный.
Можно попробовать сделать это не прямо, а при помощи
произведения с симметричной КНФ (с перенумерованными переменными).
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103295
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
20 переменных
50 переменных
если кто-то будет утверждать, что тут есть экспоненциальная сложность.
Есть же исходники на гитхабе, там текста на две страницы всего. Проверить, что бесконечных циклов нет, проблемы не должно быть.
Клянусь мамой?
Покажите графики с ассимптотикой здесь.
Там 2 страницы, а здесь уже 3-я стр., а тех двух здесь всё ещё нет.
Что означает "проверить"? бесконечные циклы - вопрос на стороне программиста, при чём здесь беск. циклы?
Экспоненциальной может и не быть для некоторого подмножества данных.

У Usov'а тоже старый ноут, и ничего, долго - на ночь можно. Графики убеждают лучше, чем ля-ля.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103305
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Мы видимо так и будем тут говорить о разном ) Нет там экспоненты вообще. Откройте уже исходный код и убедитесь. Две страницы текста всего.


Открыл. Убедился.
Вы гарантируете, что при любом N единственный вызов функции IsSatisfable
дает окончательный ответ и не придется ничего "дорешивать" и перепроверять?
Если ответ "да", то поздравляю.
Если ответ "в редких случаях надо еще...", то сами понимаете.

Интересуют ложноположительные срабатывания.


Дорешивать придется. Есть пример, на котором алгоритм всегда выдает ложноположительный ответ. Особый случай КНФ, в котором алгоритм не может разрешить две или более невыполнимых циклических зависимости, взаимоотрицающих друг друга. В разделе samples лежит файл Mikhail_unsat.cnf , содержащий восемь таких циклов. Как найти и разрешить такие зависимости я вполне представляю и сейчас занимаюсь алгоритмом этой проблемы. Других вариантов ложноположительных ответов не существует. Уже написана большая часть формального доказательства работы алгоритма, в котором подробно рассматривается это исключение. Так же есть доказательство того, что невозможно получить ложноотрицательное решение.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103306
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98

Там 2 страницы, а здесь уже 3-я стр., а тех двух здесь всё ещё нет.


Вы серьезно? Может мне сюда проект весь выложить в отдельную тему специально для тех, кто не увидел тут ссылки на проект github? Думаю модераторы будут очень рады такому.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103307
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
пропущено...


Открыл. Убедился.
Вы гарантируете, что при любом N единственный вызов функции IsSatisfable
дает окончательный ответ и не придется ничего "дорешивать" и перепроверять?
Если ответ "да", то поздравляю.
Если ответ "в редких случаях надо еще...", то сами понимаете.

Интересуют ложноположительные срабатывания.


Дорешивать придется. Есть пример, на котором алгоритм всегда выдает ложноположительный ответ. Особый случай КНФ, в котором алгоритм не может разрешить две или более невыполнимых циклических зависимости, взаимоотрицающих друг друга. В разделе samples лежит файл Mikhail_unsat.cnt, содержащий восемь таких циклов. Как найти и разрешить такие зависимости я вполне представляю и сейчас занимаюсь алгоритмом этой проблемы. Других вариантов ложноположительных ответов не существует. Уже написана большая часть формального доказательства работы алгоритма, в котором подробно рассматривается это исключение.


Дорешивание - это и есть экспонента.

> Других вариантов ложноположительных ответов не существует
Откуда вы это знаете. Может, просто другие варианты вам не попадались.
В общем, это надо доказать, или дорешивать придется всегда.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103309
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
это надо доказать, или дорешивать придется всегда.


Согласен. После моего алгоритма в случае положительного ответа придется запускать алгоритм или получения всех ответов - он экспоненциальный, так как решение может содержать все 2 n возможных решений, но может быть выгоден, если количество оставшихся "в живых" состояний крайне мало и соответственно решений тоже очень мало, или алгоритм с построением направленного графа таких зависимостей, он неприятный, требует дополнительно N 6 памяти и работает соответственно не меньше чем за N 6 времени, хотя на фоне общего времени получения решения N 10 его стоимость мала.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103316
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
это надо доказать, или дорешивать придется всегда.


Согласен. После моего алгоритма в случае положительного ответа придется запускать алгоритм или получения всех ответов - он экспоненциальный, так как решение может содержать все 2 n возможных решений, но может быть выгоден, если количество оставшихся "в живых" состояний крайне мало и соответственно решений тоже очень мало, или алгоритм с построением направленного графа таких зависимостей, он неприятный, требует дополнительно N 6 памяти и работает соответственно не меньше чем за N 6 времени, хотя на фоне общего времени получения решения N 10 его стоимость мала.


N^6 по памяти - это проблема.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103317
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

Есть пока только гипотеза, что исследовать нужно не только пространство возможных решений, но и пространство нулей - тех состояний которые были выкинуты на этапе работы алгоритма консенсуса. Если среди них есть циклические зависимости, то вероятно они являются отражением наших циклов на область нулей. Плюс такого подхода в том, что при ложноположительном результате в области нулей практически отсутствуют состояния, что значительно сокращает пространство поиска такой зависимости. Например со случаем файла mikhail_unsat в пространство нулей кроме самой КНФ вобще ничего не попадает.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103327
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov,

Есть пока только гипотеза, что исследовать нужно не только пространство возможных решений, но и пространство нулей - тех состояний которые были выкинуты на этапе работы алгоритма консенсуса. Если среди них есть циклические зависимости, то вероятно они являются отражением наших циклов на область нулей. Плюс такого подхода в том, что при ложноположительном результате в области нулей практически отсутствуют состояния, что значительно сокращает пространство поиска такой зависимости. Например со случаем файла mikhail_unsat в пространство нулей кроме самой КНФ вобще ничего не попадает.



Что мешает домножить файл mikhail_unsat на КНФ с сотней других переменных, которая имеет решение и кучу нулей.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103329
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
Aleksandr Sharahov,

Есть пока только гипотеза, что исследовать нужно не только пространство возможных решений, но и пространство нулей - тех состояний которые были выкинуты на этапе работы алгоритма консенсуса. Если среди них есть циклические зависимости, то вероятно они являются отражением наших циклов на область нулей. Плюс такого подхода в том, что при ложноположительном результате в области нулей практически отсутствуют состояния, что значительно сокращает пространство поиска такой зависимости. Например со случаем файла mikhail_unsat в пространство нулей кроме самой КНФ вобще ничего не попадает.



Что мешает домножить файл mikhail_unsat на КНФ с сотней других переменных, которая имеет решение и кучу нулей.


Вообще в конце можно попытаться построить хотя бы одно решение, тогда получим конкретный вектор, указывающий на конфликт, рассматриваем этот вектор и убиваем конфликт. Проблема может быть в том, что число таких конфликтов конечно конечно, но я не готов сейчас назвать даже порядок ) Проблема еще и в том, что на данный момент я даже не знаю, влияет ли такой конфликт на всё решение сразу или только на часть возможных решений. Если он влияет только на часть возможных решений, то способ с построением конкретного решения может стать экспоненциальным. Например, имеется одно решение и 2^n -1 конфликтующих.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103331
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
пропущено...



Что мешает домножить файл mikhail_unsat на КНФ с сотней других переменных, которая имеет решение и кучу нулей.


Вообще в конце можно попытаться построить хотя бы одно решение, тогда получим конкретный вектор, указывающий на конфликт, рассматриваем этот вектор и убиваем конфликт. Проблема может быть в том, что число таких конфликтов конечно конечно, но я не готов сейчас назвать даже порядок ) Проблема еще и в том, что на данный момент я даже не знаю, влияет ли такой конфликт на всё решение сразу или только на часть возможных решений. Если он влияет только на часть возможных решений, то способ с построением конкретного решения может стать экспоненциальным. Например, имеется одно решение и 2^n -1 конфликтующих.


Решатели так и делают.
Расщепляют по наиболее популярной переменной и упрощают.
Тут сразу рекурсия вырисовывается.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103333
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Вообще в конце можно попытаться построить хотя бы одно решение, тогда получим конкретный вектор, указывающий на конфликт, рассматриваем этот вектор и убиваем конфликт. Проблема может быть в том, что число таких конфликтов конечно конечно, но я не готов сейчас назвать даже порядок ) Проблема еще и в том, что на данный момент я даже не знаю, влияет ли такой конфликт на всё решение сразу или только на часть возможных решений. Если он влияет только на часть возможных решений, то способ с построением конкретного решения может стать экспоненциальным. Например, имеется одно решение и 2^n -1 конфликтующих.


Решатели так и делают.
Расщепляют по наиболее популярной переменной и упрощают.
Тут сразу рекурсия вырисовывается.


Интересно, да, если имеет место расщепление по какой-то переменной, то сумма всех нулевых векторов в обоих половинах не может превышать сумму таких векторов в общем решении. Но я не уверен, что это нам что-то даёт.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103338
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
пропущено...


Решатели так и делают.
Расщепляют по наиболее популярной переменной и упрощают.
Тут сразу рекурсия вырисовывается.


Интересно, да, если имеет место расщепление по какой-то переменной, то сумма всех нулевых векторов в обоих половинах не может превышать сумму таких векторов в общем решении. Но я не уверен, что это нам что-то даёт.


Оно не много дает, если действовать рекурсивно.
Хорошо бы уметь определять независимые конфликты не рекурсивно.
Нечто подобное есть в эвристиках решателей - они не суются повторно туда, где однажды обожглись.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40103339
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Интересно, да, если имеет место расщепление по какой-то переменной, то сумма всех нулевых векторов в обоих половинах не может превышать сумму таких векторов в общем решении. Но я не уверен, что это нам что-то даёт.


Оно не много дает, если действовать рекурсивно.
Хорошо бы уметь определять независимые конфликты не рекурсивно.
Нечто подобное есть в эвристиках решателей - они не суются повторно туда, где однажды обожглись.


Можно нулевые вектора попробовать проверить на наличие цепочек приводящих к какому-то локальному решению. Консенсус среди нулей. Пусть сами выберут кто лишний.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40104529
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Интересно, да, если имеет место расщепление по какой-то переменной, то сумма всех нулевых векторов в обоих половинах не может превышать сумму таких векторов в общем решении. Но я не уверен, что это нам что-то даёт.


Оно не много дает, если действовать рекурсивно.
Хорошо бы уметь определять независимые конфликты не рекурсивно.
Нечто подобное есть в эвристиках решателей - они не суются повторно туда, где однажды обожглись.


Решение готово. Надо просто ХРАНИТЬ все построенные векторы и сравнивать не с тремя переменными комбинации, а с вектором целиком. Новое решение решает проблему, жрёт в 2n раз больше памяти и соответственно времени. Исходники можно найти тут: https://github.com/gromas/polysat/tree/extended_vector
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40104538
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
Aleksandr Sharahov
пропущено...


Оно не много дает, если действовать рекурсивно.
Хорошо бы уметь определять независимые конфликты не рекурсивно.
Нечто подобное есть в эвристиках решателей - они не суются повторно туда, где однажды обожглись.


Решение готово. Надо просто ХРАНИТЬ все построенные векторы и сравнивать не с тремя переменными комбинации, а с вектором целиком. Новое решение решает проблему, жрёт в 2n раз больше памяти и соответственно времени. Исходники можно найти тут: https://github.com/gromas/polysat/tree/extended_vector


Насчет 2n можно пояснить:
что хранится,
как сравнивается,
почему этого достаточно для фильтрации множества решений?
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40104543
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Верблюд
пропущено...


Решение готово. Надо просто ХРАНИТЬ все построенные векторы и сравнивать не с тремя переменными комбинации, а с вектором целиком. Новое решение решает проблему, жрёт в 2n раз больше памяти и соответственно времени. Исходники можно найти тут: https://github.com/gromas/polysat/tree/extended_vector


Насчет 2n можно пояснить:
что хранится,
как сравнивается,
почему этого достаточно для фильтрации множества решений?


  • хранятся векторы значений размера 2n для каждого сочетания трёх переменных из n. По два бита на значение. Принимают значения 0/1 + бит на хранение статуса Set/Unset
  • сравниваются между собой вектор одного сочетания со всеми векторами остальных сочетаний. При совпадении вектор проверяемого сочетания дополняется (выставляются совпадающие биты), при отстутствии совпадений вектор удаляется (последний бит в наборе байтов вектора хранит признак удаления)
  • при полном удалении всех 8 векторов сочетания получаем UNSAT
  • при отсутствии изменений в очередном цикле сравнения получаем SAT. Цикл do ... while(changed). Максимальное количество циклов в худшем случае составляет 2n^4, если в каждом цикле обновляется один единственный бит, обычно занимает от трёх до пяти циклов.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40104546
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
почему этого достаточно для фильтрации множества решений?


Вопрос интересный. Сейчас сижу описываю принцип работы. Смысл следующий.

  • Изначально решение представляет набор векторов назначения переменных (состояний) всех возможных сочетаний по 3 переменных из n. Каждое такое сочетание может содержать не более 2^3 = 8 векторов для каждого варианта назначения трёх переменных 0/1.
  • Что бы построить полный вектор конкретного решения, требуется что бы каждое сочетание содержало в себе как минимум один вектор побитно совпадающий с решением.
  • Соответственно, если в одном из сочетаний отсутствуют векторы, ни одного решения не существует.
  • Удаляем из нашего набора все векторы, назначения которых соответствуют клозам КНФ.
  • Для каждого вектора в каждом сочетании пытаемся построить полную цепочку решения, соответственно поочередно перебираем все сочетания и из каждого выбираем совместимые с проверяемым вектором векторы и в случае разрешения какого-либо нового бита обновляем исходный вектор. Если совместимых векторов не обнаружено, значит для исследуемого вектора невозможно построить полную цепочку из векторов всех остальных сочетаний, соответственно он в решении лишнее звено - удаляем его.
  • Расчёт заканчивается когда либо в одном из сочетаний удалены все векторы либо больше не существует противоречий между векторами. Отсутствие противоречий объясняет возможность построения полного решения. Сам полученный набор векторов является суперпозицией всех возможных решений, соответственно если он существует - решения есть, не существует - решений нет.
...
Рейтинг: 0 / 0
Решение NP-сложных задач за полиномиальное время
    #40104548
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд
  • при отсутствии изменений в очередном цикле сравнения получаем SAT.

  • Почему?
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104565
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд
  • при отсутствии изменений в очередном цикле сравнения получаем SAT.

  • Почему?


    На пальцах сложно объяснить. Общий смысл такой: допустим у нас в списке существует некоторый вектор, для которого решение (полный вектор размером n) построить нельзя. Предыдущий алгоритм пропускал такие векторы по той причине, что он каждый раз начинал строиться не учитывая предыдущей истории, а проверяя соответствие только текущему назначению трёх переменных. Теперь если вектору соответствует какая-то цепочка, не приводящая к решению, то в ней как минимум две маски сочетаний будут противоречить друг другу. Это означает две вещи - что данная пара конфликтующих векторов единственная и другого варианта выбора (расщепления пространства решений с другими значениями маски) для этого конфликта у нас нет, иначе бы мы не получили конфликт, так как каждый вектор соответствует хотя бы одному другому в каждом сочетании, ну и из этого следует, что два проверяемых вектора конфликтуют с единственным возможным вектором, что невозможно в силу того, что алгоритм как раз такие конфликтующие пары удаляет. На а про то, что цепочки из возможных решений не могут быть удалены объяснение совсем простое. Если существует решение (полный вектор размером n), то для него в каждой комбинации должен существовать вектор как минимум размером 3. При этом для каждого такого вектора в одной комбинации переменных должен существовать как минимум один не противоречащий ему вектор в следующей комбинации и их полные вектора будут полностью соответствовать друг другу и всем последующим, подходящим к решению, так как они не могут конфликтовать друг с другом в силу того, что являются частью одного решения.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104567
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд
    Теперь если вектору соответствует какая-то цепочка, не приводящая к решению, то в ней как минимум две маски сочетаний будут противоречить друг другу.


    Это простейший случай, с ним все понятно.

    Но ведь может существовать длинная цепочка, не приводящая к решению,
    в которой нет попарно противоречащих друг другу масок сочетаний.
    Она запросто даст ложноположительное решение.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104569
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд
    Теперь если вектору соответствует какая-то цепочка, не приводящая к решению, то в ней как минимум две маски сочетаний будут противоречить друг другу.


    Это простейший случай, с ним все понятно.

    Но ведь может существовать длинная цепочка, не приводящая к решению,
    в которой нет попарно противоречащих друг другу масок сочетаний.
    Она запросто даст ложноположительное решение.


    могла существовать в прошлом варианте. тут нет как таковой длинной цепочки, так как вектор после пересчета по сути сам является концом длинной цепочки "слева" и по сути в бесконечном плане происходит замыкание начала и конца цепочки (раньше так сделать было невозможно, так как истории слева не было) - цепочки, где любой выбор не противоречит любому другому дальше.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104572
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    То, что если ее "вытянуть", то она замкнется это как раз понятно.
    Но непонятно, как вы это обнаружите.
    Что такого нового вы добавили в алгоритм, из-за чего он стал это обнаруживать.
    Не факт, что в любом случае будет достаточно цикла, можете удалить лишнее.
    Вдруг цепочки имеют общие части, и нужна рекурсия.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104573
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд,

    То, что если ее "вытянуть", то она замкнется это как раз понятно.
    Но непонятно, как вы это обнаружите.
    Что такого нового вы добавили в алгоритм, из-за чего он стал это обнаруживать.
    Не факт, что в любом случае будет достаточно цикла, можете удалить лишнее.
    Вдруг цепочки имеют общие части, и нужна рекурсия.


    По сути пространство решений имеет некое подобие с поверхностью Римана, все цепочки находятся в разных измерениях и непрерывны, при этом на проекции в трёхмерное пространство кажется что функция имеет разрывы и построить из этих цепочек её невозможно. Каждая часть полного вектора имеет или точное соответствие следующей и предыдущей части или частичное соответствие двум или более другим. При этом каждая из этих двух в конечном итоге замыкает цепь в первый выбранный вектор, так как выбрав конкретный путь, мы уже не сможем выбрать другой. И в этом конкретном пути все вектора консистентны друг с другом, если имеется решение, и неконсистентны, если такого решения нет. Но в последнем случае между двумя какими-то векторами цепочки обязательно будет противоречие и один из них будет удален алгоритмом. В прошлый раз поверхность решений не была замкнута, начиналась с некоторого края и получался разрыв, приводящий к противоречию только при полном исследовании возможного варианта решения. Именно поэтому алгоритм за n^3 памяти не был способен отследить варианты логической взаимоблокировки.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104575
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Тут еще один момент замечу на всякий. У нас, что бы цепочка после замыкания привела к ложноположительному результату необходимо сделать так, что бы в пути в разных векторах этой цепочки была назначена одна и та же переменная разными способами (0 или 1). Это единственный вариант, который делает решение невозможным. При этом тогда в одном из векторов должно быть четкое назначение 1 или 0. То есть ему соответствует один единственный вариант решения вместе со следующим вектором. Из этого следует, что этот 0 будет реплицирован по всей цепочке векторов до того вектора, где переменной назначается значение 1. И тут как раз алгоритм отсекает вектор с единицей, так как он не совпадает с предыдущим... Не отсечь он может только если ранее существует ветвление, сбрасывающее значение этой переменной, то есть деление по значению самой этой переменной. Но тогда наш вариант цепочки с установленным 0 не попадет в эту ветку с установленной 1 вообще, то есть конфликта не будет.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104577
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    Непонятно, как удается исключить цепочки без рекурсии.

    Я правильно понимаю, что мы идем по цепочке, делая назначения, до ее замыкания, а затем удаляем ее навсегда.

    Почему не может существовать решения с тем же началом, что в удаленной цепочке,
    но другим назначением где-то посередине цепочки?
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104579
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд,

    Непонятно, как удается исключить цепочки без рекурсии.

    Я правильно понимаю, что мы идем по цепочке, делая назначения, до ее замыкания, а затем удаляем ее навсегда.

    Почему не может существовать решения с тем же началом, что в удаленной цепочке,
    но другим назначением где-то посередине цепочки?


    Ну вот смотри.
    Вариант 1. Цепочка замкнута в себя, потому что другого пути у неё нет, она не может прийти в другое состояние уже назначенных нами переменных. Если внутри цепочки мы где-то назначили переменную в 0 и ветвлений нет, то алгоритм обязательно расширит её до того момента, где мы предполагаем существует назначение 1 и отвергнет её. Просто перебирая все совместимые цепочки он дойдет до этого места и скажет что для этого назначения нет решений.
    Вариант 2. Цепочка замкнута, мы это уже обсудили. Но из неё есть ответвления в другую часть пространства решений. Если внутри цепочки мы назначили 0, то единственный способ не дойти до назначения 1 - свернуть в другую часть пространства решений. При чем именно по этой переменной, так как от назначения 1 в нашу сторону так же идёт алгоритм, который жаждет убить то другое назначение. Значит что бы он не пришел к нам со своим назначением, тот вектор так же должен в какой-то момент расщепиться по этой установленной им переменной и её значение в той области, куда он уходит, будет четко определено, иначе она совпала бы с нашей цепочкой.
    И тут надо заметить, что что бы алгоритм не нашел два противоречащих назначения, должен существовать обход без назначения. собственно как-то так. Я всё еще представляю себе водопроводные трубы в своей квартире, о прокладке которых я думал когда в голову пришла эта идея - они не замкнуты друг в друга, поэтому первый вариант комом вышел.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104582
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд
    так как от назначения 1 в нашу сторону так же идёт алгоритм, который жаждет убить то другое назначение.


    Это так в случае, если цепочка от назначения 1 плохая.
    А если там есть решение, то ничего оно не жаждет.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104588
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Например, что-то похожее на касательную к окружности.
    Касательная - это решение, а окружность - противоречивая цепочка.
    Нельзя исключить окружность, не разорвав касательную, и тем самым не испортив решение.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104589
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд
    так как от назначения 1 в нашу сторону так же идёт алгоритм, который жаждет убить то другое назначение.


    Это так в случае, если цепочка от назначения 1 плохая.
    А если там есть решение, то ничего оно не жаждет.


    Если там есть решение, значит где-то есть ветвление, при чем вторая ветка промаркирована иначе чем наша, иначе алгоритм их схлопнет. В обратную сторону всё совершено так же. Смысл в том, что если ветвления нет, то алгоритм это найдёт, а если ветвление есть, значит есть обход противоречащего назначения. Если бы это был не обходной путь, то ветвления бы не было, и по нашей переменной эта ветка схлопнулась бы с той, где противоречие и алгоритм опять бы его нашел.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104591
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    Я правильно понял, что ваш алгоритм умеет исключать только цепочки без ветвлений?
    Как он исключит две цепочки с общей частью (что-то вроде восьмерки)?
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104592
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Что бы не говорить на пустом месте, я тут картинку быстро набросал. Кривая ну и пофиг.

    Вот если в abc мы назначили b = 1. Алгоритм жадный и пытается распространить назначенное нами значение на как можно большее число векторов. Он утащит его сначала в abd, затем в acd, затем в bcd и при отсутствии ветвлений в конце концов это назначение вернется обратно в abc. Теперь, допустим у нас есть ветвление, в котором переменной b мы назначаем 0. Соответственно это назначение также будет распространено вплоть до разветвления. При этом алгоритм обнаружит, что в нашей ветке оно не соответствует назначению b = 1 и назначение b = 0 будет удалено. При этом в другую сторону наш алгоритм или оставит разветвление без назначения, пока до него не распространится b=0, либо если оно уже тут - выберет другую ветку и будет распространять нашу 1 на неё.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104593
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд,

    Я правильно понял, что ваш алгоритм умеет исключать только цепочки без ветвлений?
    Как он исключит две цепочки с общей частью (что-то вроде восьмерки)?


    Собственно тестовый файл Mikhail как раз такой случай - там не восьмерка даже, там 8 колец в одной точке соединяются. Старый алгоритм не умел это решать, новый сразу говорит UNSAT.
    При чем рядом лежит второй файл, в котором как раз два кольца оставлено - у него решение есть.

    https://github.com/gromas/polysat/tree/extended_vector/samples/Circular logical deadlock

    Хотя выше как раз про восьмерку объяснение ) Консенсус он такой, внутри общей части тоже есть назначение, и оно тоже распространяется в разные стороны. И когда к разветвлению придут две ветки с назначением b = 1 и одна с назначением b = 0, то b=0 умрёт.

    И еще момент - если внутри общей части назначения нет, то возможен путь через этот участок для обоих колец - оба останутся и будут вполне себе мирно сосуществовать.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104605
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    За ночь сделал описание работы алгоритма и ответы на частые вопросы

    https://github.com/gromas/polysat/blob/main/docs/Polysat.docx
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104612
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104631
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    а вот эту статью вы смотрели?

    10 лет прошло, не могу сам оригинал описания алгоритма найти
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104669
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    а вот эту статью вы смотрели?

    10 лет прошло, не могу сам оригинал описания алгоритма найти


    Автор: Романов В.Ф.
    Описание: https://romvf.wordpress.com/
    Реализация: https://github.com/anjlab/sat3
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104675
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104753
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    а вот эту статью вы смотрели?

    10 лет прошло, не могу сам оригинал описания алгоритма найти


    Интересно. Почитаю. 10 лет и тишина - странно.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104770
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Оказывается вот так. (((

    Автор признал, что его вариант не решает проблему 3-SAT, придумал новый алгоритм, но не успел его даже опробовать и умер.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104771
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    пишут,
    что он и соавторы исправили найденную ошибку
    и последняя версии статьи и алгоритма ее уже не содержит
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104774
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд,

    пишут,
    что он и соавторы исправили найденную ошибку
    и последняя версии статьи и алгоритма ее уже не содержит


    тогда вот это очень старая статья

    Aleksandr Sharahov
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104777
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд
    Aleksandr Sharahov
    Верблюд,

    пишут,
    что он и соавторы исправили найденную ошибку
    и последняя версии статьи и алгоритма ее уже не содержит


    тогда вот это очень старая статья

    Aleksandr Sharahov


    он впервые описал в 2002, потом что-то было у его студентов, а эта статья 2011 - она новее

    по любому, если изучать, то лучше сразу алгоритм
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104778
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд
    пропущено...


    тогда вот это очень старая статья

    пропущено...


    он впервые описал в 2002, потом что-то было у его студентов, а эта статья 2010 - она новее


    Вот последняя статья. Но под неё так и не смогли сделать решатель, как я понял. Ибо автор умер и выяснить непонятности не удалось.

    https://arxiv.org/pdf/1309.6078.pdf

    А так я еще в 90-х над этой проблемой думал, но руки никак не доходили - семья, дети, кактусы... а потом и забыл совсем, года три назад вспомнил и снова начал думать. И тут бац - труба, которую при пайке закупорило...
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104790
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    нашел на русском еще свежее:

    http://www.isa.ru/proceedings/images/documents/2014-64-3/t-14-3_13-24.pdf
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104793
    Фотография mayton
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Палево когда в блокнотике <EPAM> просвечивает...
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104800
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    mayton
    Палево когда в блокнотике <EPAM> просвечивает...


    просвечивает. лет десять назад там работал, блокнотики остались, в них пишу.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104811
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд,

    нашел на русском еще свежее:

    http://www.isa.ru/proceedings/images/documents/2014-64-3/t-14-3_13-24.pdf
    жалко доказательности в его статье мало по части асимптотики
    но показывает он ту же "ленту решений" (стр 17, 18 нумерации) что и автор топика
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104812
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    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 странице он своё решение "дорешивает". Так что видимо есть различия и существенные, в сам текст не вникал еще.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104813
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    авторПредварительный этап решения заключается в унификации S1 и S2, так как унификация по
    принципу действия сохраняет в структурахоперандах все существующие СВН и одновременно
    минимизирует упомянутые структуры по числу элементов (строк). очень тяжело его читать, лирика неуместная :-(

    он кажется задачу к 2-КНФ сводит (там всё доказано и решено), а как - непонятно
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104814
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    авторПредварительный этап решения заключается в унификации S1 и S2, так как унификация по
    принципу действия сохраняет в структурахоперандах все существующие СВН и одновременно
    минимизирует упомянутые структуры по числу элементов (строк).
    очень тяжело его читать, лирика неуместная :-(

    он кажется задачу к 2-КНФ сводит (там всё доказано и решено), а как - непонятно

    Надо почитать. Но вроде он параллельно показывает как 3сат и 2 сат его методом решать. Мой метод тоже умеет 2сат решать, но смысла в этом нет, 2 сат за линейное время решается.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104816
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    я и говорю что лирики много, а самого главного нема

    но это у большинства так, кто пишет доки к своим работам
    у вас тоже так же ничего не понять
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104819
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    но если вы правы, вы такой ящичек откроете, тынц
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104832
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    я и говорю что лирики много, а самого главного нема

    но это у большинства так, кто пишет доки к своим работам
    у вас тоже так же ничего не понять


    У меня смысл такой. Берешь ведро и синюю изоленту. Наматываешь изоленту на ведро, если буквы обоих концах изоленты сошлись, то красиво, если не сошлись - ведро выбрасывается ))))

    Да, чуть не забыл. Без перехлёста не все варианты подойдут )))
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104836
    Aleksandr Sharahov
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    а что, так можно? ))
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40104864
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд,

    а что, так можно? ))


    суть примерно та же. только тут для одного решения переплетается n^3 слоёв изоленты, при этом части букв в каждом слое не должны противоречить друг другу. Я собираюсь показать, что из n^3 кусочков ленты с минимум тремя частями букв можно собрать 2^n различных вариантов так, что бы кусочки букв не противоречили друг другу.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40105655
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    а почему C(3, N) а не C(3, N) * 2^3 ?
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40105669
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan),

    В первой версии один бит отвечал за одно состояние. Поэтому 2^3 это байт
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40105683
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    я в плане того спрашиваю, что троек то возможных не C(3,N), а в 8 раз больше (с учётом not-вариантов)
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40105685
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    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 байт. Или уточните о чем речь.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40105719
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    это я пытаюсь понять "Описание алгоритма решения задачи 3-КНФ", что откуда и зачем

    из этого текста очень сложно понять, без гугления, что 8 состояний комбинаций для каждой тройки {vi, vj, vk}, это:
    {vi | vj | vk}, { vi | vj | vk}, {vi | vj | vk}, ...


    в этом блоке осталось осилить
    авторВекторы, соответствующие ограничениям 3-КНФ формулы помечаются как удаленные.это какие? которые входят в формулу? зачем удалённые?
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40105744
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    если перефразировать блок "Описание алгоритма решения задачи 3-КНФ" человеческим языком, выходит следующее утверждение

    Любую 3-КНФ формулу из n переменных можно представить в виде вектора состоящего из 8 * C(3, N) бит

    теперь про то, что вы говорите далее, про операции с эти вектором

    Возможно ли, подставив значение N-й переменной, получить однозначное 3-КНФ уравнение из (N-1) переменных ?
    и если возможно, то как это сделать
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40105932
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    если перефразировать блок "Описание алгоритма решения задачи 3-КНФ" человеческим языком, выходит следующее утверждение

    Любую 3-КНФ формулу из n переменных можно представить в виде вектора состоящего из 8 * C(3, N) бит

    теперь про то, что вы говорите далее, про операции с эти вектором

    Возможно ли, подставив значение N-й переменной, получить однозначное 3-КНФ уравнение из (N-1) переменных ?
    и если возможно, то как это сделать


    Можно на n получить просто удалив все векторы, соответствующие ограничению. В исходниках смотрите, там есть функция addconstraint(x). N-1 получить можно, это надо весь набор пересобирать, такого функционала у меня нет.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106008
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    вот в чём и фигня

    (v1, v2, vn) & (v7, v16, vn)

    vn = 1

    левый можно удалить, куда девать правый?
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106033
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    вот в чём и фигня

    (v1, v2, vn) & (v7, v16, vn)

    vn = 1

    левый можно удалить, куда девать правый?


    Ахаха. Да, логично. Правый никуда не девать. 2SAT выражение получается. Если vn это отрицание, то он равен 0. И из v7 v16 получаем 2SAT
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106044
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    но вообще я один способ придумал, можно добавить в уравнение известные переменные, минимально достаточно двух
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106045
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    но вообще я один способ придумал, можно добавить в уравнение известные переменные, минимально достаточно двух


    здорово. осталось выяснить способ чего.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106051
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    для начала, хотя бы иметь возможность понизить количество переменных
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106057
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    для начала, хотя бы иметь возможность понизить количество переменных


    Хороший ход. Но ты не сможешь утоптать 2^n возможных решений в n-1 переменных. Вместо сочетаний n по 3 придётся использовать сочетания n по 4, что увеличит размер хранения полученной формулы.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106063
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    ничего особо не увеличит (кардинально во всяком случае), вместо 8*C(3,n) бит потребуется 8*C(3,n + 3)

    например добавим 3 переменные (t0 = 0, t1 = 0, t2 =0) - это 7 известных соотношений.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106066
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    фактически можно хранить в развёрнутом виде только разницу 8* [C(3,n + 3) - C(3,n)] бит, так как исходные блоки не меняются
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106070
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    фактически можно хранить в развёрнутом виде только разницу 8* [C(3,n + 3) - C(3,n)] бит, так как исходные блоки не меняются


    Немного не понял, для чего вообще хранить t0 t1 t2, если они в задачу не входят? Сохранить не проблема, достаточно в начале сказать что в задаче на 3 переменных больше. Что с ними делать дальше?
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106095
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    я пытаюсь понять базовые операции, которые нам доступны
    вполне очевидно, что понижение уровня уравнения довольно базовая вещь

    Собственно невозможность подставки 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
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106118
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)

    И я как бы не вижу у вас описание решения вопроса, который поднял Aleksandr Sharahov


    Не понял про дробление. Что дробить? Заглянул в результат, который возвращает алгоритм. Список фиктивных переменных из него достаётся на раз. За исключением переменных входящих в логические взаимоблокировки назначений.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106127
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,


    Вот смотрите, актуализация одной из переменных в 1 или 0 даёт две функции, каждую из которых надо решать.
    Если допустить, что функция решаема, тут два решения: либо сразу выяснится, что 1 из них несовместима, либо в обоих случаях конфликта не будет
    Допустим, вы прошлись по всем переменным и попробовали произвести такую замену
    и оказывается, что конфликтов нет

    ваши действия?
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106132
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    я вам простой пример приведу
    допустим есть число
    n = P1 * P2 - произведение двух простых

    если я запишу в 3-кнф функцию описывающую уравнение
    n mod a = 0

    оно естественно будет иметь два решения 1 и P2 (я ограничу количество бит корнем из n)

    соответственно лишь часть P2 будет иметь нулевые биты (а может и вообще не иметь)
    для остальных переменных будет 1
    и как вы не задавайте у вас для любой разбивки будут оба решения
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106147
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Короткое видео о том откуда появился алгоритм.

    YouTube Video
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106535
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Aleksandr Sharahov
    Верблюд
    пропущено...


    У нас состояния в точке стыковки двух веток согласованы в обе стороны. По крайней мере до следующего уровня ветвления дерева. Если в процессе прохода от одного уровня ветвления до следующего маска поменялась, то следующее состояние будет полностью согласовано с обеими частями ветки выше очередной точки ветвления


    Речь не о том, что согласовано или нет, а о том, как долго придется ходить и согласовывать.

    Если грубо.
    У нас матрешка, а у нее в самом конце может оказаться баба-яга.
    На вопрос, что в конце не ответишь, пока всю матрешку не разберешь.
    Но у нас в каждой матрешке не одна матрешка предыдущего уровня, а 100. И так на каждом уровне.
    Переходя на предыдущий уровень по одной ветке, мы не особенно понижаем сложность задачи.
    И чтобы ответить на вопрос, есть ли там хоть одна баба-яга, может потребоваться очень много проб.


    Да, вопрос правильный. Нужно доказательство. Есть доказательство отсутствия ложноотрицательных ответов. И есть наличие ложноположительных - тот еще оракул )))). Так что не работает это в том виде, который я описал. Но пока никто не доказал что способа не существует, буду дальше ковырять ))))
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106670
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    вот кстати
    задавать значение переменным сложнее, чем выставлять равенство\неравенство переменных

    т.е., если функция содержит два включения
    (vi, vj, p1) и (vi, vj, p2)
    и если при задании p1=p2 или p1 = not p2 выявится конфликт, то мы выразим одну переменную через другую

    так же по аналогии с алгоритмом Карацубы
    для (vi, pa, pb) и (vi, pc, pd) разрешение конфликтов подобным образом может дать 3 ветвления за 2 замены, а не 4


    В литературе ещё есть разбиения функции на две независимых функции, у вас этот вопрос как-то вообще упущен.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106683
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    ещё такая мысль: если алгоритм будет доказанно "стопориться" только при наличии нетривиальных решений, то такой алгоритм уже приобретёт ценность
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40106830
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    kealon(Ruslan)
    Верблюд,

    ещё такая мысль: если алгоритм будет доказанно "стопориться" только при наличии нетривиальных решений, то такой алгоритм уже приобретёт ценность


    Я вроде нашел способ определить фиктивность всех переменных в результатах работы алгоритма за n^2 времени. Используя тот факт, что не бывает ложноотрицательных ответов. Вроде должен работать. Сижу думаю как это в программу воплотить, придётся isdeleted переделывать на метку времени.
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40107582
    Фотография Верблюд
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд
    kealon(Ruslan)
    Верблюд,

    ещё такая мысль: если алгоритм будет доказанно "стопориться" только при наличии нетривиальных решений, то такой алгоритм уже приобретёт ценность


    Я вроде нашел способ определить фиктивность всех переменных в результатах работы алгоритма за n^2 времени. Используя тот факт, что не бывает ложноотрицательных ответов. Вроде должен работать. Сижу думаю как это в программу воплотить, придётся isdeleted переделывать на метку времени.


    Решение найдено. Описание тут:
    YouTube Video
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40108894
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Верблюд,

    опять в том же ракурсе, сложно понять это, и доказательности мало, речь вообще очень тяжело воспринимается

    хотя какая-то аналогия идёт с заменой переменных для перевода в 2-КНФ
    ...
    Рейтинг: 0 / 0
    Решение NP-сложных задач за полиномиальное время
        #40110208
    kealon(Ruslan)
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    [spoiler] [quote=Верблюд]Короткое видео о том откуда появился алгоритм.

    YouTube Video
    ...
    Рейтинг: 0 / 0
    136 сообщений из 136, показаны все 6 страниц
    Форумы / Программирование [игнор отключен] [закрыт для гостей] / Решение NP-сложных задач за полиномиальное время
    Целевая тема:
    Создать новую тему:
    Автор:
    Закрыть
    Цитировать
    Найденые пользователи ...
    Разблокировать пользователей ...
    Читали тему (1): Анонимы (1)
    Читали форум (1): Анонимы (1)
    Пользователи онлайн (9): Анонимы (6), Yandex Bot, Bing Bot 1 мин., Google Bot 2 мин.
    x
    x
    Закрыть


    Просмотр
    0 / 0
    Close
    Debug Console [Select Text]