Kostra grafu
V teorii grafů je kostra souvislého grafu G takový podgraf souvislého grafu G na množině všech jeho vrcholů, který je stromem.
Příklady
- Kružnice na n vrcholech (graf ) má právě n různých koster.
- Libovolný strom má jedinou kostru – sám sebe.
- Úplný graf na n vrcholech má právě různých koster (tzv. Cayleyho vzorec).
Algoritmy pro hledání kostry
Libovolná kostra
Následující základní algoritmus je schopen nalézt nějakou (blíže neurčenou) kostru:
- Nechť je graf s n vrcholy a m hranami; seřaďme hrany G libovolně do posloupnosti ; položme .
- Byla-li již nalezena množina , spočítáme množinu takto:
- ∪ {}, neobsahuje-li graf (V, ∪ ) kružnici,
- jinak.
- Algoritmus se zastaví, jestliže buď již obsahuje n − 1 hran nebo i = m, tedy se probraly všechny hrany z G. Graf pak představuje kostru grafu G.
Minimální kostra
Je-li navíc definována funkce (tzv. ohodnocení hran), má smysl hledat minimální kostru – tedy takovou kostru , že výraz
nabývá minimální hodnoty.
Tuto úlohu řeší několik algoritmů, které jsou označovány jako hladové, neboť jednou provedená rozhodnutí už nikdy nemění, čili „hladově“ postupují přímo k řešení.
Předpokládejme, že je dán souvislý graf G = (V, E) s ohodnocením w:
Kruskalův algoritmus
Předpokládejme navíc, že hrany jsou uspořádány tak, že platí .
Pro toto uspořádání provedeme algoritmus pro hledání libovolné kostry (viz výše).
Borůvkův algoritmus
Předpokládejme, že ohodnocení hran v grafu je prosté. Algoritmus pracuje ve fázích tak, že postupně spojuje komponenty souvislosti (na počátku je každý vrchol komponentou souvislosti) do větších a větších celků, až zůstane jen jediný, a to je hledaná minimální kostra. V každé fázi vybere pro každou komponentu souvislosti hranu s co nejnižší cenou, která směřuje do jiné komponenty souvislosti a tu přidá do kostry.
Jarníkův algoritmus
- Nechť a . Položme , kde v je libovolný vrchol G.
- Nalezneme hranu nejmenší možné váhy z množiny hran takových, že .
- Položíme a .
- Pokud žádná taková hrana neexistuje, algoritmus končí a , jinak pokračuj krokem 2.
Nejrychlejší známý deterministický algoritmus pro hledání minimální kostry grafu vytvořil Bernard Chazelle modifikací Borůvkova algoritmu. Asymptotická časová složitost tohoto algoritmu je O(E α(V)), kde α je inverzní Ackermannova funkce.
Literatura
- Jiří Matoušek, Jaroslav Nešetřil: Kapitoly z diskrétní matematiky, nakladatelství Karolinum, Praha 2002, ISBN 80-246-0084-6
- Jakub Černý: Základní grafové algoritmy (texty v pdf)
Externí odkazy
- Obrázky, zvuky či videa k tématu kostra grafu na Wikimedia Commons
- Kruskalův algoritmus- animace a příklady, bakalářská práce z MFF UK
- Maximální kostra grafu – využití algoritmu pro zjištění maximální kostry grafu pro link building
Média použitá na této stránce
Autor: Максим Куковеров, Licence: CC BY-SA 4.0
On the picture are shown 3 out of 4 638 576 (or out of 580 717, if rotations and reflections are not counted as distinct) Hamiltonian cycles on 8 X 8 square grid of points ( http://oeis.org/A003763 ) ( http://oeis.org/A209077 )
Un ejemplo de árbol expandido mínimo. Cada punto representa un vértice, el cual puede ser un árbol por sí mismo. Se usa el Algoritmo para buscar las distancias más cortas (árbol expandido) que conectan todos los puntos o vértices.
Autor: Původně soubor načetl Pitel na projektu Wikipedie v jazyce čeština, Licence: BSD
Kostra (červeně) grafu (černě).