Алгоритм Краскала
MST: рёбра по возрастанию веса, создающие цикл — отбрасываем.
1function kruskal(edges: Edge[]): Edge[] {2 const sorted = [...edges].sort((a, b) => a.weight - b.weight)3 const uf = new UnionFind()4 const mst: Edge[] = []5 6 for (const e of sorted) {7 if (uf.find(e.from) !== uf.find(e.to)) {8 uf.union(e.from, e.to)9 mst.push(e)10 }11 }12 13 return mst14}Проблема
MST: рёбра по возрастанию веса, создающие цикл — отбрасываем.
Что вы видите
Рёбра сортируются; Union-Find проверяет, не замкнёт ли ребро цикл.
Как это работает
Жадность работает: минимальное остовное дерево собирается из локально лучших рёбер. Сортировка + DSU = O(E log E).
Пошаговый разбор
- 01
Сортировка
Рёбра по весу.
- 02
Проверка
Union-Find: один корень — цикл.
- 03
Набор
V−1 ребро — дерево готово.
Complexity и ограничения
См. complexity в шапке страницы.
Edge cases
- Пустой вход
Корректно завершается без лишних шагов.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Продукт
Классический приём в реальных системах.
Собеседования
Стандартный вопрос на понимание структуры.
Связанные алгоритмы
«Соединить всё подешевле: Краскал»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.