Aluarium
Алгоритм Шёнинга - Версия для печати

+- Aluarium (http://aluarium.net/forum)
+-- Форум: Наука и техника (/forum-46.html)
+--- Форум: Математика (/forum-49.html)
+--- Тема: Алгоритм Шёнинга (/thread-299.html)

Страниц: 1 2


Алгоритм Шёнинга - Галл - 07-11-2012 19:55

Прочитал недавно статью 1999го года об алгоритме для проблемы поиска набора переменных, при котором данная 3-КНФ (а также вообще k-КНФ) истинна: homepages.cwi.nl/~rdewolf/schoning99.pdf
Возникли такие мысли: 1) действительно ли наиболее целесообразно делать именно 3n шагов? 2) Не сделает ли алгоритм более эффективным генерация не рандомных значений переменных, независимых от предыдущих попыток, а какой-либо более сложный подход? Например, выбор нескольких наборов значений переменных так, чтобы искомый набор (решение) был гарантированно близок по крайней мере к одному из них на расстояние Хэмминга, не превосходящее n/t, где t - некая специально подобранная константа.
Сейчас получены несколько лучшие асимптотики, чем в описанном алгоритме, но его относительная простота (и простота доказательства его асимптотики) делает поиск усовершенствований не таким сложным.


RE: Чем бы нам заняться? - Quasus - 07-11-2012 22:31

Прочитал. Осмысливаю.


RE: Чем бы нам заняться? - Quasus - 08-11-2012 21:01

Не вникая пока в выкладки (с. 411 — мне не очень понятно, какие там используются эквивалентности и пр.), могу сказать, что не понимаю, как это вообще работает. Матожидание приращения расстояния Хэмминга при одном «флипе» оценивается через при . Если мы всё равно уходим от искомого решения, зачем вообще эти 3n итераций, и почему сразу не выбирать новую точку? Какой-то фокус.


RE: Чем бы нам заняться? - Галл - 09-11-2012 22:54

(08-11-2012 21:01)Quasus писал(а):  Не вникая пока в выкладки (с. 411 — мне не очень понятно, какие там используются эквивалентности и пр.), могу сказать, что не понимаю, как это вообще работает. Матожидание приращения расстояния Хэмминга при одном «флипе» оценивается через при . Если мы всё равно уходим от искомого решения, зачем вообще эти 3n итераций, и почему сразу не выбирать новую точку? Какой-то фокус.
Там получается, что вероятность прийти к решению (если конечно оно существует) за те 3n итераций не менее чем , где j - расстояние Хэмминга от сгенерённого набора переменных до ответа, и этого оказывается достаточно, чтобы побить "наивный" алгоритм по производительности.


RE: Чем бы нам заняться? - Галл - 09-11-2012 23:00

Идея подобного рода алгоритмов основывается на том, что если есть способ получить ответ за одно испытание с вероятностью не менее 1/k, то если провести k таких независимых испытаний, то вероятность, что ответ не будет получен, будет всего лишь примерно 1/e. Если повторить их C*k раз, где C - соотв. константа, можно понизить вероятность неудачи ниже нужного уровня.


RE: Алгоритм Шёнинга - Quasus - 09-11-2012 23:51

Видимо, в первую очередь я не понимаю, какой «функционал стоимости» оптимизируется.


RE: Алгоритм Шёнинга - Галл - 10-11-2012 00:14

Оптимизуется зависимость времени поиска решения (в данном случае - времени, за которое алгоритм найдёт решение с вероятностью, близкой к единице) от числа переменных в КНФ при максимальном размере дизъюнкций, обозначенном через k. Понятно, что на поиск невыполненной дизъюнкции тоже будет каждый раз уходить время, но в данном случае им можно пренебречь, поскольку сложность всё равно будет экспоненциальная. Цель построения алгоритмов для задачи о выполнимости k-КНФ (k >= 3) - максимально приблизить к 1 основание степени в асимпотической оценке (возможно, существуют и субэкспоненциальные алгоритмы, или даже полиномиальные, но пока таких не удалось найти). Для задачи о выполнимости 2-КНФ существует простой полиномиальный алгоритм - O(N2).


RE: Алгоритм Шёнинга - Галл - 10-11-2012 00:17

Задача о выполнимости 3-КНФ - NP-полная задача, поэтому весьма вероятно, что полиномиального алгоритма для неё не существует.


RE: Алгоритм Шёнинга - Quasus - 10-11-2012 01:38

То есть начальное приближение — «дорого», нахождение невыполненной дизъюнкции — «дёшево» (a fortiori проверка тоже дешёвая). А «флипанье» значит дорого?


RE: Алгоритм Шёнинга - Галл - 10-11-2012 10:20

(10-11-2012 01:38)Quasus писал(а):  То есть начальное приближение — «дорого», нахождение невыполненной дизъюнкции — «дёшево» (a fortiori проверка тоже дешёвая)
Сам блок из 3n итераций дёшев, так как работает за полиномиальное от n время. Но его нужно повторять экспоненциальное число раз, чтобы достичь близкой к 1 вероятности нахождения ответа. От полиномиального множителя можно избавиться, промажорировав его через , где эпсилон - положительное число, сколь угодно близкое к нулю. Сложность для 3-КНФ будет тогда выглядеть как .