Искусство игнорировать лишнее: как Big O помогает сравнивать Swap Sort и Merge Sort

MIT OpenCourseWare 7,9 тыс. 1 ч 18 мин 5 мин 22.07.2025
Главное

В лекции MIT OpenCourseWare профессор Закари Абель завершает обсуждение математических сумм и переходит к асимптотическому анализу — фундаментальному инструменту оценки алгоритмов. Наглядная демонстрация с физическими блоками и разбор классических функций роста позволяют понять, почему в Computer Science принято игнорировать константы и как математически строго сравнивать эффективность программного кода.

🧱 Головоломка с блоками и гармонические числа 0:38

Закари Абель начинает занятие с демонстрации физического эксперимента: как далеко можно выдвинуть стопку блоков за край стола, чтобы она не упала . Используя «жадную стратегию» — сдвиг каждого верхнего слоя до центра масс — профессор показывает, что верхний блок может полностью находиться вне проекции стола . По словам Абеля, эта стратегия является математически оптимальной, хотя физическая реализация ограничена масштабами .

Математическая модель этого процесса описывается следующими фактами:

Гармоническое число $H_n$ определяется как сумма последовательности $1 + 1/2 + 1/3 + \dots + 1/n$. Для оценки этой суммы Абель применяет интегральный метод, доказывая, что значение $H_n$ зажато между $\ln(n) + 1/n$ и $\ln(n) + 1$ . Профессор отмечает забавный физический парадокс: чтобы выдвинуть стопку блоков на расстояние 10 длин от стола, потребуется около 400 миллиардов блоков . Высота такой стопки в 40 раз превысит расстояние до Луны, что делает задачу математически возможной, но физически невыполнимой .

📈 Асимптотическая эквивалентность и факториалы 10:03

Для более точного описания приближений вводится понятие асимптотической эквивалентности ($\sim$). По определению Абеля, функции $f(n)$ и $g(n)$ асимптотически эквивалентны, если предел их отношения при $n$, стремящемся к бесконечности, равен 1 . Так, гармоническое число $H_n$ асимптотически эквивалентно натуральному логарифму $\ln(n)$ .

Этот же подход применим к анализу произведений, таких как факториал ($n!$). Профессор объясняет, что анализ произведений проще всего проводить, превращая их в суммы через логарифмирование :

Для более точных вычислений Абель рекомендует использовать формулу Стирлинга, согласно которой $n!$ асимптотически эквивалентен выражению $\sqrt{2\pi n} \cdot (n/e)^n$ . Существует и еще более строгая оценка, включающая множитель $e^{1/12n}$, которая позволяет оценивать погрешность даже для небольших значений $n$ .

⚖️ Сравнение алгоритмов: Swap Sort против Merge Sort 20:19

Переходя к практическому применению математики в IT, профессор сравнивает два алгоритма сортировки:

  1. Swap Sort (сортировка обменами): Количество операций в худшем случае составляет примерно $n^2/2 - n/2$ .
  2. Merge Sort (сортировка слиянием): Количество сравнений ограничено величиной $n \log_2 n - n + 1$ .

Абель демонстрирует «ай-трекер» (фокус внимания) разработчика при взгляде на эти формулы. По его мнению, при работе с «большими данными» (миллионы или миллиарды элементов) второстепенные члены и константы становятся «ошибкой округления» .

Причины, по которым константы игнорируются в асимптотическом анализе:

🅾️ Математика Big O: правила и определения 32:01

Центральной темой лекции становится нотация Big O ($O$). Абель подчеркивает, что интуитивно запись $f(n) \in O(g(n))$ означает, что функция $f$ растет не быстрее, чем $g$, если игнорировать константы и малые значения $n$ .

Формальное определение Big O требует существования двух положительных констант — $C$ и $n_0$ — таких, что для всех $n \ge n_0$ выполняется неравенство $|f(n)| \le C \cdot |g(n)|$ . Профессор поясняет роль этих констант:

Примеры применения нотации:

📋 Иерархия асимптотических символов 47:14

Для удобства анализа Абель предлагает использовать «предельный тест»: если предел отношения $f(n)/g(n)$ конечен, то $f \in O(g)$ . Если же предел равен бесконечности, то $f$ растет строго быстрее . Однако он предупреждает, что если предел не существует (функция колеблется), тест становится неинформативным .

Помимо Big O, профессор вводит другие важные символы:

  1. Big Omega ($\Omega$): Обратное понятие к Big O. Означает, что функция растет не медленнее заданной .
  2. Theta ($\Theta$): Означает, что функции растут с одинаковой скоростью с точностью до константы. Это одновременно и $O$, и $\Omega$ .
  3. Little o ($o$): Означает, что функция $f$ значительно меньше $g$ (предел их отношения равен 0) .
  4. Little omega ($\omega$): Означает, что $f$ значительно больше $g$ (предел равен бесконечности) .

Абель подчеркивает разницу между асимптотической эквивалентностью ($\sim$) и нотацией $\Theta$: первая требует, чтобы константы совпадали (отношение равно 1), вторая разрешает любой постоянный множитель .

⚠️ Ловушка индукции в асимптотике 1:10:01

В завершение лекции Закари Абель приводит пример «ложного доказательства», чтобы предостеречь студентов от совместного использования индукции и Big O .

Он демонстрирует шуточное доказательство того, что $2^n \in O(1)$ (экспонента якобы является константой):

Ошибка в том, что индукция доказывает утверждение для каждого конкретного числа $n$, подтверждая лишь то, что каждая отдельная степень двойки — это какое-то константное число . Однако асимптотика анализирует функцию целиком во всем её диапазоне. Профессор призывает «сделать шаг назад», если вы пытаетесь использовать индукцию для доказательства асимптотических свойств функции, так как эти методы плохо смешиваются .

💬 Цитаты

«Асимптотическая нотация — это один из хлебных навыков анализа алгоритмов. Это язык, который позволяет сравнивать их, не увязая в деталях.»

Закари Абель 0:26

«Математически мы можем выдвинуть 10 блоков за край стола, но физически нам потребовалось бы расстояние до Луны, умноженное на 40.»

Закари Абель 9:06
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Гармоническое число
Сумма обратных величин натуральных чисел от 1 до n.
Big O (Большое О)
Математическая нотация для описания предельного поведения функции, определяющая её верхнюю границу роста.
Асимптотическая эквивалентность
Отношение двух функций, предел отношения которых при стремлении аргумента к бесконечности равен единице.
Формула Стирлинга
Формула для приближённого вычисления факториала при больших значениях n.
📊 Цифры
⚖️ Другая сторона
Образование MIT OpenCourseWare Закари Абель Big O Асимптотический анализ Гармонические числа