Алгори́тм Шёнинга (англ. 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 года.