Kostra grafu

Kostra (červeně) grafu (černě)
Tři příklady na mřížkovém grafu 8x8

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:

  1. Nechť je graf s n vrcholy a m hranami; seřaďme hrany G libovolně do posloupnosti ; položme .
  2. Byla-li již nalezena množina , spočítáme množinu takto:
    • ∪ {}, neobsahuje-li graf (V, ) kružnici,
    • jinak.
  3. 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

Minimální kostra grafu

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

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

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ť a . Položme , kde v je libovolný vrchol G.
  2. Nalezneme hranu nejmenší možné váhy z množiny hran takových, že .
  3. Položíme a .
  4. 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

Média použitá na této stránce

Натурализация гамильтоновых циклов.jpg
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 )
Minimum spanning tree.svg
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.
Spanning tree.svg
Autor: Původně soubor načetl Pitel na projektu Wikipedie v jazyce čeština, Licence: BSD
Kostra (červeně) grafu (černě).