Kostra grafu

Kostra (červeně) grafu (černě)

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 C n {\displaystyle C_{n}} ) má právě n různých koster.
  • Libovolný strom má jedinou kostru – sám sebe.
  • Úplný graf na n vrcholech má právě n n 2 {\displaystyle n^{n-2}} 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:

  1. Nechť G = ( V , E ) {\displaystyle G=(V,E)} je graf s n vrcholy a m hranami; seřaďme hrany G libovolně do posloupnosti ( e 1 , e 2 , , e m ) {\displaystyle (e_{1},e_{2},\ldots ,e_{m})} ; položme E 0 = {\displaystyle E_{0}=\emptyset } .
  2. Byla-li již nalezena množina E i 1 {\displaystyle E_{i-1}} , spočítáme množinu E i {\displaystyle E_{i}} takto:
    • E i = E i 1 {\displaystyle E_{i}=E_{i-1}} ∪ { e i {\displaystyle e_{i}} }, neobsahuje-li graf (V, E i 1 {\displaystyle E_{i-1}} e i {\displaystyle {e_{i}}} ) kružnici,
    • E i = E i 1 {\displaystyle E_{i}=E_{i-1}} jinak.
  3. Algoritmus se zastaví, jestliže buď E i {\displaystyle E_{i}} již obsahuje n − 1 hran nebo i = m, tedy se probraly všechny hrany z G. Graf T = ( V , E i ) {\displaystyle T=(V,E_{i})} pak představuje kostru grafu G.

Minimální kostra

Minimální kostra grafu

Je-li navíc definována funkce w : E R {\displaystyle w:{\mathit {E}}\rightarrow \mathbb {R} } (tzv. ohodnocení hran), má smysl hledat minimální kostru – tedy takovou kostru ( V , E ) {\displaystyle ({\mathit {V}},{\mathit {E}}')} , že výraz

w ( E ) = e E w ( e ) {\displaystyle w(E')=\sum _{e\in {\mathit {E}}'}w(e)}

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

Podrobnější informace naleznete v článku Kruskalův algoritmus.

Předpokládejme navíc, že hrany jsou uspořádány tak, že platí w ( e 1 ) w ( e 2 ) w ( e m ) {\displaystyle w(e_{1})\leq w(e_{2})\leq \ldots \leq w(e_{m})} .

Pro toto uspořádání provedeme algoritmus pro hledání libovolné kostry (viz výše).

Borůvkův algoritmus

Podrobnější informace naleznete v článku 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

Podrobnější informace naleznete v článku Jarníkův algoritmus.
  1. Nechť | V | = n {\displaystyle |{\mathit {V}}|=n} a | E | = m {\displaystyle |{\mathit {E}}|=m} . Položme E 0 = , V 0 = { v } {\displaystyle {\mathit {E_{0}}}=\emptyset \;,{\mathit {V_{0}}}=\{v\}} , kde v je libovolný vrchol G.
  2. Nalezneme hranu e i = { x i , y i } E ( G ) {\displaystyle e_{i}=\{x_{i},y_{i}\}\in {\mathit {E(G)}}} nejmenší možné váhy z množiny hran takových, že x i V i 1 , y i V V i 1 {\displaystyle x_{i}\in {\mathit {V}}_{i-1},y_{i}\in {\mathit {V}}\setminus {\mathit {V}}_{i-1}} .
  3. Položíme V i = V i 1 { y i } {\displaystyle {\mathit {V_{i}}}={\mathit {V}}_{i-1}\cup \{y_{i}\}} a E i = E i 1 { e i } {\displaystyle {\mathit {E_{i}}}={\mathit {E}}_{i-1}\cup \{e_{i}\}} .
  4. Pokud žádná taková hrana neexistuje, algoritmus končí a T = ( V i , E i ) {\displaystyle T=({\mathit {V_{i}}},{\mathit {E_{i}}})} , 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

  • Logo Wikimedia Commons 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
Autoritní data Editovat na Wikidatech
  • LCCN: sh2005003951
  • NLI: 987007551954805171