Алгоритм Прима
MST растёт из вершины: всегда самое дешёвое ребро из дерева наружу.
1function prim(edges: Edge[], start: string): Edge[] {2 const inTree = new Set<string>([start])3 const mst: Edge[] = []4 5 while (inTree.size < vertices(edges).length) {6 // самое дешёвое ребро из дерева наружу7 let best: Edge | null = null8 for (const e of edges) {9 const out = inTree.has(e.from) !== inTree.has(e.to)10 if (out && (best === null || e.weight < best.weight)) best = e11 }12 inTree.add(best!.from)13 inTree.add(best!.to)14 mst.push(best!)15 }16 17 return mst18}Проблема
MST растёт из вершины: всегда самое дешёвое ребро из дерева наружу.
Что вы видите
Дерево-снежный ком: каждый шаг добавляет самую дешёвую связь с внешним миром.
Как это работает
Дополняет Краскала: тот собирает лес рёбер, Прим растёт одно дерево. Итог один и тот же — вес MST единственный.
Пошаговый разбор
- 01
Из дерева наружу
Кандидаты — граничные рёбра.
- 02
Минимум
Самое дешёвое забираем.
- 03
Рост
Пока не покрыты все вершины.
Complexity и ограничения
См. complexity в шапке страницы.
Edge cases
- Пустой вход
Корректно завершается без лишних шагов.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Продукт
Классический приём в реальных системах.
Собеседования
Стандартный вопрос на понимание структуры.
Связанные алгоритмы
«Дерево-снежный ком: MST по Приму»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.