Это не официальный сайт wikipedia.org 01.01.2023

Алгоритм Шёнинга — Википедия

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

Описание для решения 3-SATПравить

  1. Дана булева формула в 3-конъюнктивной нормальной форме F ( x 1 , x 2 , , x n )  .
  2. Повтори 20 3 π n ( 4 3 ) n   раз:
    1. Случайно установи набор переменных α = ( α 1 , α 2 , , α n ) { 0 , 1 } n  .
    2. Если булева формула F ( α )   истинна, выведи α   и заверши работу.
    3. Повтори 3 n   раз:
      1. Выбери дизъюнкцию c i  , которой не удовлетворяет α  .
      2. Выбери переменную x j   из c i  .
      3. Установи α = ( α 1 , α 2 , , α j ¯ , , α n )  .
      4. Если булева формула F ( α )   истинна, выведи α   и заверши работу.
  3. Выведи " F   невыполнима".

Временная сложностьПравить

Алгоритм Шёнинга имеет временную сложность O ( m n 3 / 2 ( 4 / 3 ) n ) = O ( m 1.334 n )  , где n   - количество переменных, а m   - количество дизъюнкций, при условии, что проверка выполнимости булевой формулы производится за O ( 3 m )  . Если булева формула F   невыполнима, то алгоритм Шёнинга всегда возвращает верный результат.

Оценка ошибкиПравить

Если булева формула F   выполнима, то вероятность ошибки всегда будет меньше 5 10 5  . Для доказательства обозначим за α   набор переменных, при котором F ( α )   истинна, а также p l   - вероятность, что алгоритм найдет α   во вложенном цикле (эта стадия называется также локальным поиском). Таким образом p l   является нижним пределом вероятности нахождения удовлетворяющего набора переменных с помощью локального поиска. Далее мы покажем, что p l 1 20 3 π n ( 3 4 ) n  . Расстоянием между двумя наборами α   и β   будем называть количество отличных в них бит. Определим класс C ( j )   как множество наборов, отличающихся от α   на j   бит, т.е. C ( j ) = { β { 0 , 1 } n dist ( α , β ) = j }  . Таким образом все наборы могут быть распределены на n + 1   классов. Для j { 0 , 1 , , n }   справедливо | C ( j ) | = ( n j )  . Вероятность случайно выбрать элемент из C ( j )   равна p j = ( n j ) 2 n  . В локальном поиске рассматривается дизъюнкция c i  , которой не удовлетворяет сгенерированный набор переменных, и при случайном перевыборе набора вероятность найти удовлетворяющий равна 1 / 3  . Таким образом вероятность перейти из класса C ( j )   к классу C ( j 1 )   равна минимум 1 / 3  . Вероятность же попасть из класса C ( j )   в C ( j + 1 )   равна максимум 2 / 3  . Пусть q j , i   - вероятностью попасть из класса C ( j )   за j + 2 i   шагов в класс C ( 0 )  , т.е. найти решение α  . В таком случае q i , j = ( j + 2 i i ) j j + 2 i ( 1 3 ) j + 1 ( 2 3 ) i  , где ( j + 2 i i ) j j + 2 i   - количество возможных переходов в направлении α  , а вероятность достичь α   из класса C ( j )   равна q j = i = 0 j q j , i  . После подстановки формул друг в друга и приблизительного вычисления результата, получим вероятность не найти удовлетворяющий набор переменных во время локального поиска равную p ~ = 1 1 2 3 π n ( 3 4 ) n  , а после t   таких поисков вероятность станет уже равна ( 1 p ~ ) 20 3 π n ( 4 3 ) n e 10 5 10 5  .

ПримечанияПравить

  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.