Теория графов

Изучает графы — множества вершин и рёбер. Основана Эйлером (1736, задача о мостах Кёнигсберга). Применяется в социальных сетях, логистике, биоинформатике.

📖7 мин чтения📊Уровень 4🗺️5 подтем📅19 февраля 2026 г.

🗺️ Mind Map

Загрузка карты...
Теория графов — раздел дискретной математики, изучающий графы (структуры из вершин, соединённых рёбрами). Граф G = (V, E): V — множество вершин, E — множество рёбер. Применяется в социальных сетях (граф друзей), GPS-навигации (граф дорог), интернете (граф маршрутизации), биологии (граф взаимодействий белков). Основана Леонардом Эйлером (1736).

Задача, которую нельзя решить прогулкой

Кёнигсберг, 1736 год. Город на реке Прегель: два острова, семь мостов. Местные жители бились над головоломкой: можно ли пройти по всем мостам ровно один раз и вернуться в начальную точку?

Попытки предпринимались годами. Никто не смог — но и доказать невозможность тоже никто не мог.

Математик Леонард Эйлер подошёл иначе. Он абстрагировался от географии: не важно, какой длины мосты, какая ширина реки. Важна только структура связей.

Граф Кёнигсберга:

Вершины — 4 района города (два берега + два острова)
Рёбра — 7 мостов между районами

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

В Кёнигсберге все четыре вершины имели нечётную степень (3 или 5 мостов). Вывод: задача неразрешима.

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

Контринтуитивный факт: в 1944 году Кёнигсберг (теперь Калининград) бомбили, два моста разрушили. Теперь мостов пять, и эйлеров цикл существует! Но никто не интересуется — задача решена математически в 1736, физическая прогулка неважна.

Что такое граф: формальное определение

Граф G = (V, E):

V (vertices): конечное множество вершин {v₁, v₂, ..., vₙ}
E (edges): множество рёбер {(v₁, v₂), (v₂, v₃), ...}

Типы графов:

Неориентированный: ребро (u, v) = (v, u). Дружба в Facebook: если A друг B, то B друг A.

Ориентированный (орграф): ребро (u → v) ≠ (v → u). Подписки в Twitter: A подписан на B, но B не подписан на A.

Взвешенный: каждое ребро имеет вес (число). Граф дорог: вес — расстояние или время в пути.

Степень вершины: количество рёбер, выходящих из неё. Для орграфа: степень входа (in-degree) и степень выхода (out-degree).

Путь: последовательность вершин, где каждая пара соседних соединена ребром. v₁ → v₂ → v₃ → v₄.

Цикл: путь, который начинается и заканчивается в одной вершине. v₁ → v₂ → v₃ → v₁.

Связный граф: из любой вершины можно дойти до любой другой.

Социальные сети: граф из 3 миллиардов вершин

Facebook (2004). Граф:

Вершины — пользователи (~3 миллиарда)
Рёбра — дружба (~150 миллиардов связей)

Задача: найти кратчайший путь от пользователя A до пользователя B (степень разделения).

Гипотеза шести рукопожатий (Милграм, 1967): любые два человека на Земле связаны цепочкой из ~6 знакомых.

Facebook провёл исследование (2011): средняя степень разделения — 4.74. Не шесть, а меньше пяти! Интернет сделал мир теснее.

Алгоритм BFS (поиск в ширину):

1. Начинаем с вершины A, помечаем расстояние 0
2. Смотрим всех друзей A — расстояние 1
3. Смотрим друзей друзей — расстояние 2
4. Продолжаем, пока не найдём B

Сложность: O(V + E). Для Facebook: ~3 млрд + 150 млрд = 153 млрд операций. Звучит много, но с распределённой базой данных (миллионы серверов) — секунды.

Центральность вершины: мера «важности» вершины в графе.

Degree centrality: степень вершины. Чем больше друзей, тем важнее.
Betweenness centrality: сколько кратчайших путей проходит через вершину. «Мосты» между сообществами.
PageRank (Google, 1998): важность = сумма важности ссылающихся вершин. Итерационный алгоритм.

GPS-навигация: алгоритм Дейкстры

Граф дорог:

Вершины — перекрёстки
Рёбра — дороги с весами (расстояние или время)

Задача: найти кратчайший путь из A в B.

Алгоритм Дейкстры (1956):

1. Начинаем с вершины A, расстояние 0. Все остальные — бесконечность
2. Выбираем вершину с минимальным расстоянием (сначала A)
3. Смотрим всех её соседей, обновляем расстояния: если через текущую вершину короче, обновляем
4. Помечаем вершину как обработанную
5. Повторяем, пока не дойдём до B

Сложность: O(E log V) с приоритетной очередью (куча). Для города с 100 000 перекрёстками и 300 000 дорог — миллисекунды.

Проблема: Дейкстра ищет глобальный минимум — проверяет все направления. Неэффективно, если цель далеко на север, а алгоритм проверяет юг.

Алгоритм A* (1968): улучшение Дейкстры с эвристикой. Приоритет вершины = расстояние до неё + оценка расстояния до цели (обычно прямая линия — эвклидово расстояние).

A* ищет «в направлении цели», а не во все стороны. В 10-100 раз быстрее Дейкстры на картах.

Google Maps (2005): использует A* с динамическими весами (учёт пробок в реальном времени). Граф обновляется каждые несколько минут на основе данных GPS от миллионов телефонов.

Задача коммивояжёра: самая известная NP-полная задача

Дано: N городов, расстояния между ними.
Найти: кратчайший маршрут, посещающий все города ровно один раз и возвращающийся в начальную точку.

Вариантов маршрута: (N-1)! / 2

Для 10 городов: 181 440 — перебор за секунды.
Для 20 городов: 10¹⁸ — миллиарды лет на обычном ПК.
Для 50 городов: 10⁶⁴ — больше, чем атомов в наблюдаемой Вселенной.

Это NP-полная задача: нет эффективного алгоритма точного решения. Если кто-то найдёт — докажет P = NP, получит $1 млн от Clay Mathematics Institute и сломает всю криптографию.

Приближённые методы:

Жадный алгоритм: каждый шаг — ближайший непосещённый город. Быстро, но неоптимально (~25% хуже оптимума).

Генетический алгоритм: эволюция маршрутов (скрещивание, мутации) → отбор лучших. Находит решение на 95-98% от оптимума.

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

Рекорд (2006): точное решение TSP для 85 900 городов (все города мира с населением >5000). Алгоритм Concorde, вычисления на суперкомпьютере — несколько месяцев. Но это предел для точных методов.

Деревья: графы без циклов

Дерево — связный граф без циклов. Любые две вершины соединены ровно одним путём.

Свойства: для дерева с N вершинами — всегда N-1 ребро.

Остовное дерево (spanning tree): подграф графа G, который:

1. Включает все вершины G
2. Является деревом (связный, без циклов)
3. Имеет минимальный суммарный вес рёбер (минимальное остовное дерево, MST)

Применение MST: проектирование сетей (дороги, интернет-кабели, трубопроводы). Задача: соединить все города с минимальными затратами.

Алгоритм Прима (1957):

1. Начинаем с произвольной вершины
2. Добавляем ребро минимального веса, соединяющее дерево с новой вершиной
3. Повторяем, пока не добавим все вершины

Сложность: O(E log V). Для графа с миллионом вершин — секунды.

Алгоритм Крускала (1956): сортируем все рёбра по весу, добавляем в дерево по возрастанию, пропуская те, что создают циклы. Проще для разреженных графов.

Раскраска графов и расписания

Задача: раскрасить вершины графа так, чтобы соседние вершины имели разные цвета. Минимизировать количество цветов.

Применение: составление расписаний.

Граф конфликтов:
Вершины — экзамены
Рёбра — студенты, сдающие оба экзамена (нельзя назначить в одно время)

Цвет вершины = временной слот. Минимальное число цветов = минимальное число временных слотов.

Теорема о четырёх красках (1976, доказана с помощью компьютера): любую карту можно раскрасить четырьмя цветами так, что соседние страны имеют разные цвета.

Граф карты: вершины — страны, рёбра — граница. Хроматическое число (минимум цветов) ≤ 4.

Это был первый крупный математический результат, доказанный компьютером (перебор ~1500 случаев). Математики спорят: это доказательство или вычислительная проверка?

Где теория графов не работает

Граф — статическая структура. Реальный мир динамичен.

Пример: социальная сеть. Дружба появляется и исчезает. Граф меняется каждую секунду. Алгоритмы должны работать с инкрементальными обновлениями, а не пересчитывать всё с нуля.

Темпоральные графы: расширение теории графов, где рёбра существуют в определённые моменты времени. Применение: эпидемиология (кто с кем контактировал когда), транспортные сети (метро с расписанием).

Но вычисления на темпоральных графах сложнее на порядки. Кратчайший путь в метро зависит от времени выезда — нельзя применить Дейкстру напрямую.

Теория графов работает с абстракцией. Чем сложнее реальность, тем больше приходится упрощать модель — и терять точность.

👤

Леонард Эйлер

1707-1783

Основатель теории графов

👤

Эдсгер Дейкстра

1930-2002

Создатель алгоритма кратчайшего пути

👤

Лоренс Пейдж и Сергей Брин

1973-, 1973-

Основатели Google

👤

Пол Эрдёш

1913-1996

Основатель теории случайных графов

4 личности

Часто задаваемые вопросы

Дерево — частный случай графа: связный граф без циклов. В дереве с N вершинами всегда N-1 ребро, любые две вершины соединены ровно одним путём. Граф может иметь циклы и несколько путей.