Искусство счета: как комбинаторика упорядочивает хаос нашей жизни

CS50 12,3 тыс. 3 ч 56 мин 18 мин 31.08.2026
Главное

Если вы переставите две идентичные буквы в слове, мир вокруг не изменится, но количество математических вероятностей сократится в миллионы раз. Том Кроуфорд доказывает, что комбинаторика — это не скучные формулы, а способ обуздать хаос, где треугольник Паскаля становится визуальным кодом реальности. От взлома ПИН-кодов до анализа 5 триллионов сценариев в игровом шоу Countdown: учимся считать то, что кажется неисчислимым.

🧩 Искусство подсчёта: введение в комбинаторику и правила перестановок 42:44

Комбинаторика — это не просто раздел математики, это фундаментальный инструмент, пронизывающий структуру компьютерных наук и нашу повседневную жизнь. Том Кроуфорд (Tom Crawford) начинает лекцию с определения дисциплины как науки о подсчёте и упорядочивании объектов . Вместе с руководителем курса Дэвидом Маланом (David J. Malan) они представляют комбинаторику как набор методов для решения задач, с которыми мы сталкиваемся каждое утро — например, при выборе одежды . Однако за бытовыми примерами скрываются критически важные для программиста концепции: от расчёта надёжности паролей до оптимизации алгоритмов обработки данных .

Основы комбинаторики: от выбора одежды до безопасности данных 42:44

В самом широком смысле комбинаторика отвечает на вопрос «сколькими способами это можно сделать?». Том Кроуфорд (Tom Crawford) подчёркивает, что проблемы подсчёта и установления порядка элементов встречаются повсеместно . Простейший пример — утренние сборы: количество комбинаций рубашек, брюк и обуви, которые может выбрать человек, является классической комбинаторной задачей .

Для компьютерных наук (Computer Science) это направление имеет прикладное значение, особенно в сфере кибербезопасности . Когда мы создаём пароль или ПИН-код, мы фактически создаём уникальную последовательность из определённого набора символов . Том Кроуфорд (Tom Crawford) отмечает, что понимание механизмов формирования таких последовательностей позволяет оценить общую сложность системы и её устойчивость к подбору .

В рамках вводного обзора лектор выделяет три ключевых термина, которые станут фундаментом дальнейшего изучения:

Правило умножения и базовые размещения: кейс с ПИН-кодами 1:05:34

Для решения комбинаторных задач существует множество техник, но основой всего является принцип умножения. Том Кроуфорд (Tom Crawford) вводит понятие «размещения» (arrangement) как процесс упорядочивания некоторых или всех элементов из заданного множества . Чтобы проиллюстрировать это, он использует знакомый каждому пример — четырёхзначный ПИН-код банковской карты .

Процесс создания кода можно разбить на этапы:

  1. Для первой цифры у нас есть набор от 0 до 9 — это 10 вариантов .
  2. Для второй цифры, если мы можем повторять числа, у нас снова 10 вариантов .
  3. Аналогично для третьей и четвёртой позиций .

Согласно правилу умножения, чтобы найти общее количество возможных ПИН-кодов, мы перемножаем количество вариантов для каждой позиции: $10 \times 10 \times 10 \times 10 = 10\,000$ . Таким образом, существует ровно десять тысяч различных способов составить стандартный пароль из четырёх цифр, если разрешены повторения .

Ситуация меняется, если мы вводим ограничение на использование одинаковых цифр. В случае «размещения без повторений» количество доступных опций уменьшается с каждым шагом . Для первой цифры всё ещё доступно 10 вариантов, но как только один символ выбран, он «изымается» из процесса . Тогда для второй позиции остаётся 9 вариантов, для третьей — 8, и для последней — 7 . Перемножив их ($10 \times 9 \times 8 \times 7$), мы получаем 5 040 возможных комбинаций — почти в два раза меньше, чем в первом случае .

Перестановки и факториалы: логика фиксированных наборов 43:10

Когда задача требует упорядочить не часть элементов, а весь доступный набор объектов, математики говорят о перестановках . Том Кроуфорд (Tom Crawford) связывает эту концепцию с факториалом — математической функцией, которая является кратчайшим путём к вычислению таких последовательностей .

Наглядным примером перестановки служит процесс переодевания или смены порядка действий с фиксированным количеством предметов . Если у нас есть набор из $n$ уникальных объектов и мы хотим узнать, сколькими способами их можно выстроить в ряд, мы используем формулу $n!$ (эн-факториал) .

Суть факториала дублирует логику примера с ПИН-кодом без повторений, но доведенную до конца:

Хотя детальный разбор формулы факториала и более сложных случаев (таких как мультиномиальные и биномиальные коэффициенты) последует в следующих частях лекции, Том Кроуфорд (Tom Crawford) подчёркивает: именно понимание перестановок позволяет осознать красоту математических структур, таких как треугольник Паскаля, и даже научиться выигрывать в телевизионные игры вроде британского шоу Countdown .

🍎 Мультиномиальные коэффициенты и проблема повторений 1:43:28

Понятие неразличимых объектов 1:43:28

Переходя к более сложным аспектам комбинаторики, Том Кроуфорд вводит понятие «неразличимых» (indistinguishable) элементов . До этого момента в лекции рассматривались сценарии, где каждый объект был уникален — будь то разные цифры пароля или конкретные предметы одежды, такие как шляпа или куртка . Однако в реальных задачах математики часто сталкиваются с множествами, где некоторые объекты идентичны друг другу.

Основная проблема при работе с такими множествами заключается в том, что стандартная формула перестановок (факториал), о которой Том Кроуфорд кратко упоминал ранее , начинает давать избыточный результат. Если у нас есть два абсолютно одинаковых объекта, их перемещение между собой не создает новой, уникальной комбинации . Математически это означает, что мы «пересчитываем» варианты, которые на самом деле выглядят одинаково. Чтобы получить корректное число расстановок, необходимо найти способ «очистить» результат от этих повторов. Этот переход от простых перестановок к учету идентичных элементов и подводит нас к концепции мультиномиальных коэффициентов.

Расстановка фруктов: логика исключения лишнего 1:43:28

Для наглядности Том Кроуфорд предлагает рассмотреть задачу с набором фруктов. Представьте, что у нас есть корзина, в которой лежат три яблока, два апельсина и один банан. Всего перед нами шесть предметов . Если бы все фрукты были уникальными (например, пронумерованными), количество способов разложить их в ряд составило бы 6!, что равняется 720 вариантам . Однако яблоки в нашем примере идентичны, как и апельсины.

Логика расчета в такой ситуации строится на делении общего числа перестановок на количество «невидимых» перестановок внутри групп одинаковых объектов:

  1. Сначала мы считаем все предметы уникальными и берем общий факториал — $6!$ .
  2. Затем мы понимаем, что три яблока можно переставить между собой $3!$ (то есть 6) способами, и визуально это ничего не изменит. Значит, мы должны разделить общее число на $3!$ .
  3. Аналогично, два апельсина можно переставить $2!$ (2) способами. Мы снова делим результат на этот фактор.
  4. Банан один, поэтому его перестановка ($1!$) не влияет на результат, но формально она также присутствует в знаменателе формулы.

В итоге количество уникальных расстановок фруктов вычисляется как $6! / (3! \times 2! \times 1!)$. Это наглядный пример того, как мультиномиальный коэффициент позволяет сжать огромное пространство теоретических перестановок до реального количества различимых паттернов.

Магия слова «статистика» 1:43:28

Классическим и, пожалуй, самым известным примером применения мультиномиальных коэффициентов является задача о перестановке букв в слове. Том Кроуфорд разбирает её на примере слова «статистика» (STATISTICS) . Это слово идеально подходит для демонстрации комбинаторной сложности, так как оно содержит сразу несколько групп повторяющихся букв.

В слове STATISTICS всего 10 букв. Если бы мы рассматривали их как уникальные символы, то получили бы $10!$ вариантов, что составляет внушительные 3 628 800 комбинаций . Но как только мы начинаем анализировать состав слова, картина меняется:

Чтобы найти количество уникальных анаграмм, мы применяем принцип деления на факториалы повторений. Мы берем общее количество — $10!$ — и делим его на произведение факториалов каждой группы букв: $3! \times 3! \times 2! \times 1! \times 1!$ . В цифрах это выглядит так: 3 628 800 нужно разделить на $(6 \times 6 \times 2)$, то есть на 72. Результат — 50 400 уникальных способов переставить буквы .

Этот метод, объясняемый Томом, является фундаментом для понимания того, как в CS50 и компьютерных науках в целом обрабатываются строки данных и массивы с дубликатами. Понимание того, что порядок важен, но неразличимость элементов вносит свои коррективы, позволяет эффективно решать задачи оптимизации и поиска в структурах данных. Ранее Дэвид Малан и Том касались правила умножения для независимых выборов , но именно мультиномиальный подход дает инструмент для работы с зависимыми, повторяющимися структурами внутри одного набора.

🤝 Сочетания и биномиальные коэффициенты 2:16:40

В комбинаторике часто возникает ситуация, когда порядок выбора объектов не имеет значения. Если при перестановках нам было важно, кто стоит на первом месте, а кто на втором, то в случае с сочетаниями нас интересует только итоговый состав группы . Том Кроуфорд поясняет это на примере выбора подмножества из более крупной коллекции: когда мы формируем команду или выбираем фрукты в корзину, нам не важно, какой объект был взят первым, а какой — вторым .

Для расчета таких случаев используется формула «n выбираем k» (n choose k), которая математически выражается через биномиальные коэффициенты. Ранее в разговоре Дэвид Малан и Том Кроуфорд уже касались темы факториалов, и именно они ложатся в основу вычисления сочетаний. Главное отличие от размещений здесь заключается в необходимости исключить «лишние» варианты, которые по сути являются одной и той же группой, просто расставленной в разном порядке .

Мультисет-коэффициенты и работа с повторами 1:43:28

Когда объекты в наборе становятся неотличимыми друг от друга (indistinguishable), стандартные формулы перестановок перестают работать корректно, так как они приводят к избыточному подсчету (double counting) . Том Кроуфорд демонстрирует это на примере фруктов на столе: если у нас есть три яблока и три апельсина, то простая перестановка двух яблок местами не создает новой комбинации — визуально ряд фруктов остается прежним .

Для решения таких задач применяются мультиномиальные (или мультисет) коэффициенты. Общий принцип расчета выглядит следующим образом:

  1. В числителе записывается факториал общего количества предметов ($n!$) .
  2. В знаменателе записываются факториалы количеств каждого типа повторяющихся объектов ($m_1!, m_2!, \dots, m_k!$) .

На примере с шестью фруктами (3 яблока и 3 апельсина) расчет будет выглядеть так: $6! / (3! \times 3!) = 20$ . Если же добавить к набору две груши, общее число предметов вырастет до восьми, и формула усложнится: $8! / (3! \times 3! \times 2!) = 560$ . Том подчеркивает важность написания знака факториала даже для числа 2 ($2!$), чтобы не сбиться с логики формулы, хотя математически $2!$ и равно $2$ .

Практическое применение этой логики Том демонстрирует на слове STATISTICS . В нем 10 букв, среди которых:

Общее число уникальных анаграмм этого слова составляет $10! / (3! \times 3! \times 2! \times 1! \times 1!) = 50\,400$ . Важным «сенс-чеком» здесь является сумма всех чисел в знаменателе — она всегда должна равняться общему количеству объектов в числителе ($3+3+2+1+1 = 10$) .

Задача о шутках лектора 1:55:45

Чтобы усложнить комбинаторную задачу, Том вводит дополнительные ограничения, которые часто встречаются в реальном программировании или криптографии. Он предлагает рассмотреть ситуацию, где в слове STATISTICS буква A должна обязательно стоять раньше всех букв T .

Вместо того чтобы пытаться пересчитать все позиции вручную, Том предлагает элегантное логическое решение через симметрию . Если мы выделим в слове только четыре позиции, занятые буквами A и T (одна A и три T), то существует всего четыре способа их взаимного расположения:

  1. A, T, T, T (подходит под условие) .
  2. T, A, T, T.
  3. T, T, A, T.
  4. T, T, T, A.

Поскольку буква A уникальна, а буквы T неразличимы, только в одном случае из четырех буква A окажется первой . Следовательно, чтобы найти ответ, нужно просто разделить общее число перестановок на 4: $50\,400 / 4 = 12\,600$ . Этот метод демонстрирует, как комбинаторика позволяет решать сложные задачи с ограничениями, сводя их к простым долям от общего множества .

🧩 Комбинаторика в действии: от раскрытия скобок до игры «Countdown» 2:50:16

На стыке чистой математики и компьютерных наук часто возникают задачи, требующие не просто расчетов, а понимания того, как структурированы данные . Том Кроуфорд демонстрирует это через комбинаторный анализ алгебраических выражений и интерактивные игры, показывая, что за простыми школьными формулами скрываются фундаментальные принципы выбора и перестановок .

Биномиальный выбор: почему скобки работают именно так 2:50:16

Раскрытие скобок — классическая операция, которую многие выполняют механически. Однако Том Кроуфорд предлагает взглянуть на это как на комбинаторную задачу . Когда мы возводим $(a + b)$ в квадрат, мы фактически имеем дело с двумя корзинами (скобками), из каждой из которых нужно выбрать по одному элементу .

При использовании метода FOIL (или, как его называет Том, «метода улыбающегося лица» ) мы перемножаем:

В результате получается $a^2 + 2ab + b^2$ . Ключевой инсайт здесь заключается в коэффициенте «2» перед $ab$. С точки зрения комбинаторики, это число способов выбрать ровно одну «a» из двух доступных скобок . Том подчеркивает, что это не что иное, как биномиальный коэффициент «2 из 1» (2 choose 1) .

Ранее в разговоре они касались базовых сочетаний, и здесь эта концепция раскрывается в полную силу: коэффициент перед любым слагаемым в выражении $(a+b)^n$ — это количество способов выбрать определенное количество переменных из $n$ скобок . Например, для $(a+b)^3$ коэффициент перед $a^2b$ равен 3, потому что существует три способа выбрать две «a» из трех скобок .

Красота Бинома Ньютона и треугольника Паскаля 3:01:03

Обобщение этих наблюдений приводит к Биномиальной теореме . Том объясняет, что для любой степени $n$ выражение $(a+b)^n$ можно представить как сумму слагаемых, где коэффициенты соответствуют значениям «n из k» . Это позволяет мгновенно находить коэффициенты для огромных степеней, не выполняя мучительное перемножение вручную .

Для визуализации этой закономерности используется треугольник Паскаля . Том выделяет его ключевые свойства:

  1. Каждое число в треугольнике является суммой двух чисел, расположенных над ним .
  2. Каждая строка треугольника соответствует коэффициентам разложения бинома для конкретной степени .
  3. Края треугольника всегда состоят из единиц, что соответствует выбору «всех» или «ни одного» элемента из множества .

Кроуфорд отмечает, что 0 факториал ($0!$) по определению равен единице, что необходимо для корректной работы формул на краях треугольника . Эта структура не просто красива — она бесконечна и связывает воедино алгебру и теорию вероятностей .

Математика слов: Игра «Countdown» 3:28:08

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

В контексте комбинаторики «Countdown» — это задача на перестановки и выборку из мультимножества букв. Если у вас есть 9 букв, количество возможных комбинаций огромно, но правила языка накладывают ограничения. Том использует эту игру, чтобы продемонстрировать:

Дэвид Малан и Том обсуждают, как компьютерные алгоритмы справляются с этой задачей, используя словари и комбинаторный перебор, что превращает развлекательное шоу в наглядный пример вычислительной сложности и оптимизации .

📺 Комбинаторика на ТВ: Математика шоу Countdown 3:28:21

Британское игровое шоу Countdown является старейшей непрерывной телепередачей на местном телевидении — оно выходит в эфир уже 43 года . Для Тома Кроуфорда эта игра имеет личное значение: он не только вырос на ней, смотря выпуски каждый день после школы, но и успел поработать её ведущим в течение месяца . В основе «раунда с буквами», который разбирают участники, лежит чистая комбинаторика . Правила просты: игрокам дается девять случайно выбранных букв английского алфавита и 30 секунд на то, чтобы составить самое длинное слово . Чем длиннее слово, тем больше очков получает участник .

Хотя на первый взгляд задача кажется лингвистической, её математический фундамент огромен. Если рассматривать идеализированную модель, где каждая из девяти позиций может быть занята любой из 26 букв алфавита, мы сталкиваемся с правилом умножения, которое Том Кроуфорд и Дэвид Малан обсуждали ранее . Для первой позиции у нас есть 26 вариантов, для второй — снова 26, и так далее. В итоге общее количество возможных комбинаций составляет $26^9$ . Это колоссальное число — примерно 5,4 триллиона различных стартовых наборов букв, которые могут выпасть в одном раунде .

🔢 Выборка и размещения: гласные против согласных 3:33:36

В реальной игре процесс выбора букв сложнее, чем простое извлечение из набора в 26 символов. Чтобы игроки могли составить осмысленные слова, они сами решают, сколько гласных и сколько согласных будет в их наборе из девяти элементов . В ходе демонстрации Том Кроуфорд выбирает пять согласных (G, T, M, L, R, H) и три гласные буквы (A, O, I), формируя рабочий набор для раунда . Как только девять букв выбраны, возникает вопрос: сколько существует способов их переставить?

Для ответа на этот вопрос используется классический расчет перестановок без повторений . На первое место можно поставить любую из 9 букв, на второе — любую из 8 оставшихся, и так далее до последней позиции . Это приводит нас к факториалу девяти ($9!$), что составляет 362 880 различных вариантов расположения одного и того же набора букв . Задача игрока в Countdown — за полминуты найти среди этих тысяч перестановок (или их подмножеств) те, что соответствуют словам из официального словаря английского языка .

Математически поиск слова можно представить как двухэтапный процесс :

  1. Выбор подмножества из $k$ букв из имеющихся 9 (сочетание).
  2. Расположение выбранных $k$ букв в определенном порядке (перестановка).

Этот подход крайне важен, если мы захотим написать компьютерную программу для решения этой игры методом «грубой силы» (brute force) . Программе пришлось бы проверять каждое возможное размещение букв по словарю, чтобы подтвердить их существование.

🧠 Сложность поиска: от простых слов до «Алгоритма» 3:38:02

Минимальная длина слова в Countdown для начисления очков — три буквы . Чтобы посчитать количество всех возможных вариантов из трех букв, Том использует биномиальный коэффициент «9 по 3» и умножает его на $3!$ . Формула выглядит так: $$\binom{9}{3} \times 3! = 504$$ Это дает 504 различных варианта расстановки трех букв из девяти предложенных . Одним из таких вариантов в наборе Тома стало слово HAM («ветчина»), приносящее 3 очка .

Однако обычный игрок на телевидении в среднем находит слова из шести букв . Математическая сложность здесь возрастает: количество способов выбрать и расставить 6 букв из 9 составляет: $$\binom{9}{6} \times 6! = 60 480$$ Из этих 60 тысяч комбинаций лишь малая часть является реальными словами — например, слово MORTAL («смертный»), которое Том обнаружил в своем наборе . Для чемпионов шоу стандартом является слово из семи букв . Здесь количество комбинаций увеличивается до 181 440 . Успешно найденное Томом слово ALRIGHT («хорошо») — это лишь один из почти двухсот тысяч вариантов перемешивания букв .

Самым редким и сложным достижением является использование всех девяти букв . За такие слова в шоу начисляются бонусные баллы, так как их невероятно трудно заметить за 30 секунд . Иронично, что в наборе букв, собранном для лекции по Computer Science, спрятались сразу два математических термина из девяти букв: ALGORITHM («алгоритм») и LOGARITHM («логарифм») . Это идеальный пример того, как комбинаторные задачи переплетаются с реальной практикой программирования и анализа данных .

🏁 Подведение итогов и мост к теории вероятностей 3:54:53

Синтез инструментов комбинаторики 3:54:53

Завершая масштабный обзор математических основ программирования, Том Кроуфорд (Tom Crawford) систематизировал пройденный путь, превратив разрозненные методы в единую экосистему инструментов. Фундаментом всей дискуссии послужило правило умножения, которое позволило Дэвиду Малану (David J. Malan) и зрителям понять логику подсчета вариантов при последовательном выборе . Ранее в разговоре они касались базовых размещений, и именно этот принцип стал отправной точкой для более сложных конструкций .

Том Кроуфорд подчеркнул иерархичность изученных методов:

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

Математическая элегантность: от алгебры к практике 3:55:30

Кульминацией теоретической части беседы Том назвал бином Ньютона — результат, который он охарактеризовал как «прекрасный» . Эта теорема служит связующим звеном, объединяющим дискретную комбинаторику с классической алгеброй и правилами раскрытия скобок . Ранее в главе о треугольнике Паскаля лекторы уже демонстрировали визуальную гармонию этих связей, но именно итоговый обзор позволяет увидеть в этом не просто школьную формулу, а глубокую закономерность распределения коэффициентов .

Практическое применение накопленных знаний было продемонстрировано на примере игры «Countdown» . Том Кроуфорд напомнил, что использование комбинаторики слов и чисел в этом британском телешоу — не просто развлечение, а демонстрация того, как комбинаторный взрыв вариантов ограничивает возможности человека и требует четких алгоритмов поиска . Завершая этот этап, Том и Дэвид Малан (David J. Malan) подтвердили, что понимание того, «сколько способов существует», является лишь первой половиной задачи .

Следующий шаг: переход к теории вероятностей 3:55:46

Финальным аккордом встречи стал закономерный вопрос: каковы реальные шансы на победу в подобных интеллектуальных состязаниях или успех конкретного алгоритма? . Том Кроуфорд отметил, что ответ на этот вопрос невозможен без перехода в новую область математики .

Комбинаторика дает нам «знаменатель» — общее количество всех возможных исходов . Однако для оценки рисков, неопределенности и предсказания результатов в компьютерных науках необходима теория вероятностей . Именно вероятность станет следующей большой темой в цикле материалов CS50 по математике для Computer Science, логически продолжая путь от простого подсчета комбинаций к анализу случайных процессов .

💬 Цитаты

«Combinatorics... means problems related to counting and ordering. These problems are very common.»

«Предположим, мы хотим вычислить количество расстановок набора объектов, где некоторые из них повторяются. Мы называем их неразличимыми.»

«If I were to just swap these two apples, this looks identical. The fact that I'm rearranging two of the same item is not really giving us a different arrangement.»

«Это не просто алгебра, это способ подсчета вариантов выбора элементов из разных корзин.»

«Треугольник Паскаля — это визуальное воплощение порядка в хаосе комбинаций.»

«Всего существует 5.4 триллиона различных раундов в Countdown, если мы допускаем любое количество повторений букв.»

«We saw a beautiful mathematical result called the binomial theorem which ties together everything we've seen in combinotaurics with algebra.»

👥 Спикер
🎬 Упомянутые фильмы и сериалы
📖 Термины
Комбинаторика
Раздел математики, изучающий вопросы о том, сколько различных комбинаций, подчиненных тем или иным условиям, можно составить из заданных объектов.
Факториал (n!)
Произведение всех натуральных чисел от 1 до n включительно.
Мультиномиальный коэффициент
Число способов разбиения множества из n элементов на k групп фиксированного размера.
Биномиальный коэффициент
Число способов выбрать k элементов из множества n без учета порядка (сочетания).
Математика и физика Том Кроуфорд комбинаторика треугольник Паскаля бином Ньютона Countdown