SlideShare a Scribd company logo
Алгоритмы для NP-трудных задач
        Лекции 4–5: Алгоритмы для задачи
                 выполнимости

                           Александр Куликов

      Петербургское отделение Математического института им. В. А. Стеклова
                            Российская академия наук


               Computer Science клуб в Екатеринбурге
                          2-3 марта 2013



А. Куликов (ПОМИ РАН)    Алгоритмы для задачи выполнимости     2-3 марта 2013   1 / 38
1    Введение

2    Простые подклассы

3    Примеры свед´ний
                 е

4    Расщепление

5    Локальный поиск

6    Точные алгоритмы для MAX-2-SAT

7    Приближённый алгоритм для MAX-2-SAT



    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   2 / 38
Содержание

1    Введение

2    Простые подклассы

3    Примеры свед´ний
                 е

4    Расщепление

5    Локальный поиск

6    Точные алгоритмы для MAX-2-SAT

7    Приближённый алгоритм для MAX-2-SAT


    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   3 / 38
Формулировка задачи



    Проверить, выполнима ли формула вида

           (x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) .




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   4 / 38
Формулировка задачи



    Проверить, выполнима ли формула вида

           (x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) .

    Задача максимальной выполнимости: выполнить как можно
    больше клозов.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   4 / 38
Важность

    http://www.satisfiability.org/ — The International
    Conferences on Theory and Applications of Satisfiability Testing.
    http://www.satcompetition.org/ — The international SAT
    Competitions web page.
    http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on
    Satisfiability, Boolean Modeling and Computation.
    http://www.satlib.org/ — The Satisfiability Library.
    http://www.satlive.org/ — Up-to-date links for the
    Satisfiability Problem.
    http://www.qbflib.org/ — The Quantified Boolean
    Formulas Satisfiability Library.


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   5 / 38
Содержание

1    Введение

2    Простые подклассы

3    Примеры свед´ний
                 е

4    Расщепление

5    Локальный поиск

6    Точные алгоритмы для MAX-2-SAT

7    Приближённый алгоритм для MAX-2-SAT


    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   6 / 38
Простые подклассы



    Задача выполнимости NP-полна.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   7 / 38
Простые подклассы



    Задача выполнимости NP-полна.
    В частности, многие NP-трудные задачи очень просто и
    естественно формулируются в терминах выполнимости.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   7 / 38
Простые подклассы



    Задача выполнимости NP-полна.
    В частности, многие NP-трудные задачи очень просто и
    естественно формулируются в терминах выполнимости.
    Это, однако, не исключает того, что бывают простые
    формулы.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   7 / 38
2-SAT

    В задаче 2-выполнимости каждый клоз входной формулы
    содержит не более двух литералов.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   8 / 38
2-SAT

    В задаче 2-выполнимости каждый клоз входной формулы
    содержит не более двух литералов.
    Идея: клоз (x ∨ y ) говорит нам, что нельзя одновременно
    присваивать значение 0 литералам x и y . Ровно о том же
    самом нас просят импликации (¯ ⇒ y ) и (¯ ⇒ x).
                                    x         y




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   8 / 38
2-SAT

    В задаче 2-выполнимости каждый клоз входной формулы
    содержит не более двух литералов.
    Идея: клоз (x ∨ y ) говорит нам, что нельзя одновременно
    присваивать значение 0 литералам x и y . Ровно о том же
    самом нас просят импликации (¯ ⇒ y ) и (¯ ⇒ x).
                                    x                 y
    Заведём граф на вершинах {x1 , x2 , . . . , x1 , x2 , . . . }. Если в
                                                ¯ ¯
    исходной формуле есть клоз (xi ∨ xj ), проведём рёбра xi → xj     ¯
    и xj → xi .
      ¯




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   8 / 38
2-SAT

    В задаче 2-выполнимости каждый клоз входной формулы
    содержит не более двух литералов.
    Идея: клоз (x ∨ y ) говорит нам, что нельзя одновременно
    присваивать значение 0 литералам x и y . Ровно о том же
    самом нас просят импликации (¯ ⇒ y ) и (¯ ⇒ x).
                                    x                 y
    Заведём граф на вершинах {x1 , x2 , . . . , x1 , x2 , . . . }. Если в
                                                ¯ ¯
    исходной формуле есть клоз (xi ∨ xj ), проведём рёбра xi → xj     ¯
    и xj → xi .
      ¯
    В полученном графе найдём компоненты сильной связности.
    Если хотя бы в одной из них содержатся xi и xi , то формула
                                                            ¯
    невыполнима.



 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   8 / 38
2-SAT

    В задаче 2-выполнимости каждый клоз входной формулы
    содержит не более двух литералов.
    Идея: клоз (x ∨ y ) говорит нам, что нельзя одновременно
    присваивать значение 0 литералам x и y . Ровно о том же
    самом нас просят импликации (¯ ⇒ y ) и (¯ ⇒ x).
                                    x                 y
    Заведём граф на вершинах {x1 , x2 , . . . , x1 , x2 , . . . }. Если в
                                                ¯ ¯
    исходной формуле есть клоз (xi ∨ xj ), проведём рёбра xi → xj     ¯
    и xj → xi .
      ¯
    В полученном графе найдём компоненты сильной связности.
    Если хотя бы в одной из них содержатся xi и xi , то формула
                                                            ¯
    невыполнима.
    В противном случае линеаризуем компоненты и выполним
    формулу.

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   8 / 38
Horn SAT


    Формулы Хорна: в каждом клозе не более одного
    положительного литерала.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   9 / 38
Horn SAT


    Формулы Хорна: в каждом клозе не более одного
    положительного литерала.
    Идея: присвоим всем переменным значение 0; если формула
    при этом не выполнилась, значит, есть клоз вида (xi ).




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   9 / 38
Horn SAT


    Формулы Хорна: в каждом клозе не более одного
    положительного литерала.
    Идея: присвоим всем переменным значение 0; если формула
    при этом не выполнилась, значит, есть клоз вида (xi ).
    Присвоим тогда xi = 1 и опять, посмотрим не выполнилась
    ли формула.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   9 / 38
Horn SAT


    Формулы Хорна: в каждом клозе не более одного
    положительного литерала.
    Идея: присвоим всем переменным значение 0; если формула
    при этом не выполнилась, значит, есть клоз вида (xi ).
    Присвоим тогда xi = 1 и опять, посмотрим не выполнилась
    ли формула.
    Это работает по простой причине: если уж мы присвоили
    значение 1 какой-то переменной, значит, мы обязаны были
    это сделать.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   9 / 38
Содержание

1    Введение

2    Простые подклассы

3    Примеры свед´ний
                 е

4    Расщепление

5    Локальный поиск

6    Точные алгоритмы для MAX-2-SAT

7    Приближённый алгоритм для MAX-2-SAT


    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   10 / 38
Гамильтонов цикл
    В задаче о гамильтоновом цикле нужно проверить, есть ли в
    данном графе цикл, проходящий по каждой вершине ровно
    один раз.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   11 / 38
Гамильтонов цикл
    В задаче о гамильтоновом цикле нужно проверить, есть ли в
    данном графе цикл, проходящий по каждой вершине ровно
    один раз.
    Заведём n2 переменных: xij = true, если вершина i имеет
    номер j в гамильтоновом цикле.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   11 / 38
Гамильтонов цикл
    В задаче о гамильтоновом цикле нужно проверить, есть ли в
    данном графе цикл, проходящий по каждой вершине ровно
    один раз.
    Заведём n2 переменных: xij = true, если вершина i имеет
    номер j в гамильтоновом цикле.
    Клозы:




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   11 / 38
Гамильтонов цикл
    В задаче о гамильтоновом цикле нужно проверить, есть ли в
    данном графе цикл, проходящий по каждой вершине ровно
    один раз.
    Заведём n2 переменных: xij = true, если вершина i имеет
    номер j в гамильтоновом цикле.
    Клозы:
          В строке i стоит ровно одна единица:
                     (xi1 ∨ xi2 ∨ · · · ∨ xin ) (хотя бы одна единица)
                            {(¯ij ∨ xik )}j,k (не более одной)
                              x     ¯




 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи выполнимости   2-3 марта 2013   11 / 38
Гамильтонов цикл
    В задаче о гамильтоновом цикле нужно проверить, есть ли в
    данном графе цикл, проходящий по каждой вершине ровно
    один раз.
    Заведём n2 переменных: xij = true, если вершина i имеет
    номер j в гамильтоновом цикле.
    Клозы:
          В строке i стоит ровно одна единица:
                     (xi1 ∨ xi2 ∨ · · · ∨ xin ) (хотя бы одна единица)
                            {(¯ij ∨ xik )}j,k (не более одной)
                              x     ¯
          Аналогично про столбцы.




 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи выполнимости   2-3 марта 2013   11 / 38
Гамильтонов цикл
    В задаче о гамильтоновом цикле нужно проверить, есть ли в
    данном графе цикл, проходящий по каждой вершине ровно
    один раз.
    Заведём n2 переменных: xij = true, если вершина i имеет
    номер j в гамильтоновом цикле.
    Клозы:
          В строке i стоит ровно одна единица:
                     (xi1 ∨ xi2 ∨ · · · ∨ xin ) (хотя бы одна единица)
                            {(¯ij ∨ xik )}j,k (не более одной)
                              x     ¯
          Аналогично про столбцы.
          Каждые две последовательные вершины цикла соединены
          ребром: если (i, j) ̸∈ E , то они не могут быть
          последовательными:
                                        (¯ik ∨ xj(k+1) )
                                         x     ¯
 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи выполнимости   2-3 марта 2013   11 / 38
Максимальный разрез
    В задаче о максимальном разрезе нужно разделить вершины
    на две части так, чтобы как можно больше рёбер соединяли
    эти две части. Сводить будем к задаче максимальной
    выполнимости.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   12 / 38
Максимальный разрез
    В задаче о максимальном разрезе нужно разделить вершины
    на две части так, чтобы как можно больше рёбер соединяли
    эти две части. Сводить будем к задаче максимальной
    выполнимости.
    Для каждого ребра (i, j) ∈ E запишем пару клозов:

                                 (xi ∨ xj )(¯i ∨ xj )
                                            x ¯




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   12 / 38
Максимальный разрез
    В задаче о максимальном разрезе нужно разделить вершины
    на две части так, чтобы как можно больше рёбер соединяли
    эти две части. Сводить будем к задаче максимальной
    выполнимости.
    Для каждого ребра (i, j) ∈ E запишем пару клозов:

                                 (xi ∨ xj )(¯i ∨ xj )
                                            x ¯

    В полученной формуле будет 2|E | клозов.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   12 / 38
Максимальный разрез
    В задаче о максимальном разрезе нужно разделить вершины
    на две части так, чтобы как можно больше рёбер соединяли
    эти две части. Сводить будем к задаче максимальной
    выполнимости.
    Для каждого ребра (i, j) ∈ E запишем пару клозов:

                                 (xi ∨ xj )(¯i ∨ xj )
                                            x ¯

    В полученной формуле будет 2|E | клозов.
    Набору переменных естественным образом соответствует
    разрез в графе: в одну часть попадают вершины, которым
    присвоено значение true, в другую — все остальные.



 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   12 / 38
Максимальный разрез
    В задаче о максимальном разрезе нужно разделить вершины
    на две части так, чтобы как можно больше рёбер соединяли
    эти две части. Сводить будем к задаче максимальной
    выполнимости.
    Для каждого ребра (i, j) ∈ E запишем пару клозов:

                                 (xi ∨ xj )(¯i ∨ xj )
                                            x ¯

    В полученной формуле будет 2|E | клозов.
    Набору переменных естественным образом соответствует
    разрез в графе: в одну часть попадают вершины, которым
    присвоено значение true, в другую — все остальные.
    Если переменные в разных частях, то из двух клозов
    выполнены оба. Если в одной — то ровно один.
 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   12 / 38
Вершинное покрытие

    В задаче о вершинном покрытии нужно отметить в графе
    поменьше вершин так, чтобы у каждого ребра хотя бы один
    из концов был помечен.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   13 / 38
Вершинное покрытие

    В задаче о вершинном покрытии нужно отметить в графе
    поменьше вершин так, чтобы у каждого ребра хотя бы один
    из концов был помечен.
    Сведение чуть более хитрое, потому что теперь нужно,
    чтобы множество вершин было покрытием. Сводить будем
    опять к задаче максимальной выполнимости.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   13 / 38
Вершинное покрытие

    В задаче о вершинном покрытии нужно отметить в графе
    поменьше вершин так, чтобы у каждого ребра хотя бы один
    из концов был помечен.
    Сведение чуть более хитрое, потому что теперь нужно,
    чтобы множество вершин было покрытием. Сводить будем
    опять к задаче максимальной выполнимости.
    Для каждой вершины i запишем клоз (¯i ).
                                         x




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   13 / 38
Вершинное покрытие

    В задаче о вершинном покрытии нужно отметить в графе
    поменьше вершин так, чтобы у каждого ребра хотя бы один
    из концов был помечен.
    Сведение чуть более хитрое, потому что теперь нужно,
    чтобы множество вершин было покрытием. Сводить будем
    опять к задаче максимальной выполнимости.
    Для каждой вершины i запишем клоз (¯i ).
                                         x
    Для каждого ребра (i, j) ∈ E запишем клоз (xi ∨ xj ).




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   13 / 38
Вершинное покрытие

    В задаче о вершинном покрытии нужно отметить в графе
    поменьше вершин так, чтобы у каждого ребра хотя бы один
    из концов был помечен.
    Сведение чуть более хитрое, потому что теперь нужно,
    чтобы множество вершин было покрытием. Сводить будем
    опять к задаче максимальной выполнимости.
    Для каждой вершины i запишем клоз (¯i ).
                                           x
    Для каждого ребра (i, j) ∈ E запишем клоз (xi ∨ xj ).
    Ключевая идея: есть оптимальный набор значений, в
    котором все 2-клозы выполнены: если какой-то 2-клоз
    (xi ∨ xj ) не выполнен, изменим значение переменной xi ; при
    этом количество выполненных клозов не уменьшится.

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   13 / 38
Содержание

1    Введение

2    Простые подклассы

3    Примеры свед´ний
                 е

4    Расщепление

5    Локальный поиск

6    Точные алгоритмы для MAX-2-SAT

7    Приближённый алгоритм для MAX-2-SAT


    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   14 / 38
(w ∨ x ∨ y ∨ z), (w ∨ x), (x ∨ y ), (y ∨ z), (z ∨ w ), (w ∨ z)
                        w = 0                                                    w = 1
              (x ∨ y ∨ z), (x), (x ∨ y ), (y ∨ z)                   (x ∨ y ), (y ∨ z), (z), (z)
               x = 0                      x = 1                 z = 0                       z = 1
        (y ∨ z), (y ), (y ∨ z)         (), (y ∨ z)             (x ∨ y ), ()           (x ∨ y ), (y ), ()
        y =0            y =1
        (z), (z)          ()
z =0               z =1
   ()              ()




А. Куликов (ПОМИ РАН)            Алгоритмы для задачи выполнимости              2-3 марта 2013        15 / 38
Правила упрощения

Единичный клоз
Если формула содержит единичный клоз (unit clause), то
входящему в него литералу можно присвоить значение 1:
F = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (z ∨ ¬y ) ∧ (¬y ∨ ¬x ∨ ¬z)
F [x = 0] = (y ∨ ¬z) ∧ (z ∨ ¬y )




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   16 / 38
Правила упрощения

Единичный клоз
Если формула содержит единичный клоз (unit clause), то
входящему в него литералу можно присвоить значение 1:
F = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (z ∨ ¬y ) ∧ (¬y ∨ ¬x ∨ ¬z)
F [x = 0] = (y ∨ ¬z) ∧ (z ∨ ¬y )

Чистый литерал
Если формула содержит чистый литерал, то есть литерал,
отрицание которого не входит в формулу, то ему можно
присвоить значение 1:
F = (x ∨ y ∨ z) ∧ (¬x) ∧ (x ∨ ¬y ) ∧ (¬y ∨ ¬x ∨ z)
F [z = 1] = (¬x) ∧ (x ∨ ¬y )


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   16 / 38
Правила упрощения (продолжение)



Резолюция
Если F = F ′ ∧ (x ∨ C ) ∧ (¬x ∨ D) и F ′ не содержит ни x, ни ¬x,
заменить F на F ′ ∧ (C ∨ D).
    (x ∨ ¬y ∨ z) ∧ (¬z) ∧ (z ∨ u) ∧ (¬u ∨ x ) ∧ (y ∨ z)
                                            ¯
    ↔ (¬y ∨ z ∨ ¬u) ∧ (¬z) ∧ (z ∨ u) ∧ (y ∨ z)




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   17 / 38
Правила упрощения (продолжение)



Резолюция
Если F = F ′ ∧ (x ∨ C ) ∧ (¬x ∨ D) и F ′ не содержит ни x, ни ¬x,
заменить F на F ′ ∧ (C ∨ D).
    (x ∨ ¬y ∨ z) ∧ (¬z) ∧ (z ∨ u) ∧ (¬u ∨ x ) ∧ (y ∨ z)
                                            ¯
    ↔ (¬y ∨ z ∨ ¬u) ∧ (¬z) ∧ (z ∨ u) ∧ (y ∨ z)
    (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (x ∨ ¬y ) ∧ (¬y ∨ ¬x ∨ z)
    ↔ (¬x) ∧ (x ∨ ¬y )




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   17 / 38
Алгоритм

Алгоритм
DPLL-SAT(F )
   применять правила упрощения единичный клоз, чистый
   литерал и резолюция до тех пор, пока хотя бы одно из них
   применимо
   если F не содержит ни одного клоза, выдать “выполнима”
   если F содержит пустой клоз, выдать “невыполнима”
   если F содержит литерал, входящий в нее хотя бы два раза
   положительно и хотя бы два раза отрицательно, положить x
   равным этому литералу; в противном случае взять в
   качестве x любой литерал
   вернуть (DPLL-SAT(F [x = 1]) or DPLL-SAT(F [x = 0]))

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   18 / 38
Анализ

Лемма
Время работы алгоритма DPLL-SAT есть O * (1.415K ), где K —
кол-во клозов входной формулы.

Доказательство
    достаточно показать, что в каждой ветке удаляется хотя бы
    два клоза: T (K ) ≤ T (K − 2) + T (K − 2) + poly(K )




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   19 / 38
Анализ

Лемма
Время работы алгоритма DPLL-SAT есть O * (1.415K ), где K —
кол-во клозов входной формулы.

Доказательство
    достаточно показать, что в каждой ветке удаляется хотя бы
    два клоза: T (K ) ≤ T (K − 2) + T (K − 2) + poly(K )
    это ясно, если нашёлся литерал, который входит в формулу
    хотя бы дважды и положительно и отрицательно




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   19 / 38
Анализ

Лемма
Время работы алгоритма DPLL-SAT есть O * (1.415K ), где K —
кол-во клозов входной формулы.

Доказательство
    достаточно показать, что в каждой ветке удаляется хотя бы
    два клоза: T (K ) ≤ T (K − 2) + T (K − 2) + poly(K )
    это ясно, если нашёлся литерал, который входит в формулу
    хотя бы дважды и положительно и отрицательно
    назовём (i, j)-литералом литерал, входящий в формулу
    ровно i раз положительно и ровно j раз отрицательно


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   19 / 38
Доказательство (продолжение)



    ясно, что упрощённая формула не содержит (0, k)- и
    (k, 0)-литералов (это как раз чистые литералы), а также
    (1, 1)-литералов (они удаляются резольвированием)




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   20 / 38
Доказательство (продолжение)



    ясно, что упрощённая формула не содержит (0, k)- и
    (k, 0)-литералов (это как раз чистые литералы), а также
    (1, 1)-литералов (они удаляются резольвированием)
    значит, осталось рассмотреть случай, когда формула
    состоит только из (1, 2)- и (2, 1)-литералов




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   20 / 38
Доказательство (продолжение)

    рассмотрим произвольный литерал x:

                 F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . .




 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи выполнимости     2-3 марта 2013   21 / 38
Доказательство (продолжение)

    рассмотрим произвольный литерал x:

                 F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . .

    поскольку F не содержит единичных клозов, в клозе
    (¬x ∨ . . . ) есть еще хотя бы один литерал; назовем его y




 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи выполнимости     2-3 марта 2013   21 / 38
Доказательство (продолжение)

    рассмотрим произвольный литерал x:

                 F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . .

    поскольку F не содержит единичных клозов, в клозе
    (¬x ∨ . . . ) есть еще хотя бы один литерал; назовем его y
    в F [x = 0] y будет (2, 0)-, (0, 2)- или (1, 1)-литералом




 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи выполнимости     2-3 марта 2013   21 / 38
Доказательство (продолжение)

    рассмотрим произвольный литерал x:

                 F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . .

    поскольку F не содержит единичных клозов, в клозе
    (¬x ∨ . . . ) есть еще хотя бы один литерал; назовем его y
    в F [x = 0] y будет (2, 0)-, (0, 2)- или (1, 1)-литералом
    в любом из этих случаев y будет удален правилами
    упрощения, что повлечет за собой удаление хотя бы одного
    клоза




 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи выполнимости     2-3 марта 2013   21 / 38
Доказательство (продолжение)

    рассмотрим произвольный литерал x:

                 F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . .

    поскольку F не содержит единичных клозов, в клозе
    (¬x ∨ . . . ) есть еще хотя бы один литерал; назовем его y
    в F [x = 0] y будет (2, 0)-, (0, 2)- или (1, 1)-литералом
    в любом из этих случаев y будет удален правилами
    упрощения, что повлечет за собой удаление хотя бы одного
    клоза
    итак, и F [x = 1], и F [x = 0] (после упрощения) содержат
    хотя бы на два клоза меньше, чем F


 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи выполнимости     2-3 марта 2013   21 / 38
Содержание

1    Введение

2    Простые подклассы

3    Примеры свед´ний
                 е

4    Расщепление

5    Локальный поиск

6    Точные алгоритмы для MAX-2-SAT

7    Приближённый алгоритм для MAX-2-SAT


    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   22 / 38
Расстояние Хэмминга для наборов

    Набор истинностных значений переменным формулы — это
    последовательность битов длины n, где n — количество
    переменных формулы. Всего, таким образом, есть 2n
    различных наборов.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   23 / 38
Расстояние Хэмминга для наборов

    Набор истинностных значений переменным формулы — это
    последовательность битов длины n, где n — количество
    переменных формулы. Всего, таким образом, есть 2n
    различных наборов.
    Хэммингово расстояние двух наборов — количество
    переменных, которым эти наборы присваивают разные
    значения.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   23 / 38
Расстояние Хэмминга для наборов

    Набор истинностных значений переменным формулы — это
    последовательность битов длины n, где n — количество
    переменных формулы. Всего, таким образом, есть 2n
    различных наборов.
    Хэммингово расстояние двух наборов — количество
    переменных, которым эти наборы присваивают разные
    значения.
    Для набора t ∈ {0, 1}n и числа d под Хэмминговым шаром
    ℋ(t, d) (с центром в t и радиуса d) будем понимать
    множество всех наборов, находящихся на расстоянии не
    более чем d от t.


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   23 / 38
Поиск в шаре

Для формулы F в 3-КНФ поиск выполняющего набора в шаре
ℋ(t, d) может быть осуществлён за время 3d :
    если t не выполняет F , возьмём произвольный
    невыполненный клоз C = (x1 ∨ x2 ∨ x3 );




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   24 / 38
Поиск в шаре

Для формулы F в 3-КНФ поиск выполняющего набора в шаре
ℋ(t, d) может быть осуществлён за время 3d :
    если t не выполняет F , возьмём произвольный
    невыполненный клоз C = (x1 ∨ x2 ∨ x3 );
    рассмотрим три набора, полученных из t изменением
    значений переменных x1 , x2 и x3 ;




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   24 / 38
Поиск в шаре

Для формулы F в 3-КНФ поиск выполняющего набора в шаре
ℋ(t, d) может быть осуществлён за время 3d :
    если t не выполняет F , возьмём произвольный
    невыполненный клоз C = (x1 ∨ x2 ∨ x3 );
    рассмотрим три набора, полученных из t изменением
    значений переменных x1 , x2 и x3 ;
    хотя бы один из них будет ближе к выполняющему набору.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   24 / 38
Поиск в шаре

Для формулы F в 3-КНФ поиск выполняющего набора в шаре
ℋ(t, d) может быть осуществлён за время 3d :
    если t не выполняет F , возьмём произвольный
    невыполненный клоз C = (x1 ∨ x2 ∨ x3 );
    рассмотрим три набора, полученных из t изменением
    значений переменных x1 , x2 и x3 ;
    хотя бы один из них будет ближе к выполняющему набору.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   24 / 38
Поиск в шаре

Для формулы F в 3-КНФ поиск выполняющего набора в шаре
ℋ(t, d) может быть осуществлён за время 3d :
    если t не выполняет F , возьмём произвольный
    невыполненный клоз C = (x1 ∨ x2 ∨ x3 );
    рассмотрим три набора, полученных из t изменением
    значений переменных x1 , x2 и x3 ;
    хотя бы один из них будет ближе к выполняющему набору.


Алгоритм для 3-SAT со временем работы O * (3n/2 ): проверить,
есть ли выполняющий набор в шарах ℋ(0n , n/2), ℋ(1n , n/2).


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   24 / 38
Содержание

1    Введение

2    Простые подклассы

3    Примеры свед´ний
                 е

4    Расщепление

5    Локальный поиск

6    Точные алгоритмы для MAX-2-SAT

7    Приближённый алгоритм для MAX-2-SAT


    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   25 / 38
Задача о максимальном разрезе




Мы рассмотрим точный алгоритм в применении к частному
случаю задачи MAX-2-SAT — задаче о максимальном разрезе (в
которой требуется разбить множество вершин графа на две
части так, чтобы между ними было как можно больше рёбер).




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   26 / 38
Поиск треугольников в графе




Алгоритм будет основан на быстрой проверке наличия
треугольника (3-клики) в графе:




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   27 / 38
Поиск треугольников в графе




Алгоритм будет основан на быстрой проверке наличия
треугольника (3-клики) в графе: возведём матрицу смежности в
куб и посмотрим, есть ли на диагонали ненулевое число. Время
работы: O(nw ), где w ≈ 2.37 — экспонента умножения матриц.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   27 / 38
Основные идеи алгоритма



Дан граф G на n вершинах.
    Построим трёхдольный граф H на 3 · 2n/3 вершинах со
    следующим свойством: исходный граф G имеет разрез веса
    w тогда и только тогда, когда H содержит 3-клику веса w .
    Используем быстрое умножение матриц для поиска 3-клики.
    Время работы: 2 𝜔n/3 ≈ 1.732n .




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   28 / 38
Вспомогательный граф




            H                                           G




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   29 / 38
Вспомогательный граф

       это три части вершин исходного графа G




            H                                           G




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   29 / 38
Вспомогательный граф

это три доли вершин вспомогательного огромного графа H




              H                                           G




   А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   29 / 38
Вспомогательный граф

для каждого Xi ⊆ Vi создаём вершину в соответствующей доле H

                                        V1 ∖ X1

                                           X1

           X1
           H                                            G
                         V2 ∖ X2                        V3 ∖ X3

    X2             X3       X2                               X3




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости        2-3 марта 2013   29 / 38
Вспомогательный граф

              чему равен вес разреза X1 ∪ X2 ∪ X3 в G ?

                                        V1 ∖ X1

                                           X1

           X1
           H                                            G
                         V2 ∖ X2                        V3 ∖ X3

    X2             X3       X2                               X3




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости        2-3 марта 2013   29 / 38
Вспомогательный граф

              чему равен вес разреза X1 ∪ X2 ∪ X3 в G ?

                                        V1 ∖ X1

                                           X1

           X1
           H                                            G
                         V2 ∖ X2                        V3 ∖ X3

    X2             X3       X2                               X3




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости        2-3 марта 2013   29 / 38
Вспомогательный граф


                                        V1 ∖ X1

                                           X1

           X1
           H                                            G
                         V2 ∖ X2                        V3 ∖ X3

    X2             X3       X2                               X3




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости        2-3 марта 2013   29 / 38
Вспомогательный граф


                                        V1 ∖ X1

                                           X1

           X1
           H                                            G
                         V2 ∖ X2                        V3 ∖ X3

    X2             X3       X2                               X3




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости        2-3 марта 2013   29 / 38
Вспомогательный граф


                                        V1 ∖ X1

                                           X1

           X1
           H                                            G
                         V2 ∖ X2                        V3 ∖ X3

    X2             X3       X2                               X3




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости        2-3 марта 2013   29 / 38
Вспомогательный граф


                                        V1 ∖ X1

                                           X1

           X1
           H                                            G
                         V2 ∖ X2                        V3 ∖ X3

    X2             X3       X2                               X3

      итак, вес треугольника (H1 , H2 , H3 ) в H
      равен весу разреза X1 ∪ X2 ∪ X3 в G
 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости        2-3 марта 2013   29 / 38
Содержание

1    Введение

2    Простые подклассы

3    Примеры свед´ний
                 е

4    Расщепление

5    Локальный поиск

6    Точные алгоритмы для MAX-2-SAT

7    Приближённый алгоритм для MAX-2-SAT


    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   30 / 38
Положительно полуопределённые матрицы

Определение
Симметрическая матрица называется положительно
полуопределённой, если все её собственные числа
неотрицательны. Обозначение: A ⪰ 0.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   31 / 38
Положительно полуопределённые матрицы

Определение
Симметрическая матрица называется положительно
полуопределённой, если все её собственные числа
неотрицательны. Обозначение: A ⪰ 0.

Лемма
Симметрическая матрица A ∈ Rn×n является положительно
полуопределённой тогда и только тогда, когда A представима в
виде U T U для некоторой матрицы U ∈ Rn×n . Другими словами,
найдутся вектора u1 , . . . , un ∈ Rn (столбцы U), такие что
Aij = uiT uj .


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   31 / 38
Задача полуопределённого программирования
Задача полуопределённого программирования (ПП) похожа на
задачу линейного программирования (ЛП). Для задачи ЛП
существует полиномиальный алгоритм. Для задачи ПП
существует алгоритм, находящий решение с аддитивной ошибкой
 𝜀 за время, полиномиальное от размера входных данных и от
log 1𝜀 .

                            ЛП                       ПП
    максимизировать c T x                            ⟨C , X ⟩
    при условии             aiT x ≤ bi               ⟨Ai , X ⟩ ≤ bi
                            x ≥0                     X ⪰0
    где                     x ∈ Rn , ai ∈ Rn         X ∈ Rn×n , Ai ∈ Rn×n
                            bi ∈ R                   bi ∈ R

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости      2-3 марта 2013   32 / 38
Формулировка задачи о максимальном разрезе
в виде целочисленной ПП

Сопоставим каждой вершине vi ∈ V число yi , где
                   {︃
                     −1, vi — белая вершина,
              yi =
                     1,  vi — чёрная вершина.

Тогда ребро (vi , vj ) принадлежит разрезу тогда и только тогда,
когда yi yj = −1. Величина же разреза вычисляется как
                                    ∑︁ 1 − yi yj
                         f (M) =                     wij .
                                     i<j
                                              2



 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   33 / 38
Релаксация


Будем искать оптимум на сфере большей размерности:

                              max            g ((v1 , . . . , vn )),
                         v1 ,...,vn ∈S n−1

где
                                                 ∑︁ 1 − v T vj
                                                                 i
                    g ((v1 , . . . , vn )) =                           wij ,
                                                  i<j
                                                             2

S n−1 — n-мерная единичная сфера. Ясно, что максимальное
значение является верхней оценкой на величину максимального
разреза.



 А. Куликов (ПОМИ РАН)     Алгоритмы для задачи выполнимости                   2-3 марта 2013   34 / 38
Возврат к 1 и -1

Рассмотрим решение (vi )i новой задачи. Проведем через начало
координат случайным образом гиперплоскость T размерности
n − 1, которая разделит пространство на два полупространства A
и B. После чего определим yi так:
                           {︃
                             1,   vi ∈ A,
                      yi =
                             −1, vi ∈ B.

Иначе говоря, выберем случайным образом вектор u ∈ S n и
построим yi так:         {︃
                           1,  u T vi ≥ 0,
                    yi =
                           −1, u T vi < 0.


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   35 / 38
𝜃




Гиперплоскость, проходящая через             Вероятность того, что случайно про-
начало координат, делит сферу на             ведённая через начало координат ги-
две части. Мы разбиваем вектора в            перплоскость разделит вектора, равна
соответствии с тем, в какую половину         отношению угла между ними и 𝜋.
этносительно этой гиперплоскости
эти вектора попали.

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости    2-3 марта 2013   36 / 38
∑︁ 1 − yi yj                ∑︁ 𝜃ij
                                     wij =           wij ,
                   i<j
                           2                  i<j
                                                  𝜋
                 ∑︁ 1 − v T vj                ∑︁ 1 − cos 𝜃ij
                               i
                                     wij =                   wij .
                 i<j
                           2                  i<j
                                                     2

                                                            arccos(x)/𝜋
       arccos(x)/𝜋                                            (1−x)/2

       (1 − x)/2                                            0.878
  1                                                   1.5


 0.5                                                   1


  0                                                   0.5
   −1     −0.5         0       0.5     1                −1      −0.5       0         0.5


А. Куликов (ПОМИ РАН)      Алгоритмы для задачи выполнимости        2-3 марта 2013     37 / 38
Спасибо!




      Спасибо за внимание!




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи выполнимости   2-3 марта 2013   38 / 38

More Related Content

PDF
20110409 quantum algorithms_vyali_lecture09
PDF
20110409 quantum algorithms_vyali_lecture09
DOC
2. Таблицы истинности. Эквивалентные высказывания
PDF
20110409 quantum algorithms_vyali_lecture10
PDF
Решение краевых задач методом конечных элементов
DOC
4. Законы логики. Упрощение формул
DOC
3. Составление таблиц истинности. Законы де моргана
PDF
УПРАВЛЕНИЕ ПО ВЫХОДУ ЛИНЕЙНЫМ ПАРАМЕТРИЧЕСКИ НЕОПРЕДЕЛЕННЫМ ОБЪЕКТОМ В УСЛОВИ...
20110409 quantum algorithms_vyali_lecture09
20110409 quantum algorithms_vyali_lecture09
2. Таблицы истинности. Эквивалентные высказывания
20110409 quantum algorithms_vyali_lecture10
Решение краевых задач методом конечных элементов
4. Законы логики. Упрощение формул
3. Составление таблиц истинности. Законы де моргана
УПРАВЛЕНИЕ ПО ВЫХОДУ ЛИНЕЙНЫМ ПАРАМЕТРИЧЕСКИ НЕОПРЕДЕЛЕННЫМ ОБЪЕКТОМ В УСЛОВИ...

What's hot (20)

PDF
Сплайн интерполяция
PDF
Методы численного интегрирования
PPSX
Nf games
PPT
20120309 formal semantics shilov_lecture06
PDF
Основы комбинаторики - II
PDF
20111202 machine learning_nikolenko_lecture04
PDF
Soboland Sat
PDF
Get Ft
PDF
Численное решение ОДУ. Метод Эйлера
PPTX
Лекция 7. Алгоритмы
PDF
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
PDF
20110409 quantum algorithms_vyali_lecture08
PDF
20110409 quantum algorithms_vyali_lecture08
PDF
20111120 circuit complexity_seminar_lecture09_alexeenko
PDF
Линейная алгебра - I
PDF
20091108 algorithmsfornphardproblems kulikov_lecture07
PDF
Решение систем линейных уравнений: трехдиагональные, симметричные и положител...
PDF
Линейная алгебра - II
PDF
Метод конечных разностей
PDF
Итерационные методы решения СЛАУ
Сплайн интерполяция
Методы численного интегрирования
Nf games
20120309 formal semantics shilov_lecture06
Основы комбинаторики - II
20111202 machine learning_nikolenko_lecture04
Soboland Sat
Get Ft
Численное решение ОДУ. Метод Эйлера
Лекция 7. Алгоритмы
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
20110409 quantum algorithms_vyali_lecture08
20110409 quantum algorithms_vyali_lecture08
20111120 circuit complexity_seminar_lecture09_alexeenko
Линейная алгебра - I
20091108 algorithmsfornphardproblems kulikov_lecture07
Решение систем линейных уравнений: трехдиагональные, симметричные и положител...
Линейная алгебра - II
Метод конечных разностей
Итерационные методы решения СЛАУ
Ad

Similar to 20130302 np algorithms_kulikov_lecture04-05_sat (10)

PDF
20071202 efficientalgorithms kulikov_lecture11
PDF
20130301 np algorithms_kulikov_lecture01_np
PDF
20091025 algorithmsfornphardproblems kulikov_lecture04
PPT
Analysis
PDF
20091108 algorithmsfornphardproblems kulikov_lecture08
PDF
20091025 algorithmsfornphardproblems kulikov_lecture03
PDF
20101007 proof complexity_hirsch_lecture04
PDF
вссда2012 2
PPT
Лекция 10 NP-полнота
PDF
20081116 structuralcomplexitytheory lecture09-10
20071202 efficientalgorithms kulikov_lecture11
20130301 np algorithms_kulikov_lecture01_np
20091025 algorithmsfornphardproblems kulikov_lecture04
Analysis
20091108 algorithmsfornphardproblems kulikov_lecture08
20091025 algorithmsfornphardproblems kulikov_lecture03
20101007 proof complexity_hirsch_lecture04
вссда2012 2
Лекция 10 NP-полнота
20081116 structuralcomplexitytheory lecture09-10
Ad

More from Computer Science Club (20)

PDF
20141223 kuznetsov distributed
PDF
Computer Vision
PDF
20140531 serebryany lecture01_fantastic_cpp_bugs
PDF
20140531 serebryany lecture02_find_scary_cpp_bugs
PDF
20140531 serebryany lecture01_fantastic_cpp_bugs
PDF
20140511 parallel programming_kalishenko_lecture12
PDF
20140427 parallel programming_zlobin_lecture11
PDF
20140420 parallel programming_kalishenko_lecture10
PDF
20140413 parallel programming_kalishenko_lecture09
PDF
20140329 graph drawing_dainiak_lecture02
PDF
20140329 graph drawing_dainiak_lecture01
PDF
20140310 parallel programming_kalishenko_lecture03-04
PDF
20140223-SuffixTrees-lecture01-03
PDF
20140216 parallel programming_kalishenko_lecture01
PDF
20131106 h10 lecture6_matiyasevich
PDF
20131027 h10 lecture5_matiyasevich
PDF
20131027 h10 lecture5_matiyasevich
PDF
20131013 h10 lecture4_matiyasevich
PDF
20131006 h10 lecture3_matiyasevich
PDF
20131006 h10 lecture3_matiyasevich
20141223 kuznetsov distributed
Computer Vision
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
20140511 parallel programming_kalishenko_lecture12
20140427 parallel programming_zlobin_lecture11
20140420 parallel programming_kalishenko_lecture10
20140413 parallel programming_kalishenko_lecture09
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture01
20140310 parallel programming_kalishenko_lecture03-04
20140223-SuffixTrees-lecture01-03
20140216 parallel programming_kalishenko_lecture01
20131106 h10 lecture6_matiyasevich
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
20131013 h10 lecture4_matiyasevich
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich

20130302 np algorithms_kulikov_lecture04-05_sat

  • 1. Алгоритмы для NP-трудных задач Лекции 4–5: Алгоритмы для задачи выполнимости Александр Куликов Петербургское отделение Математического института им. В. А. Стеклова Российская академия наук Computer Science клуб в Екатеринбурге 2-3 марта 2013 А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 1 / 38
  • 2. 1 Введение 2 Простые подклассы 3 Примеры свед´ний е 4 Расщепление 5 Локальный поиск 6 Точные алгоритмы для MAX-2-SAT 7 Приближённый алгоритм для MAX-2-SAT А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 2 / 38
  • 3. Содержание 1 Введение 2 Простые подклассы 3 Примеры свед´ний е 4 Расщепление 5 Локальный поиск 6 Точные алгоритмы для MAX-2-SAT 7 Приближённый алгоритм для MAX-2-SAT А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 3 / 38
  • 4. Формулировка задачи Проверить, выполнима ли формула вида (x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) . А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 4 / 38
  • 5. Формулировка задачи Проверить, выполнима ли формула вида (x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) . Задача максимальной выполнимости: выполнить как можно больше клозов. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 4 / 38
  • 6. Важность http://www.satisfiability.org/ — The International Conferences on Theory and Applications of Satisfiability Testing. http://www.satcompetition.org/ — The international SAT Competitions web page. http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on Satisfiability, Boolean Modeling and Computation. http://www.satlib.org/ — The Satisfiability Library. http://www.satlive.org/ — Up-to-date links for the Satisfiability Problem. http://www.qbflib.org/ — The Quantified Boolean Formulas Satisfiability Library. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 5 / 38
  • 7. Содержание 1 Введение 2 Простые подклассы 3 Примеры свед´ний е 4 Расщепление 5 Локальный поиск 6 Точные алгоритмы для MAX-2-SAT 7 Приближённый алгоритм для MAX-2-SAT А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 6 / 38
  • 8. Простые подклассы Задача выполнимости NP-полна. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 7 / 38
  • 9. Простые подклассы Задача выполнимости NP-полна. В частности, многие NP-трудные задачи очень просто и естественно формулируются в терминах выполнимости. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 7 / 38
  • 10. Простые подклассы Задача выполнимости NP-полна. В частности, многие NP-трудные задачи очень просто и естественно формулируются в терминах выполнимости. Это, однако, не исключает того, что бывают простые формулы. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 7 / 38
  • 11. 2-SAT В задаче 2-выполнимости каждый клоз входной формулы содержит не более двух литералов. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 8 / 38
  • 12. 2-SAT В задаче 2-выполнимости каждый клоз входной формулы содержит не более двух литералов. Идея: клоз (x ∨ y ) говорит нам, что нельзя одновременно присваивать значение 0 литералам x и y . Ровно о том же самом нас просят импликации (¯ ⇒ y ) и (¯ ⇒ x). x y А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 8 / 38
  • 13. 2-SAT В задаче 2-выполнимости каждый клоз входной формулы содержит не более двух литералов. Идея: клоз (x ∨ y ) говорит нам, что нельзя одновременно присваивать значение 0 литералам x и y . Ровно о том же самом нас просят импликации (¯ ⇒ y ) и (¯ ⇒ x). x y Заведём граф на вершинах {x1 , x2 , . . . , x1 , x2 , . . . }. Если в ¯ ¯ исходной формуле есть клоз (xi ∨ xj ), проведём рёбра xi → xj ¯ и xj → xi . ¯ А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 8 / 38
  • 14. 2-SAT В задаче 2-выполнимости каждый клоз входной формулы содержит не более двух литералов. Идея: клоз (x ∨ y ) говорит нам, что нельзя одновременно присваивать значение 0 литералам x и y . Ровно о том же самом нас просят импликации (¯ ⇒ y ) и (¯ ⇒ x). x y Заведём граф на вершинах {x1 , x2 , . . . , x1 , x2 , . . . }. Если в ¯ ¯ исходной формуле есть клоз (xi ∨ xj ), проведём рёбра xi → xj ¯ и xj → xi . ¯ В полученном графе найдём компоненты сильной связности. Если хотя бы в одной из них содержатся xi и xi , то формула ¯ невыполнима. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 8 / 38
  • 15. 2-SAT В задаче 2-выполнимости каждый клоз входной формулы содержит не более двух литералов. Идея: клоз (x ∨ y ) говорит нам, что нельзя одновременно присваивать значение 0 литералам x и y . Ровно о том же самом нас просят импликации (¯ ⇒ y ) и (¯ ⇒ x). x y Заведём граф на вершинах {x1 , x2 , . . . , x1 , x2 , . . . }. Если в ¯ ¯ исходной формуле есть клоз (xi ∨ xj ), проведём рёбра xi → xj ¯ и xj → xi . ¯ В полученном графе найдём компоненты сильной связности. Если хотя бы в одной из них содержатся xi и xi , то формула ¯ невыполнима. В противном случае линеаризуем компоненты и выполним формулу. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 8 / 38
  • 16. Horn SAT Формулы Хорна: в каждом клозе не более одного положительного литерала. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 9 / 38
  • 17. Horn SAT Формулы Хорна: в каждом клозе не более одного положительного литерала. Идея: присвоим всем переменным значение 0; если формула при этом не выполнилась, значит, есть клоз вида (xi ). А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 9 / 38
  • 18. Horn SAT Формулы Хорна: в каждом клозе не более одного положительного литерала. Идея: присвоим всем переменным значение 0; если формула при этом не выполнилась, значит, есть клоз вида (xi ). Присвоим тогда xi = 1 и опять, посмотрим не выполнилась ли формула. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 9 / 38
  • 19. Horn SAT Формулы Хорна: в каждом клозе не более одного положительного литерала. Идея: присвоим всем переменным значение 0; если формула при этом не выполнилась, значит, есть клоз вида (xi ). Присвоим тогда xi = 1 и опять, посмотрим не выполнилась ли формула. Это работает по простой причине: если уж мы присвоили значение 1 какой-то переменной, значит, мы обязаны были это сделать. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 9 / 38
  • 20. Содержание 1 Введение 2 Простые подклассы 3 Примеры свед´ний е 4 Расщепление 5 Локальный поиск 6 Точные алгоритмы для MAX-2-SAT 7 Приближённый алгоритм для MAX-2-SAT А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 10 / 38
  • 21. Гамильтонов цикл В задаче о гамильтоновом цикле нужно проверить, есть ли в данном графе цикл, проходящий по каждой вершине ровно один раз. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 11 / 38
  • 22. Гамильтонов цикл В задаче о гамильтоновом цикле нужно проверить, есть ли в данном графе цикл, проходящий по каждой вершине ровно один раз. Заведём n2 переменных: xij = true, если вершина i имеет номер j в гамильтоновом цикле. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 11 / 38
  • 23. Гамильтонов цикл В задаче о гамильтоновом цикле нужно проверить, есть ли в данном графе цикл, проходящий по каждой вершине ровно один раз. Заведём n2 переменных: xij = true, если вершина i имеет номер j в гамильтоновом цикле. Клозы: А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 11 / 38
  • 24. Гамильтонов цикл В задаче о гамильтоновом цикле нужно проверить, есть ли в данном графе цикл, проходящий по каждой вершине ровно один раз. Заведём n2 переменных: xij = true, если вершина i имеет номер j в гамильтоновом цикле. Клозы: В строке i стоит ровно одна единица: (xi1 ∨ xi2 ∨ · · · ∨ xin ) (хотя бы одна единица) {(¯ij ∨ xik )}j,k (не более одной) x ¯ А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 11 / 38
  • 25. Гамильтонов цикл В задаче о гамильтоновом цикле нужно проверить, есть ли в данном графе цикл, проходящий по каждой вершине ровно один раз. Заведём n2 переменных: xij = true, если вершина i имеет номер j в гамильтоновом цикле. Клозы: В строке i стоит ровно одна единица: (xi1 ∨ xi2 ∨ · · · ∨ xin ) (хотя бы одна единица) {(¯ij ∨ xik )}j,k (не более одной) x ¯ Аналогично про столбцы. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 11 / 38
  • 26. Гамильтонов цикл В задаче о гамильтоновом цикле нужно проверить, есть ли в данном графе цикл, проходящий по каждой вершине ровно один раз. Заведём n2 переменных: xij = true, если вершина i имеет номер j в гамильтоновом цикле. Клозы: В строке i стоит ровно одна единица: (xi1 ∨ xi2 ∨ · · · ∨ xin ) (хотя бы одна единица) {(¯ij ∨ xik )}j,k (не более одной) x ¯ Аналогично про столбцы. Каждые две последовательные вершины цикла соединены ребром: если (i, j) ̸∈ E , то они не могут быть последовательными: (¯ik ∨ xj(k+1) ) x ¯ А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 11 / 38
  • 27. Максимальный разрез В задаче о максимальном разрезе нужно разделить вершины на две части так, чтобы как можно больше рёбер соединяли эти две части. Сводить будем к задаче максимальной выполнимости. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 12 / 38
  • 28. Максимальный разрез В задаче о максимальном разрезе нужно разделить вершины на две части так, чтобы как можно больше рёбер соединяли эти две части. Сводить будем к задаче максимальной выполнимости. Для каждого ребра (i, j) ∈ E запишем пару клозов: (xi ∨ xj )(¯i ∨ xj ) x ¯ А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 12 / 38
  • 29. Максимальный разрез В задаче о максимальном разрезе нужно разделить вершины на две части так, чтобы как можно больше рёбер соединяли эти две части. Сводить будем к задаче максимальной выполнимости. Для каждого ребра (i, j) ∈ E запишем пару клозов: (xi ∨ xj )(¯i ∨ xj ) x ¯ В полученной формуле будет 2|E | клозов. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 12 / 38
  • 30. Максимальный разрез В задаче о максимальном разрезе нужно разделить вершины на две части так, чтобы как можно больше рёбер соединяли эти две части. Сводить будем к задаче максимальной выполнимости. Для каждого ребра (i, j) ∈ E запишем пару клозов: (xi ∨ xj )(¯i ∨ xj ) x ¯ В полученной формуле будет 2|E | клозов. Набору переменных естественным образом соответствует разрез в графе: в одну часть попадают вершины, которым присвоено значение true, в другую — все остальные. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 12 / 38
  • 31. Максимальный разрез В задаче о максимальном разрезе нужно разделить вершины на две части так, чтобы как можно больше рёбер соединяли эти две части. Сводить будем к задаче максимальной выполнимости. Для каждого ребра (i, j) ∈ E запишем пару клозов: (xi ∨ xj )(¯i ∨ xj ) x ¯ В полученной формуле будет 2|E | клозов. Набору переменных естественным образом соответствует разрез в графе: в одну часть попадают вершины, которым присвоено значение true, в другую — все остальные. Если переменные в разных частях, то из двух клозов выполнены оба. Если в одной — то ровно один. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 12 / 38
  • 32. Вершинное покрытие В задаче о вершинном покрытии нужно отметить в графе поменьше вершин так, чтобы у каждого ребра хотя бы один из концов был помечен. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 13 / 38
  • 33. Вершинное покрытие В задаче о вершинном покрытии нужно отметить в графе поменьше вершин так, чтобы у каждого ребра хотя бы один из концов был помечен. Сведение чуть более хитрое, потому что теперь нужно, чтобы множество вершин было покрытием. Сводить будем опять к задаче максимальной выполнимости. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 13 / 38
  • 34. Вершинное покрытие В задаче о вершинном покрытии нужно отметить в графе поменьше вершин так, чтобы у каждого ребра хотя бы один из концов был помечен. Сведение чуть более хитрое, потому что теперь нужно, чтобы множество вершин было покрытием. Сводить будем опять к задаче максимальной выполнимости. Для каждой вершины i запишем клоз (¯i ). x А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 13 / 38
  • 35. Вершинное покрытие В задаче о вершинном покрытии нужно отметить в графе поменьше вершин так, чтобы у каждого ребра хотя бы один из концов был помечен. Сведение чуть более хитрое, потому что теперь нужно, чтобы множество вершин было покрытием. Сводить будем опять к задаче максимальной выполнимости. Для каждой вершины i запишем клоз (¯i ). x Для каждого ребра (i, j) ∈ E запишем клоз (xi ∨ xj ). А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 13 / 38
  • 36. Вершинное покрытие В задаче о вершинном покрытии нужно отметить в графе поменьше вершин так, чтобы у каждого ребра хотя бы один из концов был помечен. Сведение чуть более хитрое, потому что теперь нужно, чтобы множество вершин было покрытием. Сводить будем опять к задаче максимальной выполнимости. Для каждой вершины i запишем клоз (¯i ). x Для каждого ребра (i, j) ∈ E запишем клоз (xi ∨ xj ). Ключевая идея: есть оптимальный набор значений, в котором все 2-клозы выполнены: если какой-то 2-клоз (xi ∨ xj ) не выполнен, изменим значение переменной xi ; при этом количество выполненных клозов не уменьшится. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 13 / 38
  • 37. Содержание 1 Введение 2 Простые подклассы 3 Примеры свед´ний е 4 Расщепление 5 Локальный поиск 6 Точные алгоритмы для MAX-2-SAT 7 Приближённый алгоритм для MAX-2-SAT А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 14 / 38
  • 38. (w ∨ x ∨ y ∨ z), (w ∨ x), (x ∨ y ), (y ∨ z), (z ∨ w ), (w ∨ z) w = 0 w = 1 (x ∨ y ∨ z), (x), (x ∨ y ), (y ∨ z) (x ∨ y ), (y ∨ z), (z), (z) x = 0 x = 1 z = 0 z = 1 (y ∨ z), (y ), (y ∨ z) (), (y ∨ z) (x ∨ y ), () (x ∨ y ), (y ), () y =0 y =1 (z), (z) () z =0 z =1 () () А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 15 / 38
  • 39. Правила упрощения Единичный клоз Если формула содержит единичный клоз (unit clause), то входящему в него литералу можно присвоить значение 1: F = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (z ∨ ¬y ) ∧ (¬y ∨ ¬x ∨ ¬z) F [x = 0] = (y ∨ ¬z) ∧ (z ∨ ¬y ) А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 16 / 38
  • 40. Правила упрощения Единичный клоз Если формула содержит единичный клоз (unit clause), то входящему в него литералу можно присвоить значение 1: F = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (z ∨ ¬y ) ∧ (¬y ∨ ¬x ∨ ¬z) F [x = 0] = (y ∨ ¬z) ∧ (z ∨ ¬y ) Чистый литерал Если формула содержит чистый литерал, то есть литерал, отрицание которого не входит в формулу, то ему можно присвоить значение 1: F = (x ∨ y ∨ z) ∧ (¬x) ∧ (x ∨ ¬y ) ∧ (¬y ∨ ¬x ∨ z) F [z = 1] = (¬x) ∧ (x ∨ ¬y ) А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 16 / 38
  • 41. Правила упрощения (продолжение) Резолюция Если F = F ′ ∧ (x ∨ C ) ∧ (¬x ∨ D) и F ′ не содержит ни x, ни ¬x, заменить F на F ′ ∧ (C ∨ D). (x ∨ ¬y ∨ z) ∧ (¬z) ∧ (z ∨ u) ∧ (¬u ∨ x ) ∧ (y ∨ z) ¯ ↔ (¬y ∨ z ∨ ¬u) ∧ (¬z) ∧ (z ∨ u) ∧ (y ∨ z) А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 17 / 38
  • 42. Правила упрощения (продолжение) Резолюция Если F = F ′ ∧ (x ∨ C ) ∧ (¬x ∨ D) и F ′ не содержит ни x, ни ¬x, заменить F на F ′ ∧ (C ∨ D). (x ∨ ¬y ∨ z) ∧ (¬z) ∧ (z ∨ u) ∧ (¬u ∨ x ) ∧ (y ∨ z) ¯ ↔ (¬y ∨ z ∨ ¬u) ∧ (¬z) ∧ (z ∨ u) ∧ (y ∨ z) (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (x ∨ ¬y ) ∧ (¬y ∨ ¬x ∨ z) ↔ (¬x) ∧ (x ∨ ¬y ) А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 17 / 38
  • 43. Алгоритм Алгоритм DPLL-SAT(F ) применять правила упрощения единичный клоз, чистый литерал и резолюция до тех пор, пока хотя бы одно из них применимо если F не содержит ни одного клоза, выдать “выполнима” если F содержит пустой клоз, выдать “невыполнима” если F содержит литерал, входящий в нее хотя бы два раза положительно и хотя бы два раза отрицательно, положить x равным этому литералу; в противном случае взять в качестве x любой литерал вернуть (DPLL-SAT(F [x = 1]) or DPLL-SAT(F [x = 0])) А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 18 / 38
  • 44. Анализ Лемма Время работы алгоритма DPLL-SAT есть O * (1.415K ), где K — кол-во клозов входной формулы. Доказательство достаточно показать, что в каждой ветке удаляется хотя бы два клоза: T (K ) ≤ T (K − 2) + T (K − 2) + poly(K ) А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 19 / 38
  • 45. Анализ Лемма Время работы алгоритма DPLL-SAT есть O * (1.415K ), где K — кол-во клозов входной формулы. Доказательство достаточно показать, что в каждой ветке удаляется хотя бы два клоза: T (K ) ≤ T (K − 2) + T (K − 2) + poly(K ) это ясно, если нашёлся литерал, который входит в формулу хотя бы дважды и положительно и отрицательно А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 19 / 38
  • 46. Анализ Лемма Время работы алгоритма DPLL-SAT есть O * (1.415K ), где K — кол-во клозов входной формулы. Доказательство достаточно показать, что в каждой ветке удаляется хотя бы два клоза: T (K ) ≤ T (K − 2) + T (K − 2) + poly(K ) это ясно, если нашёлся литерал, который входит в формулу хотя бы дважды и положительно и отрицательно назовём (i, j)-литералом литерал, входящий в формулу ровно i раз положительно и ровно j раз отрицательно А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 19 / 38
  • 47. Доказательство (продолжение) ясно, что упрощённая формула не содержит (0, k)- и (k, 0)-литералов (это как раз чистые литералы), а также (1, 1)-литералов (они удаляются резольвированием) А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 20 / 38
  • 48. Доказательство (продолжение) ясно, что упрощённая формула не содержит (0, k)- и (k, 0)-литералов (это как раз чистые литералы), а также (1, 1)-литералов (они удаляются резольвированием) значит, осталось рассмотреть случай, когда формула состоит только из (1, 2)- и (2, 1)-литералов А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 20 / 38
  • 49. Доказательство (продолжение) рассмотрим произвольный литерал x: F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . . А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 21 / 38
  • 50. Доказательство (продолжение) рассмотрим произвольный литерал x: F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . . поскольку F не содержит единичных клозов, в клозе (¬x ∨ . . . ) есть еще хотя бы один литерал; назовем его y А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 21 / 38
  • 51. Доказательство (продолжение) рассмотрим произвольный литерал x: F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . . поскольку F не содержит единичных клозов, в клозе (¬x ∨ . . . ) есть еще хотя бы один литерал; назовем его y в F [x = 0] y будет (2, 0)-, (0, 2)- или (1, 1)-литералом А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 21 / 38
  • 52. Доказательство (продолжение) рассмотрим произвольный литерал x: F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . . поскольку F не содержит единичных клозов, в клозе (¬x ∨ . . . ) есть еще хотя бы один литерал; назовем его y в F [x = 0] y будет (2, 0)-, (0, 2)- или (1, 1)-литералом в любом из этих случаев y будет удален правилами упрощения, что повлечет за собой удаление хотя бы одного клоза А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 21 / 38
  • 53. Доказательство (продолжение) рассмотрим произвольный литерал x: F = (x ∨ . . . ) ∧ (x ∨ . . . ) ∧ (¬x ∨ . . . ) ∧ . . . поскольку F не содержит единичных клозов, в клозе (¬x ∨ . . . ) есть еще хотя бы один литерал; назовем его y в F [x = 0] y будет (2, 0)-, (0, 2)- или (1, 1)-литералом в любом из этих случаев y будет удален правилами упрощения, что повлечет за собой удаление хотя бы одного клоза итак, и F [x = 1], и F [x = 0] (после упрощения) содержат хотя бы на два клоза меньше, чем F А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 21 / 38
  • 54. Содержание 1 Введение 2 Простые подклассы 3 Примеры свед´ний е 4 Расщепление 5 Локальный поиск 6 Точные алгоритмы для MAX-2-SAT 7 Приближённый алгоритм для MAX-2-SAT А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 22 / 38
  • 55. Расстояние Хэмминга для наборов Набор истинностных значений переменным формулы — это последовательность битов длины n, где n — количество переменных формулы. Всего, таким образом, есть 2n различных наборов. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 23 / 38
  • 56. Расстояние Хэмминга для наборов Набор истинностных значений переменным формулы — это последовательность битов длины n, где n — количество переменных формулы. Всего, таким образом, есть 2n различных наборов. Хэммингово расстояние двух наборов — количество переменных, которым эти наборы присваивают разные значения. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 23 / 38
  • 57. Расстояние Хэмминга для наборов Набор истинностных значений переменным формулы — это последовательность битов длины n, где n — количество переменных формулы. Всего, таким образом, есть 2n различных наборов. Хэммингово расстояние двух наборов — количество переменных, которым эти наборы присваивают разные значения. Для набора t ∈ {0, 1}n и числа d под Хэмминговым шаром ℋ(t, d) (с центром в t и радиуса d) будем понимать множество всех наборов, находящихся на расстоянии не более чем d от t. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 23 / 38
  • 58. Поиск в шаре Для формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d) может быть осуществлён за время 3d : если t не выполняет F , возьмём произвольный невыполненный клоз C = (x1 ∨ x2 ∨ x3 ); А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 24 / 38
  • 59. Поиск в шаре Для формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d) может быть осуществлён за время 3d : если t не выполняет F , возьмём произвольный невыполненный клоз C = (x1 ∨ x2 ∨ x3 ); рассмотрим три набора, полученных из t изменением значений переменных x1 , x2 и x3 ; А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 24 / 38
  • 60. Поиск в шаре Для формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d) может быть осуществлён за время 3d : если t не выполняет F , возьмём произвольный невыполненный клоз C = (x1 ∨ x2 ∨ x3 ); рассмотрим три набора, полученных из t изменением значений переменных x1 , x2 и x3 ; хотя бы один из них будет ближе к выполняющему набору. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 24 / 38
  • 61. Поиск в шаре Для формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d) может быть осуществлён за время 3d : если t не выполняет F , возьмём произвольный невыполненный клоз C = (x1 ∨ x2 ∨ x3 ); рассмотрим три набора, полученных из t изменением значений переменных x1 , x2 и x3 ; хотя бы один из них будет ближе к выполняющему набору. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 24 / 38
  • 62. Поиск в шаре Для формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d) может быть осуществлён за время 3d : если t не выполняет F , возьмём произвольный невыполненный клоз C = (x1 ∨ x2 ∨ x3 ); рассмотрим три набора, полученных из t изменением значений переменных x1 , x2 и x3 ; хотя бы один из них будет ближе к выполняющему набору. Алгоритм для 3-SAT со временем работы O * (3n/2 ): проверить, есть ли выполняющий набор в шарах ℋ(0n , n/2), ℋ(1n , n/2). А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 24 / 38
  • 63. Содержание 1 Введение 2 Простые подклассы 3 Примеры свед´ний е 4 Расщепление 5 Локальный поиск 6 Точные алгоритмы для MAX-2-SAT 7 Приближённый алгоритм для MAX-2-SAT А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 25 / 38
  • 64. Задача о максимальном разрезе Мы рассмотрим точный алгоритм в применении к частному случаю задачи MAX-2-SAT — задаче о максимальном разрезе (в которой требуется разбить множество вершин графа на две части так, чтобы между ними было как можно больше рёбер). А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 26 / 38
  • 65. Поиск треугольников в графе Алгоритм будет основан на быстрой проверке наличия треугольника (3-клики) в графе: А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 27 / 38
  • 66. Поиск треугольников в графе Алгоритм будет основан на быстрой проверке наличия треугольника (3-клики) в графе: возведём матрицу смежности в куб и посмотрим, есть ли на диагонали ненулевое число. Время работы: O(nw ), где w ≈ 2.37 — экспонента умножения матриц. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 27 / 38
  • 67. Основные идеи алгоритма Дан граф G на n вершинах. Построим трёхдольный граф H на 3 · 2n/3 вершинах со следующим свойством: исходный граф G имеет разрез веса w тогда и только тогда, когда H содержит 3-клику веса w . Используем быстрое умножение матриц для поиска 3-клики. Время работы: 2 𝜔n/3 ≈ 1.732n . А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 28 / 38
  • 68. Вспомогательный граф H G А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 69. Вспомогательный граф это три части вершин исходного графа G H G А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 70. Вспомогательный граф это три доли вершин вспомогательного огромного графа H H G А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 71. Вспомогательный граф для каждого Xi ⊆ Vi создаём вершину в соответствующей доле H V1 ∖ X1 X1 X1 H G V2 ∖ X2 V3 ∖ X3 X2 X3 X2 X3 А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 72. Вспомогательный граф чему равен вес разреза X1 ∪ X2 ∪ X3 в G ? V1 ∖ X1 X1 X1 H G V2 ∖ X2 V3 ∖ X3 X2 X3 X2 X3 А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 73. Вспомогательный граф чему равен вес разреза X1 ∪ X2 ∪ X3 в G ? V1 ∖ X1 X1 X1 H G V2 ∖ X2 V3 ∖ X3 X2 X3 X2 X3 А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 74. Вспомогательный граф V1 ∖ X1 X1 X1 H G V2 ∖ X2 V3 ∖ X3 X2 X3 X2 X3 А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 75. Вспомогательный граф V1 ∖ X1 X1 X1 H G V2 ∖ X2 V3 ∖ X3 X2 X3 X2 X3 А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 76. Вспомогательный граф V1 ∖ X1 X1 X1 H G V2 ∖ X2 V3 ∖ X3 X2 X3 X2 X3 А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 77. Вспомогательный граф V1 ∖ X1 X1 X1 H G V2 ∖ X2 V3 ∖ X3 X2 X3 X2 X3 итак, вес треугольника (H1 , H2 , H3 ) в H равен весу разреза X1 ∪ X2 ∪ X3 в G А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 29 / 38
  • 78. Содержание 1 Введение 2 Простые подклассы 3 Примеры свед´ний е 4 Расщепление 5 Локальный поиск 6 Точные алгоритмы для MAX-2-SAT 7 Приближённый алгоритм для MAX-2-SAT А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 30 / 38
  • 79. Положительно полуопределённые матрицы Определение Симметрическая матрица называется положительно полуопределённой, если все её собственные числа неотрицательны. Обозначение: A ⪰ 0. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 31 / 38
  • 80. Положительно полуопределённые матрицы Определение Симметрическая матрица называется положительно полуопределённой, если все её собственные числа неотрицательны. Обозначение: A ⪰ 0. Лемма Симметрическая матрица A ∈ Rn×n является положительно полуопределённой тогда и только тогда, когда A представима в виде U T U для некоторой матрицы U ∈ Rn×n . Другими словами, найдутся вектора u1 , . . . , un ∈ Rn (столбцы U), такие что Aij = uiT uj . А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 31 / 38
  • 81. Задача полуопределённого программирования Задача полуопределённого программирования (ПП) похожа на задачу линейного программирования (ЛП). Для задачи ЛП существует полиномиальный алгоритм. Для задачи ПП существует алгоритм, находящий решение с аддитивной ошибкой 𝜀 за время, полиномиальное от размера входных данных и от log 1𝜀 . ЛП ПП максимизировать c T x ⟨C , X ⟩ при условии aiT x ≤ bi ⟨Ai , X ⟩ ≤ bi x ≥0 X ⪰0 где x ∈ Rn , ai ∈ Rn X ∈ Rn×n , Ai ∈ Rn×n bi ∈ R bi ∈ R А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 32 / 38
  • 82. Формулировка задачи о максимальном разрезе в виде целочисленной ПП Сопоставим каждой вершине vi ∈ V число yi , где {︃ −1, vi — белая вершина, yi = 1, vi — чёрная вершина. Тогда ребро (vi , vj ) принадлежит разрезу тогда и только тогда, когда yi yj = −1. Величина же разреза вычисляется как ∑︁ 1 − yi yj f (M) = wij . i<j 2 А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 33 / 38
  • 83. Релаксация Будем искать оптимум на сфере большей размерности: max g ((v1 , . . . , vn )), v1 ,...,vn ∈S n−1 где ∑︁ 1 − v T vj i g ((v1 , . . . , vn )) = wij , i<j 2 S n−1 — n-мерная единичная сфера. Ясно, что максимальное значение является верхней оценкой на величину максимального разреза. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 34 / 38
  • 84. Возврат к 1 и -1 Рассмотрим решение (vi )i новой задачи. Проведем через начало координат случайным образом гиперплоскость T размерности n − 1, которая разделит пространство на два полупространства A и B. После чего определим yi так: {︃ 1, vi ∈ A, yi = −1, vi ∈ B. Иначе говоря, выберем случайным образом вектор u ∈ S n и построим yi так: {︃ 1, u T vi ≥ 0, yi = −1, u T vi < 0. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 35 / 38
  • 85. 𝜃 Гиперплоскость, проходящая через Вероятность того, что случайно про- начало координат, делит сферу на ведённая через начало координат ги- две части. Мы разбиваем вектора в перплоскость разделит вектора, равна соответствии с тем, в какую половину отношению угла между ними и 𝜋. этносительно этой гиперплоскости эти вектора попали. А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 36 / 38
  • 86. ∑︁ 1 − yi yj ∑︁ 𝜃ij wij = wij , i<j 2 i<j 𝜋 ∑︁ 1 − v T vj ∑︁ 1 − cos 𝜃ij i wij = wij . i<j 2 i<j 2 arccos(x)/𝜋 arccos(x)/𝜋 (1−x)/2 (1 − x)/2 0.878 1 1.5 0.5 1 0 0.5 −1 −0.5 0 0.5 1 −1 −0.5 0 0.5 А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 37 / 38
  • 87. Спасибо! Спасибо за внимание! А. Куликов (ПОМИ РАН) Алгоритмы для задачи выполнимости 2-3 марта 2013 38 / 38