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