How it works?
Урок 3 из 9 курса Алгоритм Краскала — Алгоритмы на графах на Coddy.
Система непересекающихся множеств (Union-find) хранит массив parent. Каждая вершина изначально является своим собственным корнем. Все строится на двух операциях:
- find(x): следуйте по ссылкам
parent, пока не достигнете корня (вершины, которая является родителем самой себе). Две вершины считаются связанными, если у них общий корень. - union(a, b): направьте один корень на другой, объединяя два множества.
Алгоритм Краскала:
- Обрабатывайте ребра в порядке возрастания их веса (от меньшего к большему).
- Для каждого ребра выполните
find, чтобы найти корни его конечных точек. Если они различаются, ребро соединяет два отдельных компонента: выполнитеunionдля них и добавьте вес ребра к общей сумме. - Если корни совпадают, ребро образует цикл, поэтому пропустите его.
После обработки всех ребер выбранные ребра образуют минимальное остовное дерево (MST) (для связного графа их будет ровно n - 1).
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Алгоритм Краскала — Алгоритмы на графах
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)