Эрик Демейн о графах: Как математика помогает правильно одеваться?

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

В лекции MIT OpenCourseWare профессор Эрик Демейн подводит итог изучению теории графов, переходя от симметричных связей к ориентированным структурам — диграфам. Основное внимание уделяется направленным ациклическим графам (DAG), которые позволяют математически описать любые процессы с зависимостями: от алгоритмов параллельных вычислений до простых повседневных дел.

🧭 От связей к векторам: Что такое диграф 0:12

Профессор Демейн начинает с того, что классические ненаправленные графы не всегда подходят для моделирования реальности. В жизни часто встречаются «односторонние» отношения: дороги с односторонним движением, подписки в соцсетях (follow вместо двустороннего friendship) или сетевые соединения, работающие только на передачу. Для таких случаев используются направленные графы, или диграфы.

Основные отличия диграфа от обычного графа:

🔢 Степени вершин и «рукопожатия» в новом формате 3:43

В ориентированных графах понятие «степень вершины» (количество инцидентных ребер) разделяется на две составляющие: входящую степень (in-degree) и исходящую степень (out-degree). Профессор отмечает, что использовать просто термин «степень» в данном контексте некорректно, так как это вносит двусмысленность.

Математически это меняет классическую «лемму о рукопожатиях». В ненаправленном графе сумма степеней вершин равнялась удвоенному количеству ребер. В диграфах ситуация, по мнению Демейна, даже «чище»:

  1. Сумма входящих степеней всех вершин в точности равна количеству ребер.
  2. Сумма исходящих степеней также равна общему количеству ребер.

Это логично, поскольку каждое ребро имеет ровно один «начальный» конец и ровно один «конечный».

🚶 Маршруты и достижимость: Куда ведут стрелки? 7:46

Определение прогулки (walk) остается почти прежним: это последовательность вершин, где каждая пара соединена ребром. Однако теперь необходимо строго «соблюдать стрелки» — двигаться только вперед по направлению ребра. Демейн проводит параллель с теорией автоматов (state machines), изученной ранее в курсе: прогулка в графе — это фактически выполнение (execution) в конечном автомате.

Циклы в диграфах ведут себя иначе, чем в обычных графах:

Понятие «связности» также усложняется. Если в обычном графе связность симметрична, то в диграфе из того, что вершина $A$ достижима из $B$, вовсе не следует достижимость $B$ из $A$.

🔗 Сильная связность и конденсация графа 15:18

Вершины называются сильно связными, если они взаимно достижимы: из $u$ можно попасть в $v$, и наоборот. Если это условие выполняется для всех пар вершин, весь граф называется сильно связным. В таких графах невозможно «застрять» — из любой точки всегда есть путь в любую другую.

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

Интересным инструментом анализа является граф конденсации. Мы берем все сильно связные компоненты (группы вершин, внутри которых можно ходить как угодно) и «схлопываем» каждую в одну супер-вершину. Ребра между этими компонентами показывают общую структуру зависимостей в графе. Самое важное свойство конденсации — полученный граф всегда будет ациклическим.

🧥 DAG: Графы без циклов и искусство одеваться 29:27

Направленные ациклические графы (Directed Acyclic Graphs, или DAG) — это «золотой стандарт» для описания зависимостей. Если в графе зависимостей есть цикл (A нужно сделать до B, B до C, а C до A), то процесс никогда не начнется.

Профессор приводит бытовой пример: процесс одевания. Каждому предмету одежды соответствует вершина, а ребра указывают на необходимую последовательность:

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

🛠️ Алгоритмы и доказательства: Источники, стоки и индукция 37:33

Чтобы доказать, что для любого DAG существует топологический порядок, Демейн вводит понятия источника и стока:

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

Алгоритм топологической сортировки прост:

  1. Найти любой источник (задачу, которую ничто не предваряет).
  2. Поместить его в начало списка и «удалить» из графа.
  3. Повторять, пока граф не опустеет.

⚡ Параллельное выполнение задач и критический путь 51:48

Если у нас есть неограниченное количество исполнителей (процессоров), мы можем выполнять независимые задачи параллельно. Например, надевать левый и правый носок одновременно. Возникает вопрос: каков минимальный span (время выполнения) всего проекта?

Теорема, которую доказывает профессор: минимальное время выполнения равно количеству вершин в самом длинном пути в графе.

Для этого вводится понятие глубины вершины — длины самого длинного пути, заканчивающегося в ней. Глубина и определяет момент времени, в который задача может быть выполнена. Задачи с глубиной 0 (источники) делаются в первый такт, с глубиной 1 — во второй и так далее.

📅 Цепи и антицепи: От теории к интерфейсу календаря 1:08:15

В завершение лекции Демейн вводит понятия из теории частичного порядка:

Эти абстрактные понятия имеют прямое прикладное значение. Профессор объясняет, как современные электронные календари (Google Calendar или Outlook) отображают события. Конфликтующие (пересекающиеся по времени) события в графе зависимостей являются несравнимыми — они образуют антицепь. Чтобы красиво отрисовать календарь, нужно разбить все события на минимальное количество колонок. Согласно математической двойственности, количество колонок (цепей) в оптимальном интерфейсе равно размеру самой большой антицепи (максимальному числу одновременно идущих дел).

💬 Цитаты

«Носки идут перед обувью. Я пробовал наоборот — работает не очень хорошо.»

Эрик Демейн 33:58

«Если у вас есть цикл ограничений приоритета, то ни одна из задач не сможет быть выполнена первой.»

Эрик Демейн 35:46
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Диграф
Граф, в котором ребра имеют направление (ориентированный граф).
DAG
Направленный ациклический граф, в котором невозможно вернуться в исходную точку, следуя по стрелкам.
Топологическая сортировка
Линейное упорядочивание вершин графа, при котором для любого ребра (u, v) вершина u идет раньше v.
Антицепь
Множество вершин в графе, между которыми нет путей достижимости (независимые задачи).
📊 Цифры
⚖️ Другая сторона
Математика и физика Эрик Демейн MIT OpenCourseWare диграф DAG топологическая сортировка