Изменения

Перейти к: навигация, поиск

Алгоритм двух китайцев

99 байт добавлено, 19:41, 4 сентября 2022
м
rollbackEdits.php mass rollback
int res = 0
int minEdge[n] // создаем массив минимумов, входящих в каждую компоненту, инициализируем бесконечностью.
for each <tex>e \in E</tex>edges
minEdge[e.to] = min(e.w, minEdge[e.to])
for each <tex>v \in V \backslash \{root\}</tex>
res += minEdge[v] //веса минимальных ребер точно будут в результате
edge zeroEdges[] //создаем массив нулевых ребер
for each <tex>e \in E</tex>edges
if e.w == minEdge[e.to]
zeroEdges.pushback(<tex>e_1</tex>) // <tex>e_1</tex> - ребро е, уменьшенное на минимальный вес, входящий в e.to
for each <tex>e \in</tex> edges
if e.to и e.from в разных компонентах
добавляем в newEdges ребро с концами в данных компонентах и весом e.w- minEdge[e.to]
res += findMST(newEdges, ComponentsCount, newComponents[root])
return res
==См. также==
* [[Алгоритм Борувки]]
* [http://en.wikipedia.org/wiki/Edmonds%27_algorithm Edmonds' Algorithm]
* [http://rain.ifmo.ru/cat/view.php/vis/graph-spanning-trees/shortest-tree-chinese-2003 Визуализатор алгоритма]
[[Категория: Алгоритмы и структуры данных]]
[[Категория: Остовные деревья ]]
1632
правки

Навигация