Фурье и длинка (17 мая 2016)
- Классы
- P, NP, NPc, NPh
- Decision problems, search problems (обозначение: тот же класс, с волной?)
- Определение сведения. Пример сведения: (что к чему?)
- Другие классы (определения): L, EXP, PSPACE
- Вероятностные алгоритмы
- Работает на всех входах. Вероятность по случайным битам, которые генерит сама программа.
- Las Vegas algorithm is a randomized algorithm that always gives correct results
- Monte Carlo algorithm is a randomized algorithm whose running time is deterministic, but whose output may be incorrect
- [wiki,Las Vegas] [wiki,Monte Carlo] [wiki,Randomized algorithm]
- Randomized algorithm: алгоритм всегда завершается корректно.
- Probablistic algorithm: алгоритм работает детерминированное время, ответ корректен с некоторой вероятностью
- Другая терминология Zero-Side-Error, One-Side-Error, Two-Side-Error
- Примеры #1. Лас-Вегас: найти число, которое встречается в массиве длины n хотя бы n/2 раз (probablistic algorithm)
- Примеры #2. QSort (randomized algorithm)
- Определяем классы RP, coRP, ZPP, BPP.
- Наши знания с приведёнными классами не связаны. Т.к. все наши вероятностные алгоритмы не помогают прийти в P или EXP из другого класса, они в рамках того же класса уменьшают время.
- Улучшаем алгоритмы
- Понижаем ошибку у RP
- Запускаем с будильником, получаем ZPP = RP ∩ coRP
- Примеры конкретных алгоритмов и структур данных
- Каргер-Штейн. Probablistic algorithm, понижение ошибки.
- Хеш-таблица. Randomized data structure, можем запускать с будильником, тогда структура будет нам иногда говорить "ой, не получилось добавить элемент"
- 3-List-Coloring за O(1.5n). Randomized algorithm, можем запускать с будильником, тогда получим Probablistic algorithm за O(1.5n).
- Что мы ещё прошли? Treap, Skip-List, Полиномиальные хеши без коллизий
- Что ещё пройдём? Факторизация, проверка на простоту, игра на дереве размера 232.