Асимптотика (1-я пара, 2024/25 учебный год)
- [5 минут] Разбор вступительного теста
- Задача a2 + b2 + c2 + d2 = N : N4, N2, N3/2, N
- [15 минут] Информация о курсе
- Отчётность: по теории экзамен, по практике каждую неделю +1 контест, +1 порция теорзадач
- Как сдавать ДЗ: дедлайны жёсткие, контест в систему на c++, теорию в tex на почту
- Ссылки: Wiki, Telegram, материалы курса
- Обратите внимание на: не нужно списывать, вообще. Если у вас есть вопросы, сложности − обратитесь к преподавателям, к одногруппникам.
- Полезные ссылки: wiki , материалы курса алгоритмов , контакты препов (на wiki)
- [2 минут] Учимся задавать вопросы на примерах (лектор произносит утверждение, студенты не понимают, проявляют не понимание голосом)
- Алгоритм Карацубы работает за 1.58n
- Алгоритм Карацубы умножает многочлены: делаем 3 рекурсивных запуска от кусочков длины n/2
- Многочлены над вещественными числам умножаются за квадрат.
− Перерыв −
- [5 минут] Общие слова
- Что такое хороший алгоритм? Всегда работает, время, память, простота.
- Время работы, пример 1: зависит от размера входных данных; пример − поиск минимума в массиве; 4n: асимптотика, константа.
- 3GHz − 3 000 000 000 операций в секунду (на самом деле меньше, т.к. сложные операции). Питон ~= 106, C++ ~= 109.
- [15 минут] Асимптотика: базовые обозначения, определения, свойства
- Время работы, пример 2: for i, for j ≤ i .
- Определения (O, o, Ω, ω, Θ), уже здесь нужно сказать, что n = O(2n), 2n = O(n), n ≠ o(n), n = o(n2).
- Примеры: n и 2n+1, 2n и n2; O(Θ(O(f))), Θ(o(Θ(O(f)))), ...
- Свойства (транзитивность, связь определений друг с другом)
- Следствия: f ± o(f), nk от nk+1, многочлен от старшего члена.
- [10 минут] Примеры
- 5 циклов for, n5 / 5! (константа таки важна)
- Длинные числа, числа Фибоначчи на самом деле считаются за квадрат (договорённость, какие операции сколько работают)
- Найти все a2 + b2 = N двумя циклами (показываем два указателя)
- Для всех чисел от 1 до n сгенерить список делителей (nlogn, 2 цикла for, оцениваем сумму гармонического ряда).
− Перерыв −
- [15 минут] Умножение многочленов и чисел
- Умножение в столбик за O(nm), хранение чисел
- Многочлены ↔ числа, переносы
- Алгоритм Карацубы за O(n1.58)
- [25 минут] Главные теоремы
- [5 минут] Рекуррентность: примеры, T(n) = 2T(n/2) + n ; T(n) = T(n/2) + n ; T(n) = 3T(n/2) + n
- [15 минут] Рекуррентность: мастер теорема T(n) = aT(n/b) + nc. Доказательство времени работы Карацубы.
- [2 минут] Примеры на экспоненциальные соотношения: числа Фибоначчи, оценки 2n и 2n/2
- [15 минут] Теорема об экспоненциальных рекуррентных соотношениях T(n) = ∑i bi T(n-ai). Применение к числам Фибоначчи.
- [10 минут] Примеры асимптотик
- T(n) = 2T(n/2) + n, T(n) = 2T(n/2) + Cn, T(n) = 2T(n/2) + O(n)
- T(n) = T(n-1) + n
- T(n) = T(n-3) + T(n-3)
- T(n) = T(n-1) + T(n-2) + T(n-2)
- [2 минут] Формулировки: logan = O(nb), nb = O(cn)