Алгоритм Шёнинга

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Алгори́тм Шёнинга (англ. Schöning's Algorithm) — вероятностный алгоритм для решения задачи выполнимости булевых формул в k-конъюнктивной нормальной форме, предложенный Уве Шёнингом в 1999 году[1].

Описание для решения 3-SAT[править | править код]

  1. Дана булева формула в 3-конъюнктивной нормальной форме .
  2. Повтори раз:
    1. Случайно установи набор переменных .
    2. Если булева формула истинна, выведи и заверши работу.
    3. Повтори раз:
      1. Выбери дизъюнкцию , которой не удовлетворяет .
      2. Выбери переменную из .
      3. Установи .
      4. Если булева формула истинна, выведи и заверши работу.
  3. Выведи " невыполнима".

Временная сложность[править | править код]

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

Оценка ошибки[править | править код]

Если булева формула выполнима, то вероятность ошибки всегда будет меньше . Для доказательства обозначим за набор переменных, при котором истинна, а также - вероятность, что алгоритм найдет во вложенном цикле (эта стадия называется также локальным поиском). Таким образом является нижним пределом вероятности нахождения удовлетворяющего набора переменных с помощью локального поиска. Далее мы покажем, что . Расстоянием между двумя наборами и будем называть количество отличных в них бит. Определим класс как множество наборов, отличающихся от на бит, т.е. . Таким образом все наборы могут быть распределены на классов. Для справедливо . Вероятность случайно выбрать элемент из равна . В локальном поиске рассматривается дизъюнкция , которой не удовлетворяет сгенерированный набор переменных, и при случайном перевыборе набора вероятность найти удовлетворяющий равна . Таким образом вероятность перейти из класса к классу равна минимум . Вероятность же попасть из класса в равна максимум . Пусть - вероятностью попасть из класса за шагов в класс , т.е. найти решение . В таком случае , где - количество возможных переходов в направлении , а вероятность достичь из класса равна . После подстановки формул друг в друга и приблизительного вычисления результата, получим вероятность не найти удовлетворяющий набор переменных во время локального поиска равную , а после таких поисков вероятность станет уже равна .

Примечания[править | править код]

  1. 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. Архивировано 4 июля 2022 года.