Введение в теорию сложности, часть 2 (5 февраля 2024)
- NP (nondeterministic polynomial time) - причём тут "недетерминированность"?
- Сведения, decision/search
- Практика: сведение L → SAT и применение SAT-solver
- Сведение: search → decision
- Размер максимальной клики (бинпоиск)
- Сама клика (фиксируем вершины по одной)
- SAT (фиксируем значения переменных по одной)
- Сведение: search 3-SAT → search k-INDEPENDENT (иногда то же сведение работает для search задач)
- Гипотезы
- Придумать время работы между полиномом и экспонентой (2sqrt(logn))
- Гипотезы: P ≠ NP, ETH, SETH (при этом есть 3-SAT за 1.3n и очевидный SAT за 2n)
- SETH ⇒ ETH ⇒ P ≠ NP (рассказать, как из ETH следует P ≠ NP, и почему для SETH ⇒ ETH сложнее, что такое спарсификация)
− Перерыв −
- Вероятностные алгоритмы: База
- Вероятностные алгоритмы (Probabilistic): Определение классов RP, coRP (работает на всех входах за полином, иногда ошибается)
- Вероятностные алгоритмы (Randomized): Определение класса ZPP. Работает всегда корректно, матожидание времение работы − полином.
- Отличие от детерминированных (есть подсказка = случайные биты, работает с некоторой вероятностью)
- Связь с недетерминированными (работает на половине подсказок)
- Понижение вероятности ошибки: p → pn
- Примеры
- Поиск числа, которое встречается в массиве больше половины раз: decision и search версии, RP и ZPP.
- k-я статистика и quick-sort (нам было сложно корректно выбрать медиану, что дал рандом? упрощение реализации)
- Пример алгоритма: 3-LIST-COLORING (подсказка − что выкинуть, работает на 2n из 3n подсказок)
- Поиск квадратичного невычета за O(log n).
- Проверка того, что AB = C: A(Bx) = Cx. Доказательство.
- Теорема: ZPP = RP ∩ coRP (можно запустить с будильником алгоритм из ZPP, а можно запускать по очереди алгоритмы из RP и coRP)
- Парадокс дней рождений и факторизация
- Сам парадокс. Оценка вероятностей в обе стороны.
- Факторизация: алгоритмы за корень, рандомизированный с gcd за корень.
- ро-эвристика Полларда для факторизации чисел.
− Перерыв −
- Сложность
- Теорема Левина: алгоритм для решения всех NP задач за околооптимальное время
- Класс PSPACE и вложение в NP. wiki
- Класс L (logn памяти). NL. Догадайтесь? wiki
- Реклама: path(a,b) за log2n бит памяти, ham-path за полином памяти
- Итого: L ⊂ NL ⊂ P ⊂ NP ⊂ PSPACE ⊂ EXP. Известно, что NL ≠ PSPACE, что P ≠ EXP. Но неизвестны все одинарные включения и, например, L =? NP.