FFT (8-е апреля 2019)
- Разминка: число счастливых билетов из 2n цифр
- P(x) = (x0 + x1 + ... + xd)n, ответ = сумма квадратов коэффициентов P(x)
- N = dn ⇒ оно возведение в степень работает за O(Mul(N)) = O(NlogN)
- Разделяй и властвуй для интерполяции
- Ньютон: (x1...xn-1, y1...yn-1) → P(x) → P(x) + Q(x)/Q(xn)*(yn - P(xn)), где Q(x) = (x-x1)(x-x2)...(x-xn-1)
- Разделяй и властвуй: (x1...xn/2, y1...yn/2) → P(x) → P(x) + Q(x)*S(x), (x-x1)(x-x2)...(x-xn/2), а
значения S(x) в точках xn/2+1...xn вычисляются как S(xi) = (yi - P(xi)) / Q(xi)
- Закрепление: перевод числа из 2-ичной системы в 10-ичную
- Разделяй и властвуй: F(a1...an) = F(a1...an/2) + 2n/1F(an/2+1...an)
- CRC-32
- Один из вариантов хеширования последовательности бит a0, a1, ... an-1 - остаток от деления многочлена A(x)*xk на G(x),
где G(x) - специальный многочлен, и k = deg G.
- В CRC-32-IEEE-802.3 (используется в v.42, mpeg-2, png, POSIX cksum) k = 32, G(x) = 0xEDB88320 (32 бита).
- Вычисление взятия по модуля одним проходом за O(n) при w ≥ k
- Коды Рида-Соломона
- Пример 1: передать 1 бит по каналу, где любой 1 бит может быть заменён. 00, 11 - плохой код. 000, 111 - хороший.
- Пример 2: только проверка на корректность, без исправления ошибок. Передать xor.
- Пример 3: передать n бит. Код повторять три раза. Код частичные суммы.
- Критерий того, что при k ошибках всё можно однозначно декодировать: расстояния Хэмминга не менее 2k+1.
- Задача: хотим передать n слов из поля Fq, q > n, не более k ошибок.
- Какие бывают q? Чтобы было поле, q = pn. Поля простого размера - остатки по модулю. По pn - нужно найти неприводимый многочлен степени n над Fp.
- Входные данные - многочлен. Алгоритм кодирования - вычисление значений многочлена в произвольных n+2k точках xi.
- Корректность кодирования: у A1-A2 не более n-1 корней ⇒ у A1 и A2 значения хотя бы в 2k+1 точке различны
- Проверка наличия ошибок - интерполяция имеет степень не более n-1.
- Исправление ошибок: A(x) - входные данные, A'(x) - интерполяция переданного, E(x) = (x-xe1)...(x-xek) - многочлен ошибок. У B(x) = A(x)E(x) и A'(x)E(x) совпадают значения во всех n+2k точках. СЛАУ: неизвестные - коэффициенты B и E, каждая из n+2k точек даёт уравнение.
- Асимптотика декодирования. Гаусс O((n+k)3). Бэрликэмп-Мэсси O((n+k)2).
Автоматы (8-е апреля 2019)
- Определение детерминированного и недетерминированного.
- Детерминизация за O(2nΣ)
- Минимизация за O(n2Σ) (прообраз алгоритма Хопкрофта)