Loading [MathJax]/jax/output/HTML-CSS/jax.js
Přejít na obsah
Odkaz na web organizace Teiresiás

Adaptace Matematických ALGoritmů

Kruskalův algoritmus

messages.homepage.accessibility

Kruskalův algoritmus

1. Popis standardní metody algoritmu

Kruskalův algoritmus slouží k vyhledání minimální kostry grafu. Pracujeme s váženým neorientovaným grafem G = (V, E, w), kde V je množina vrcholů, E je množina neorientovaných hran a w je kladné ohodnocení hran.

  1. Na počátku algoritmu inicializujeme kostru T = (V, \emptyset) obsahující všechny vrcholy grafu G a prázdnou množinu hran.
  2. Seřadíme všechny hrany grafu G vzestupně dle jejich ohodnocení a v tomto pořadí je postupně zpracováváme.
  3. Pokud přidáním konkrétní hrany e do kostry T nevniká kružnice, přidáme e do T, v opačném případě hranu do T nepřidáme.
  4. Po zpracování poslední hrany s nejvyšším ohodnocením získáme minimální kostru T.

Při běžném provedení algoritmu pracujeme s vizuální reprezentací grafu. Hrany, které přidáváme do kostry, zvýrazňujeme (barevně či jiným způsobem) přímo v zadaném grafu. Na Obrázku 1 je znázorněn graf H o sedmi vrcholech. Je ukázána situace před zpracováním 4. hrany v pořadí, mezi uzly DG. Po prvních třech krocích se do kostry grafu vložily hrany CF, DE, CD. Jelikož přidáním hrany DG nevytvoříme kružnici, můžeme ji taktéž vložit do kostry.

Příklad 1: Vážený neorientovaný graf H
Obrázek 1: Vážený neorientovaný graf H, ukázka zvýraznění hran kostry i aktuálně zpracovávané hrany

V dalším pokračování však do kostry grafu nemůžeme přidat ani jednu hranu s ohodnocením 4, protože jejich vložením by v obou případech vznikla kružnice délky 3 (mezi trojicí C, D, F či D, E, G).

Pro názornost uvádíme i konkrétní příklad váženého neorientovaného grafu a Animaci 1 naznačující výpočet minimální kostry pomocí Kruskalova algoritmu.

Příklad 2: Vážený neorientovaný graf H
  • https://www.teiresias.muni.cz/amalg/www/images/animation/Kruskal/Minimum_spanning_tree_norm24_1.jpg
  • Počátek algoritmu - neorientovaný graf H o sedmi uzlech A, B, C, D, E, F, G
    Hrany kostry:
  • Dosud nezpracované hrany: C2F, D2E, C3D, D3G, D4F, E4G, A5C, B5D, A6D, B6E, A7B, F7G
    Nezobrazovat tento popisek
Animace 1: výpočet minimální kostry pomocí Kruskalova algoritmu

2. Návrh možných adaptací

3. Diskuze nad výhodami a nevýhodami