1. Алгоритмы для NP-трудных задач
Лекция 10: Точные и FPT-алгоритмы
А. Куликов
Computer Science клуб при ПОМИ
http://logic.pdmi.ras.ru/∼infclub/
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 1 / 28
2. План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 2 / 28
3. План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 2 / 28
4. План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 2 / 28
5. Формула включений-исключений
План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 3 / 28
6. Формула включений-исключений
Формула включений-исключений
Лемма
Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч.
—
f (X ) = Y ⊆X g (Y ). Тогда
∑︁
g (X ) = (−1)|X −Y | f (Y ) .
Y ⊆X
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 4 / 28
7. Формула включений-исключений
Формула включений-исключений
Лемма
Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч.
—
f (X ) = Y ⊆X g (Y ). Тогда
∑︁
g (X ) = (−1)|X −Y | f (Y ) .
Y ⊆X
Доказательство
∑︁ ∑︁ ∑︁
(−1)|X −Y | f (Y ) = (−1)|X −Y | g (Z ) =
Y ⊆X Y ⊆X Z ⊆Y
∑︁ ∑︁
= g (Z ) (−1)|X −Y | = g (X )
Z ⊆X Z ⊆Y ⊆X
(последняя сумма равна 1, если Z = X , и нулю иначе).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 4 / 28
8. Формула включений-исключений Задача о гамильтоновом пути
План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 5 / 28
9. Формула включений-исключений Задача о гамильтоновом пути
Задача о гамильтоновом пути
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 6 / 28
10. Формула включений-исключений Задача о гамильтоновом пути
Задача о гамильтоновом пути
Формулировка задачи: необходимо проверить, есть ли в данном
графе простой путь, проходящий через все вершины,
начинающийся в заданной вершине s и заканчивающийся в
заданной вершине t.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 6 / 28
11. Формула включений-исключений Задача о гамильтоновом пути
Задача о гамильтоновом пути
Формулировка задачи: необходимо проверить, есть ли в данном
графе простой путь, проходящий через все вершины,
начинающийся в заданной вершине s и заканчивающийся в
заданной вершине t.
Для {s, t} ⊆ X ⊆ V обозначим через g (X ) количество путей (не
обязательно простых! путь может проходить по некоторым
вершинам несколько раз, а по некоторым вообще не проходить)
длины n − 1 из s в t, проходящих только по вершинам множества
X.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 6 / 28
12. Формула включений-исключений Задача о гамильтоновом пути
Задача о гамильтоновом пути
Формулировка задачи: необходимо проверить, есть ли в данном
графе простой путь, проходящий через все вершины,
начинающийся в заданной вершине s и заканчивающийся в
заданной вершине t.
Для {s, t} ⊆ X ⊆ V обозначим через g (X ) количество путей (не
обязательно простых! путь может проходить по некоторым
вершинам несколько раз, а по некоторым вообще не проходить)
длины n − 1 из s в t, проходящих только по вершинам множества
X.
Нетрудно видеть, что значение g (X ) содержится в строке s и
столбце t матрицы An−1 , где A — матрица смежности графа G [X ].
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 6 / 28
13. Формула включений-исключений Задача о гамильтоновом пути
Задача о гамильтоновом пути (продолжение)
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 7 / 28
14. Формула включений-исключений Задача о гамильтоновом пути
Задача о гамильтоновом пути (продолжение)
Пусть теперь f (X ) есть количество путей длины n − 1 из s в t,
проходящих по всем вершинам множества X . В частности, f (V )
есть количество гамильтоновых путей из s в t.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 7 / 28
15. Формула включений-исключений Задача о гамильтоновом пути
Задача о гамильтоновом пути (продолжение)
Пусть теперь f (X ) есть количество путей длины n − 1 из s в t,
проходящих по всем вершинам множества X . В частности, f (V )
есть количество гамильтоновых путей из s в t.
Тогда ∑︁
f (V ) = (−1)|V −Y | g (Y ) .
Y ⊆V
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 7 / 28
16. Формула включений-исключений Задача о гамильтоновом пути
Задача о гамильтоновом пути (продолжение)
Пусть теперь f (X ) есть количество путей длины n − 1 из s в t,
проходящих по всем вершинам множества X . В частности, f (V )
есть количество гамильтоновых путей из s в t.
Тогда ∑︁
f (V ) = (−1)|V −Y | g (Y ) .
Y ⊆V
Таким образом, количество гамильтоновых путей в графе может
быть найдено за время O * (2n ) и полиномиальную память.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 7 / 28
17. Формула включений-исключений Задача о количестве совершенных паросочетаний
План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 8 / 28
18. Формула включений-исключений Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 9 / 28
19. Формула включений-исключений Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний
Совершенным паросочетанием (perfect matching) графа
G = (V , E ) называется множество из n/2 ребер, содержащее
каждую вершину графа ровно один раз.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 9 / 28
20. Формула включений-исключений Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний
Совершенным паросочетанием (perfect matching) графа
G = (V , E ) называется множество из n/2 ребер, содержащее
каждую вершину графа ровно один раз.
Максимальное по размеру паросочетание в графе может быть
найдено за полиномиальное время.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 9 / 28
21. Формула включений-исключений Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний
Совершенным паросочетанием (perfect matching) графа
G = (V , E ) называется множество из n/2 ребер, содержащее
каждую вершину графа ровно один раз.
Максимальное по размеру паросочетание в графе может быть
найдено за полиномиальное время.
Мы рассмотрим задачу нахождения количества совершенных
паросочетаний графа. Наивный алгоритм требует времени
O * (2m ).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 9 / 28
22. Формула включений-исключений Задача о количестве совершенных паросочетаний
Алгоритм
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
23. Формула включений-исключений Задача о количестве совершенных паросочетаний
Алгоритм
Пусть f (Y ) есть количество способов покрыть все вершины Y ,
используя ровно n/2 ребер.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
24. Формула включений-исключений Задача о количестве совершенных паросочетаний
Алгоритм
Пусть f (Y ) есть количество способов покрыть все вершины Y ,
используя ровно n/2 ребер.
Тогда f (V ) — количество совершенных паросочетаний.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
25. Формула включений-исключений Задача о количестве совершенных паросочетаний
Алгоритм
Пусть f (Y ) есть количество способов покрыть все вершины Y ,
используя ровно n/2 ребер.
Тогда f (V ) — количество совершенных паросочетаний.
Пусть теперь g (Y ) есть количество способов выбрать n/2 рёбер
графа, все концы которых принадлежат множеству Y (но при
этом не обязательно покрывают все множество Y ).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
26. Формула включений-исключений Задача о количестве совершенных паросочетаний
Алгоритм
Пусть f (Y ) есть количество способов покрыть все вершины Y ,
используя ровно n/2 ребер.
Тогда f (V ) — количество совершенных паросочетаний.
Пусть теперь g (Y ) есть количество способов выбрать n/2 рёбер
графа, все концы которых принадлежат множеству Y (но при
этом не обязательно покрывают все множество Y ).
Поскольку для данного Y вычислить g (Y ) легко, получаем
алгоритм, находящий за время O * (2n ) количество совершенных
паросочетаний в графе.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
27. Формула включений-исключений Случай двудольного графа
План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 11 / 28
28. Формула включений-исключений Случай двудольного графа
Задача о количестве совершенных паросочетаний в
двудольном графе
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
29. Формула включений-исключений Случай двудольного графа
Задача о количестве совершенных паросочетаний в
двудольном графе
Для двудольных графов алгоритм можно ускорить.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
30. Формула включений-исключений Случай двудольного графа
Задача о количестве совершенных паросочетаний в
двудольном графе
Для двудольных графов алгоритм можно ускорить.
Пусть V = L ∪ R и |L| = |R| = n/2.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
31. Формула включений-исключений Случай двудольного графа
Задача о количестве совершенных паросочетаний в
двудольном графе
Для двудольных графов алгоритм можно ускорить.
Пусть V = L ∪ R и |L| = |R| = n/2.
Тогда для Y ⊆ R (а не Y ⊆ V ) определим g (Y ) как количество
способов выбрать n/2 ребер, используя все вершиын L и
некоторые вершины из Y .
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
32. Формула включений-исключений Случай двудольного графа
Задача о количестве совершенных паросочетаний в
двудольном графе
Для двудольных графов алгоритм можно ускорить.
Пусть V = L ∪ R и |L| = |R| = n/2.
Тогда для Y ⊆ R (а не Y ⊆ V ) определим g (Y ) как количество
способов выбрать n/2 ребер, используя все вершиын L и
некоторые вершины из Y .
Время работы будет O * (2n/2 ).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
33. Формула включений-исключений Случай двудольного графа
Пример
знак X 1 2 3 4 5 6 7 8 9 10 11 12
+ ∅
− {1}
− {2}
− {3}
+ {1, 3}
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 13 / 28
34. Сведение к простой задаче
План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 14 / 28
35. Сведение к простой задаче Задача о сумме подмножества
План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 15 / 28
36. Сведение к простой задаче Задача о сумме подмножества
Задача о сумме подмножества
Определение
Задача о сумме подмножества (subset-sum problem) заключается в
проверке существования среди данных n натуральных чисел b1 , . . . , bn
такого подмножества чисел, сумма которых равнялась бы заданному
числу B.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 16 / 28
37. Сведение к простой задаче Задача о сумме подмножества
Задача о сумме подмножества
Определение
Задача о сумме подмножества (subset-sum problem) заключается в
проверке существования среди данных n натуральных чисел b1 , . . . , bn
такого подмножества чисел, сумма которых равнялась бы заданному
числу B.
Замечание
Очевидный перебор требует времени 2n .
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 16 / 28
38. Сведение к простой задаче Задача о сумме подмножества
Лучший известный алгоритм
Алгоритм
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
39. Сведение к простой задаче Задача о сумме подмножества
Лучший известный алгоритм
Алгоритм
Запишем в массив размера 2n/2 все возможные суммы чисел
среди {b1 , . . . , bn/2 }.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
40. Сведение к простой задаче Задача о сумме подмножества
Лучший известный алгоритм
Алгоритм
Запишем в массив размера 2n/2 все возможные суммы чисел
среди {b1 , . . . , bn/2 }.
Отсортируем полученный массив.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
41. Сведение к простой задаче Задача о сумме подмножества
Лучший известный алгоритм
Алгоритм
Запишем в массив размера 2n/2 все возможные суммы чисел
среди {b1 , . . . , bn/2 }.
Отсортируем полученный массив.
Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
наличие числа B − S в массиве.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
42. Сведение к простой задаче Задача о сумме подмножества
Лучший известный алгоритм
Алгоритм
Запишем в массив размера 2n/2 все возможные суммы чисел
среди {b1 , . . . , bn/2 }.
Отсортируем полученный массив.
Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
наличие числа B − S в массиве.
Замечание
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
43. Сведение к простой задаче Задача о сумме подмножества
Лучший известный алгоритм
Алгоритм
Запишем в массив размера 2n/2 все возможные суммы чисел
среди {b1 , . . . , bn/2 }.
Отсортируем полученный массив.
Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
наличие числа B − S в массиве.
Замечание
Время работы — O * (2n/2 ).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
44. Сведение к простой задаче Задача о сумме подмножества
Лучший известный алгоритм
Алгоритм
Запишем в массив размера 2n/2 все возможные суммы чисел
среди {b1 , . . . , bn/2 }.
Отсортируем полученный массив.
Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
наличие числа B − S в массиве.
Замечание
Время работы — O * (2n/2 ).
Быстрее алгоритма неизвестно.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
45. Сведение к простой задаче Задача о сумме подмножества
Лучший известный алгоритм
Алгоритм
Запишем в массив размера 2n/2 все возможные суммы чисел
среди {b1 , . . . , bn/2 }.
Отсортируем полученный массив.
Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
наличие числа B − S в массиве.
Замечание
Время работы — O * (2n/2 ).
Быстрее алгоритма неизвестно.
Неизвестно и алгоритма, который бы работал быстрее чем 2n и
использовал лишь полиномиальную память.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
46. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 18 / 28
47. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Задача о табличной сумме
Определение
В задаче о табличной k-сумме (table-k sum problem) дана матрица
размера k × m натуральных чисел и число S и необходимо проверить,
можно ли выбрать из каждой строки матрицы ровно по одному числу
так, чтобы в сумме выбранные числа давали S.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
48. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Задача о табличной сумме
Определение
В задаче о табличной k-сумме (table-k sum problem) дана матрица
размера k × m натуральных чисел и число S и необходимо проверить,
можно ли выбрать из каждой строки матрицы ровно по одному числу
так, чтобы в сумме выбранные числа давали S.
Замечание
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
49. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Задача о табличной сумме
Определение
В задаче о табличной k-сумме (table-k sum problem) дана матрица
размера k × m натуральных чисел и число S и необходимо проверить,
можно ли выбрать из каждой строки матрицы ровно по одному числу
так, чтобы в сумме выбранные числа давали S.
Замечание
Очевидный перебор работает mk .
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
50. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Задача о табличной сумме
Определение
В задаче о табличной k-сумме (table-k sum problem) дана матрица
размера k × m натуральных чисел и число S и необходимо проверить,
можно ли выбрать из каждой строки матрицы ровно по одному числу
так, чтобы в сумме выбранные числа давали S.
Замечание
Очевидный перебор работает mk .
В алгоритме выше мы использовали алгоритм, решающий задачу
о табличной 2-сумме за время O(m log m).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
51. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Задача о табличной сумме
Определение
В задаче о табличной k-сумме (table-k sum problem) дана матрица
размера k × m натуральных чисел и число S и необходимо проверить,
можно ли выбрать из каждой строки матрицы ровно по одному числу
так, чтобы в сумме выбранные числа давали S.
Замечание
Очевидный перебор работает mk .
В алгоритме выше мы использовали алгоритм, решающий задачу
о табличной 2-сумме за время O(m log m).
Этот же алгоритм можно использовать для решения задачи о
табличной k-сумме за время O(m⌈k/2⌉ log m) и память O(m⌈k/2⌉ ).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
52. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Задача о 3-сумме
Определение
В задаче о k-сумме (k-sum problem) даны m натуральных чисел и
число S и требуется проверить, можно ли из них выбрать k так, чтобы
их сумма равнялась S.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 20 / 28
53. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Задача о 3-сумме
Определение
В задаче о k-сумме (k-sum problem) даны m натуральных чисел и
число S и требуется проверить, можно ли из них выбрать k так, чтобы
их сумма равнялась S.
Факт
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 20 / 28
54. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Задача о 3-сумме
Определение
В задаче о k-сумме (k-sum problem) даны m натуральных чисел и
число S и требуется проверить, можно ли из них выбрать k так, чтобы
их сумма равнялась S.
Факт
Существует алгоритм, решающий задачу о 3-сумме за время
O(m2 ).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 20 / 28
55. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Задача о 3-сумме
Определение
В задаче о k-сумме (k-sum problem) даны m натуральных чисел и
число S и требуется проверить, можно ли из них выбрать k так, чтобы
их сумма равнялась S.
Факт
Существует алгоритм, решающий задачу о 3-сумме за время
O(m2 ).
Известно большое количество геометрических задач, для каждой
из которых лучший известный алгоритм работает квадратичное
время и каждая из которых, содержит задачу о 3-сумме, как
частный случай, и этот частный случай интуитивно
представляется самым трудным.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 20 / 28
56. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Пример геометрической задачи
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 21 / 28
57. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Пример геометрической задачи
Пусть даны m точек на плоскости и требуется проверить, лежат
ли какие-нибудь три из них на одной прямой.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 21 / 28
58. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Пример геометрической задачи
Пусть даны m точек на плоскости и требуется проверить, лежат
ли какие-нибудь три из них на одной прямой.
Пересечением прямой y = ax + b и кривой y = f (x) = x 3 − Sx 2
являются корни уравнения x 3 − Sx 2 − ax − b = 0.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 21 / 28
59. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме
Пример геометрической задачи
Пусть даны m точек на плоскости и требуется проверить, лежат
ли какие-нибудь три из них на одной прямой.
Пересечением прямой y = ax + b и кривой y = f (x) = x 3 − Sx 2
являются корни уравнения x 3 − Sx 2 − ax − b = 0.
Значит, множество точек (a1 , f (a1 )), . . . , (am , f (am )) содержит три
точки (ax , f (ax )), (ay , f (ay )), (az , f (az )) на одной прямой тогда и
только тогда, когда ax + ay + az = S.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 21 / 28
60. Алгебраизация
План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 22 / 28
61. Алгебраизация Задача максимальной 2-выполнимости
План лекции
1 Формула включений-исключений
Задача о гамильтоновом пути
Задача о количестве совершенных паросочетаний
Задача о количестве совершенных паросочетаний в двудольном
графе
2 Сведение к простой задаче
Задача о сумме подмножества
Задачи о k-сумме и табличной k-сумме
3 Алгебраизация
Задача максимальной 2-выполнимости
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 23 / 28
62. Алгебраизация Задача максимальной 2-выполнимости
Алгебраизация
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 24 / 28
63. Алгебраизация Задача максимальной 2-выполнимости
Алгебраизация
Для набора значений переменным формулы
t = (t1 , . . . , tn ) ∈ {0, 1}n обозначим через N(t) количество
выполненных клозов данной формулы в 2-КНФ.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 24 / 28
64. Алгебраизация Задача максимальной 2-выполнимости
Алгебраизация
Для набора значений переменным формулы
t = (t1 , . . . , tn ) ∈ {0, 1}n обозначим через N(t) количество
выполненных клозов данной формулы в 2-КНФ.
Пусть ∑︁
G (w ) = w N(t) .
t∈{0,1}n
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 24 / 28
65. Алгебраизация Задача максимальной 2-выполнимости
Алгебраизация
Для набора значений переменным формулы
t = (t1 , . . . , tn ) ∈ {0, 1}n обозначим через N(t) количество
выполненных клозов данной формулы в 2-КНФ.
Пусть ∑︁
G (w ) = w N(t) .
t∈{0,1}n
Нас, таким образом, интересует степень этого многочлена.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 24 / 28
66. Алгебраизация Задача максимальной 2-выполнимости
Построение матриц
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 25 / 28
67. Алгебраизация Задача максимальной 2-выполнимости
Построение матриц
Разобьем переменные формулы на три часта A, B, C размера n/3.
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 25 / 28
68. Алгебраизация Задача максимальной 2-выполнимости
Построение матриц
Разобьем переменные формулы на три часта A, B, C размера n/3.
Для t = (a, b, c), где a, b, c ∈ {0, 1}n/3 ,
N(t) = NC (a, b) + NB (a, c) + NA (b, c) ,
где NC (a, b) есть количество клозов, которые не зависят от
переменных множества C и выполнены наборами a, b (оставшиеся
два слагаемых определяются аналогично).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 25 / 28
69. Алгебраизация Задача максимальной 2-выполнимости
Построение матриц
Разобьем переменные формулы на три часта A, B, C размера n/3.
Для t = (a, b, c), где a, b, c ∈ {0, 1}n/3 ,
N(t) = NC (a, b) + NB (a, c) + NA (b, c) ,
где NC (a, b) есть количество клозов, которые не зависят от
переменных множества C и выполнены наборами a, b (оставшиеся
два слагаемых определяются аналогично).
Определим матрицы NC , NB , NA размера 2n/3 × 2n/3 следующим
w w w
образом:
NC (a, b) = w NC (a,b) ,
w
NB (b, c) = w NB (b,c) ,
w w
NC (a, b) = w NC (a,b) .
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 25 / 28
70. Алгебраизация Задача максимальной 2-выполнимости
Вычисление многочлена
∑︁
G (w ) = w NC (a,b)+NB (a,c)+NA (b,c) =
a,b,c
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 26 / 28
71. Алгебраизация Задача максимальной 2-выполнимости
Вычисление многочлена
∑︁
G (w ) = w NC (a,b)+NB (a,c)+NA (b,c) =
a,b,c
∑︁
= w NC (a,b) w NB (a,c) w NA (b,c) =
a,b,c
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 26 / 28
72. Алгебраизация Задача максимальной 2-выполнимости
Вычисление многочлена
∑︁
G (w ) = w NC (a,b)+NB (a,c)+NA (b,c) =
a,b,c
∑︁
= w NC (a,b) w NB (a,c) w NA (b,c) =
a,b,c
∑︁ ∑︁
= w NB (a,c) w NC (a,b) w NA (b,c) =
a,c b
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 26 / 28
73. Алгебраизация Задача максимальной 2-выполнимости
Вычисление многочлена
∑︁
G (w ) = w NC (a,b)+NB (a,c)+NA (b,c) =
a,b,c
∑︁
= w NC (a,b) w NB (a,c) w NA (b,c) =
a,b,c
∑︁ ∑︁
= w NB (a,c) w NC (a,b) w NA (b,c) =
a,c b
∑︁
w w w
= NB (a, c)(NC NA )(a, c) .
a,c
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 26 / 28
74. Алгебраизация Задача максимальной 2-выполнимости
Итог
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 27 / 28
75. Алгебраизация Задача максимальной 2-выполнимости
Итог
Итак, полученный алгоритм требует времени O * 2������n/3 и O(22n/3 )
памяти (������ ≈ 2.38 — экспонента умножения матриц).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 27 / 28
76. Алгебраизация Задача максимальной 2-выполнимости
Итог
Итак, полученный алгоритм требует времени O * 2������n/3 и O(22n/3 )
памяти (������ ≈ 2.38 — экспонента умножения матриц).
Это лучше полного перебора по времени, но гораздо хуже по
памяти (time-space tradeoff).
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 27 / 28
77. Алгебраизация Задача максимальной 2-выполнимости
Спасибо за внимание!
А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 28 / 28