Строки: хеши, суффиксный массив (22 апреля 2016)
- Хеши: теория
- В C++ есть встроенный
unordered_set<string>; hash<string>()
.
- Lm: сколько корней у случайного многочлена? Ответ: 1
- Всё-таки, нужна ли простота? По не простому модулю у многочлена может быть очень много корней. Пример: x32 ≡ 0(mod 232).
- Окончание доказательства:
- Случай не случайных строк (следствие из леммы 2) получаем "длина строки"/M
- Случай случайных строк (следствие из леммы 3) получаем 1/M
- Хеши: антихешовые тесты
- Строка Туэ-Морса (__builtin_popcount(i) mod 2, или рекурсивно: Sn = Sn-1 + not Sn-1). Оценка длины строки, чтобы была коллизия.
- Тест против (P,MOD)-хеша. Алгоритм Капуна.
--- Перерыв ---
- Хеши: использование
- Алгоритм Рабина-Карпа
- LCP хешами за [O(n), O(logn)]
- Наибольшая общая подстрока двух строк за O(nlogn).
- Суффиксный массив
- За O(n2logn) sort-ом
- За O(nlog2n) sort-ом с хешовым компаратором
- Решение суфф массивом задачи про поиск подстроки в тексте за O(|s|log|T|) и O(|s|+log|s|log|T|)