Асимптотический анализ и нотация Big O: Полное руководство
Фундаментальное руководство по оценке временной и пространственной сложности алгоритмов. От математических определений O, Ω, Θ, o, ω до иерархии классов сложности, амортизированного анализа, кеш-памяти процессора и практических правил олимпиадного программирования.
Исходная заготовка: полнота объяснения и примеров ожидает редакторской проверки.
Введение: Почему секунды обманчивы?
Физическое время работы программы в миллисекундах зависит от архитектуры процессора, языка реализации, компилятора и загруженности ОС. Чтобы сравнивать алгоритмы независимо от «железа», в Computer Science используют асимптотический анализ и нотацию Big O.
Big O описывает не точное время работы в секундах, а закон, по которому растёт число базовых операций программы при увеличении размера входных данных к бесконечности ().
Формальные математические обозначения: O, , , o,
1. Нотация Big O (Верхняя оценка / Worst-Case Bound)
Предельное определение: .
2. Нотация Big (Нижняя оценка / Best-Case Bound)
3. Нотация Big (Точная оценка / Tight Bound)
4. Строгие оценки: Малое и Малое
Иерархия классов сложности
| Класс сложности | Название | Пример алгоритма | Оценка при 29 |
|---|---|---|---|
| 30 | Константное | Доступ по индексу в массиве | 31 операция |
| 32 | Логарифмическое | Бинарный поиск | 33 операций |
| 34 | Линейное | Линейный поиск, поиск максимума | 35 операций (36 с) |
| 37 | Линейно-логарифмическое | MergeSort, QuickSort, HeapSort | 38 операций (39 с) |
| 40 | Квадратичное | BubbleSort, вложенные циклы | 41 операций (часы) |
| 42 | Экспоненциальное | Перебор всех подмножеств | Не завершится за время жизни Вселенной |
График асимптотической сложности Big O
Сравнение скорости роста функций времени $T(N)$ при увеличении размера данных $N$
Что дальше?
Закрепите материал задачей: Повторить число.
Изучено — к практике →Отметка сохранится в этом браузере. Её можно отменить или снять кнопкой «Изучено».