Алгоритм Шёнинга
Алгори́тм Шёнинга (англ. Schöning's Algorithm) — вероятностный алгоритм для решения задачи выполнимости булевых формул в k-конъюнктивной нормальной форме, предложенный Уве Шёнингом в 1999 году[1].
Описание для решения 3-SATПравить
- Дана булева формула в 3-конъюнктивной нормальной форме .
- Повтори раз:
- Случайно установи набор переменных .
- Если булева формула истинна, выведи и заверши работу.
- Повтори раз:
- Выбери дизъюнкцию , которой не удовлетворяет .
- Выбери переменную из .
- Установи .
- Если булева формула истинна, выведи и заверши работу.
- Выведи " невыполнима".
Временная сложностьПравить
Алгоритм Шёнинга имеет временную сложность , где - количество переменных, а - количество дизъюнкций, при условии, что проверка выполнимости булевой формулы производится за . Если булева формула невыполнима, то алгоритм Шёнинга всегда возвращает верный результат.
Оценка ошибкиПравить
Если булева формула выполнима, то вероятность ошибки всегда будет меньше . Для доказательства обозначим за набор переменных, при котором истинна, а также - вероятность, что алгоритм найдет во вложенном цикле (эта стадия называется также локальным поиском). Таким образом является нижним пределом вероятности нахождения удовлетворяющего набора переменных с помощью локального поиска. Далее мы покажем, что . Расстоянием между двумя наборами и будем называть количество отличных в них бит. Определим класс как множество наборов, отличающихся от на бит, т.е. . Таким образом все наборы могут быть распределены на классов. Для справедливо . Вероятность случайно выбрать элемент из равна . В локальном поиске рассматривается дизъюнкция , которой не удовлетворяет сгенерированный набор переменных, и при случайном перевыборе набора вероятность найти удовлетворяющий равна . Таким образом вероятность перейти из класса к классу равна минимум . Вероятность же попасть из класса в равна максимум . Пусть - вероятностью попасть из класса за шагов в класс , т.е. найти решение . В таком случае , где - количество возможных переходов в направлении , а вероятность достичь из класса равна . После подстановки формул друг в друга и приблизительного вычисления результата, получим вероятность не найти удовлетворяющий набор переменных во время локального поиска равную , а после таких поисков вероятность станет уже равна .
ПримечанияПравить
- ↑ T. Schoning. A probabilistic algorithm for k-SAT and constraint satisfaction problems // 40th Annual Symposium on Foundations of Computer Science (Cat. No.99CB37039). — New York City, NY, USA: IEEE Comput. Soc, 1999. — С. 410–414. — ISBN 978-0-7695-0409-4. — doi:10.1109/SFFCS.1999.814612.