Borůvkův algoritmus
Borůvkův algoritmus slouží k nalezení minimální kostry grafu (kostry takové, že je součet vah jejích hran minimální). Byl vymyšlen českým matematikem Otakarem Borůvkou za účelem nalezení efektivního trasování elektrické sítě na Moravě. Algoritmus byl později několikrát znovuobjeven, proto se o něm lze dočíst také jako o Sollinově algoritmu.
Borůvkův algorimus funguje na principu skládání komponent. Na začátku jsou všechny uzly grafu nepropojené samostatné komponenty. Algoritmus v každém svém kroku propojí každou komponentu s jinou komponentou pomocí nejkratší možné hrany. Po maximálně krocích je kostra postavena (asymptotická složitost je tedy
).
Významnou výhodou Borůvkova algoritmu je snadná paralelizace spojování jednotlivých komponent řešení. Nevýhodou základní implementace je, že všechny hrany musí mít různé ohodnocení (aby při spojování dvou komponent nedošlo k jejich propojení různými hranami stejné váhy).
Kód
/**
* Boruvkuv algoritmus
* V teto podobe nesnese graf s dvema stejne ohodnocenymi hranami
* @param graph graf
* @param weight vahy jednotlivych hran
* @return minimalni kostra
*/
boruvkaAlgorithm(graph, weight)
SpanningTree tree //kostra
components = graph.vertices //na pocatku jsou vrcholy nepospojovany
while components.size > 1 do
for each component in components //pro vsechny komponenty
edge e = connectWithMinimalEdge(component, weight) //propojime s jinou komponentou pomoci minimalni hrany
tree.add(e) //hranu pridame do kostry
return tree



překlep v kódu: "grapg" má být "graph"