Рандомизированные алгоритмы (5 февраля 2024)
- Проверка на простоту
- Проверка на простоту, тест Ферма, 1/2 (Кармайкал, коррейтный тест за n1/3)
- Проверка на простоту, тест Миллера-Рабина, 3/4 (1977)
- BPP
- Определение (1/3 vs 2/3)
- Понижение ошибки: алгоритм и доказательство
- Как ещё можно применить случайные числа?
- Идеальное кодирование (x + random) mod M
- Пример с вычислением средней зарплатой без разглашения
- Общая тема: доказательства без разглашения данных (zero-knowledge-proofs).
- [skipped] 0.5-приближение к MAX-SAT (будет в практике)
- random walk
- Решение SAT за 3n/2 (детерминированно)
- Решение SAT за 3n/2 (рандомизированно): что дал рандом? упрощение реализации
- Решение SAT за 1.334n (рандомизированно)
- Пример из жизни: вы в незнакомом городе, хотите найти хорошую кафешку. (а) перебор окрестности, (б) random walk, (в) repeat random walk
- Алгебра многочленов и Шварц-Зиппель
- Лемма Шварца-Зиппеля: P(x) над F, Prx[P(x) = 0] ≤ deg P / |F|
- Самый простой пример: матрица Татта (1947)
- Пример посложнее (только описание, без решения): Гамильтонов путь в неорграфе за 1.657n (2010) (будет на 3-м курсе)
- random shuffle
- Как его получить: random shuffle через цикл for (все n! перестановок с равной вероятностью)
- Зачем он нужен? Дерево поиска, добавление данных в случайном порядоке.
- [skipped] Игра на дереве (будет в практике)
- k-путь за exp(k) через рандом