Рандомизированные алгоритмы (19 февраля 2018)
- База
- Вероятностные алгоритмы (Probabilistic): Определение классов RP, coRP (работает на всех входах за полином, иногда ошибается)
- Вероятностные алгоритмы (Randomized): Определение класса ZPP. Работает всегда корректно, матожидание времени работы − полином.
- Отличие от детерминированных (есть подсказка = случайные биты, работает с некоторой вероятностью)
- Связь с недетерминированными (работает на половине подсказок)
- Понижение вероятности ошибки: p → pn
- Примеры
- Поиск квадратичного невычета за O(log n).
- Проверка на простоту, тест Ферма, 1/2
- Проверка на простоту, тест Миллера-Рабина, 3/4 (1977)
- k-я статистика и quick-sort (нам было сложно корректно выбрать медиану, что дал рандом? упрощение реализации)
- Поиск числа, которое встречается в массиве больше половины раз: decision и search версии
- Пример алгоритма: 3-LIST-COLORING (подсказка − что выкинуть, работает на 2n из 3n подсказок)
- Проверка того, что AB = C: A(Bx) = Cx. Доказательство.
- Теорема: ZPP = RP ∩ coRP
- Док-во: можно запустить с будильником алгоритм из ZPP, а можно запускать по очереди алгоритмы из RP и coRP
- Теперь знаем про вложенность P → ZPP = RP ∩ coRP → ZPP → NP. Строгость вложений не знаем.
- BPP
- Определение (1/3 vs 2/3)
- Понижение ошибки: алгоритм и доказательство
− Перерыв −
- Как ещё можно применить случайные числа?
- Идеальное кодирование (x + random) mod M
- Пример с вычислением средней зарплатой без разглашения
- Общая тема: доказательства без разглашения данных (zero-knowledge-proofs). Лектор, который пытается не доказать, а убедить...
- 0.5-приближение к MAX-SAT (будет в практике)
- Парадокс дней рождений и факторизация
- Сам парадокс. Оценка вероятностей в обе стороны.
- Факторизация: алгоритмы за корень, рандомизированный с gcd за корень.
- ро-эвристика Полларда для факторизации чисел.
- random walk
- Решение SAT за 3n/2 (детерминированно)
- Решение SAT за 3n/2 (рандомизированно): что дал рандом? упрощение реализации
- Решение SAT за 1.333n (рандомизированно)
- Пример из жизни: вы в незнакомом городе, хотите найти хорошую кафешку. (а) перебор окрестности, (б) random walk, (в) repeat random walk
- Алгебра многочленов
- Лемма Шварца-Зиппеля: P(x) над F, Prx[P(x) = 0] ≤ deg P / |F|
- Самый простой пример: матрица Татта (1947)
- Пример по сложнее: Гамильтонов путь в неорграфе за 1.657n (2010) (будет на 3-м курсе в курсе алгоритмов для NP-трудных задач)
- random shuffle
- Как его получить: random shuffle через цикл for (все n! перестановок с равной вероятностью)
- Зачем он нужен? Дерево поиска, добавление данных в случайном порядке.