МатВектор

Command Palette

Search for a command to run...

🔀 Дискретка

Алгоритм Краскала

англ. Kruskal's algorithm

Жадный алгоритм минимального остова: рёбра сортируются по весу и добавляются, пока не создают цикл; за n−1 шагов собирает дерево минимальной суммарной стоимости.

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

Проверку цикла выполняют системы непересекающихся множеств (DSU) со сжатием путей, и тогда сложность упирается в сортировку рёбер. Родственник — алгоритм Прима: тот растит одно дерево от стартовой вершины, каждый раз вытягивая ближайшее ребро; Краскал же держит лес, который постепенно срастается. Результат по весу одинаков, но характер разный: на плотных графах быстрее Прим, на разреженных или уже отсортированных данных Краскал почти бесплатен. Сводка графовых алгоритмов с псевдокодом — в шпаргалке по графам и алгоритмам, определения — в термине граф.

минимизируется сумма весов n−1 рёбер остова; сложность Краскала определяется сортировкой, проверка циклов через DSU почти бесплатна

Частые вопросы

Чем алгоритм Краскала отличается от алгоритма Прима?

Краскал смотрит на все рёбра сразу и берёт лёгкое допустимое, даже если оно сшивает два далёких куска леса; Прим держит одно связное дерево и прирастает минимальным исходящим ребром. Краскалу нужна проверка на цикл (DSU), Приму — очередь с приоритетом. Практическое правило: разреженный граф или готовая сортировка — Краскал, плотный граф в матричном виде — Прим. Веса остовов совпадают, сами деревья могут различаться.

Всегда ли минимальный остов единственный?

Нет: при равных весах остовов может быть несколько. Единственность гарантирована, только если все веса попарно различны — тогда Краскал и Прим рисуют один и тот же граф. Суммарная стоимость при равных весах всё равно одна: минимальны все жадные построения. На равенстве весов держится и доказательство: лёгкое ребро поперёк любого разреза принадлежит хотя бы одному минимальному остову — это ключ обменного аргумента.