Факторизация (3-е апреля 2024)
- ♥ Метод Крайчика (алгоритм Диксона '1981)
- Тест ферма: u2 - v2 = 0, u2 - v2 ≡ 0 (mod n)
- xi = ceil(sqrt(n)) + i, yi = xi2 - n
- Алгоритм: найти z = ∏yij, являющееся точным квадратом, и скормить тесту Ферма ∏xij2 и z.
- Число точный квадрат ⇔ в разложении все степени чётны, выберем b-гладкие yi, факторизуем, полученные битовые вектора скормим Гауссу.
- Псевдокод: фиксируем число простых k (b = primek), перебираем yi, b-гладкие скармливаем инкрементальному Гауссу. Если очередная строка = линейная комбинация предыдущих, вызываем тест Ферма.
- Время работы: O(k3/w + mk)
- Оптимизируем Метод Крайчика в квадратичное решето (Carl Pomerance '1981)
- Гаусс → алгоритм Видеман за O(n * "число не нулевых элементов")
- Факторизация b-гладких yi → для каждого из простых решили квадратное уравнение (квадратичное решето)
- Извлечение корня: за O(p), за O(p1/2), за O(logp)
- Итоговое время работы O*(k2 + m), где (*) множитель, учитывающий длинность чисел.
- L-notation: L(a, b) = exp(a*logb*loglog1-b).
- Итоговое время алгоритма: при k↑ m↓, выбираем k2 = m, получаем esqrt(logn * loglogn) = L(1/2, 1)
- Решения лучше: L(1/3, (32/9)1/3) даёт SNFS (Special number field sieve), GNFS (general number field sieve)
- Матричные игры
- Детерминированные стратегии. Вероятностные стратегии.
- ♥ Оптимальная вероятностная стратегия: mini(∑aijxj) → max
- Записываем задачу через LP для первого и второго игроков. Проверяем, что задача второго двойственна задаче первого.
- Теорема Нэша для матричных игр (сильная теорема двойственности для уже записанных задач LP)
- [skipped] SDP
- [skipped] Упражнение: пересечение и полупространств и эллипсоидов методом эллипсоидов
- [skipped] Определение задачи SDP, связь с LP
- [skipped] Решение SDP методом Эллипсоидов
- [skipped] MAX-CUT : определение задачи, 0.5*OPT решение
- [skipped] MAX-CUT : сведение к SDP, получение OPT(SDP) ≥ OPT(MAX-CUT)
- [skipped] Релаксация решения SDP к решению MAX-CUT