Теорія графів і алгоритми — Дейкстра, A*, мінімальні остовні дерева та силові розкладки

Кожен картографічний застосунок, маршрут доставки посилок, розкладка соціальної мережі та плата друкованої схеми зводяться до графових алгоритмів. Сім інтерактивних симуляцій проведуть вас від класичного пошуку найкоротшого шляху до NP-складної задачі комівояжера — і покажуть базову математику крок за кроком.

Найкоротші шляхи

Алгоритм Едсгера Дейкстри 1956 року відвідує вузли в порядку накопиченої вартості від джерела, гарантуючи оптимальність на графах із невід'ємними вагами ребер. На сітці з 1000 вузлів він обробляється за мілісекунди; на розріджених реальних дорожніх мережах він обробляє мільйони вузлів при відповідному налаштуванні черги з пріоритетами.

Складність Дейкстри проти A*

Дейкстра: O((V + E) log V) із черга з пріоритетами на бінарній купі

A*: O(b^d) у найгіршому випадку; майже O(E log V) з гарною евристикою h(v)

Гарантія A*: якщо h(v) допустима (h(v) ≤ істинна вартість), результат оптимальний

f(v) = g(v) + h(v), де g — вартість від старту, h — евристика до цілі

Остовні дерева та зв'язність

Мінімальне остовне дерево (MST) з'єднує всі вузли з мінімальною сумарною вагою ребер і без циклів. Алгоритм Крускала сортує всі ребра за вагою й використовує структуру «система непересічних множин»; алгоритм Прима вирощує одне дерево з початкового вузла. Обидва дають однакове MST, але відрізняються продуктивністю на щільних і розріджених графах.

Комбінаторна оптимізація

Деякі графові задачі не мають відомого поліноміального алгоритму. Задача комівояжера (TSP) — знайти найкоротший маршрут, що відвідує кожен вузол рівно раз — NP-складна. Проте наближення й евристики на практиці працюють на диво добре.

Чому A* перевершує Дейкстру на практиці? Дейкстра розширює вузли рівномірно в усіх напрямках. A* використовує евристику h(v), щоб зміщувати розширення в бік цілі, досліджуючи набагато менше вузлів. На дорожніх мережах Дейкстра зазвичай досліджує >50% графа; A* з евклідовою відстанню — <5% — без втрати оптимальності.

Навчальні маршрути

Класичні алгоритми

  1. Візуалізатор алгоритмів сортування
  2. Пошук шляху — Дейкстра й A*
  3. Генерація та розв'язання лабіринтів
  4. Мінімальне остовне дерево

Просунуті графи

  1. Силова розкладка графа
  2. Задача комівояжера
  3. Навчання дерева рішень

Розглянуті алгоритми

Дейкстра Пошук A* BFS / DFS MST Крускала MST Прима Система непересічних множин 2-opt TSP Імітація відпалу Фрухтерман-Рейнгольд ID3 / CART Сортування злиттям Швидке сортування