L04: Optimalizace sítě a „hladové“ algoritmy

STUDIJNÍ TEXT (Teorie)

V minulé lekci jsme zjistili, co je to strom (graf bez cyklů) a jak efektivně v něm lze hledat informace. Dnes přidáme grafům reálný rozměr – vzdálenost, cenu nebo čas.

1. Vážený graf (Weighted Graph)

V reálném světě nejsou všechna spojení stejná. Chemická vazba mezi dvěma atomy C–C má určitou délku a energii, která je jiná než u vazby C–H (Mimochodem, jaké jsou vazebné energie a délky těchto vazeb?).
Cesta z Prahy do Brna trvá déle než z Prahy do Kladna. Máme tu další terminologii:

  • Váha hrany: Číslo přiřazené hraně, které udává jakoby „cenu“ za průchod touto hranou.
  • Využití: GPS navigace (nejrychlejší trasa), logistika (nejlevnější rozvoz), biologie (nejmenší energetický výdej při tvorbě cév), chemie (délka vazeb) atd.
2. Minimální kostra grafu (MST – Minimum Spanning Tree)

Představte si, že máte propojit několik vesnic optickým kabelem. Nebo že tkáň potřebuje vyživit skupinu buněk novými cévami (proces zvaný angiogeneze). Cílem je propojit VŠECHNY uzly tak, aby se spotřebovalo co NEJMÉNĚ materiálu a energie.

Výsledná síť musí mít dvě základní vlastnosti:

  1. Je to strom (kostra): Nesmí tam být žádné cykly (kruhy). Cyklus znamená, že jsme někam natáhli zbytečný kabel nebo cévu navíc.
  2. Je minimální: Součet vah všech použitých hran je nejmenší možný.
3. Kruskalův „hladový“ algoritmus (Greedy Algorithm)

Jak příroda (nebo počítač) najde nejlevnější kostru? Používá takzvaný Hladový algoritmus. „Hladový“ se mu říká proto, že se v každém kroku snaží urvat to aktuálně nejlepší a nejlevnější sousto, aniž by dlouze plánoval dopředu.

Postup (Algoritmus – zkus si ho nakreslit :-)):

  1. Vypiš si všechny existující hrany a seřaď je od nejlevnější po nejdražší.
  2. Vezmi tu úplně nejlevnější hranu a nakresli ji (přidej do sítě).
  3. Vezmi další nejlevnější hranu v pořadí.
    • Zeptej se: „Nevytvoří tato hrana cyklus (kruh) s těmi, co už mám nakreslené?“
      • ANO, vytvoří: Hranu zahoď, je zbytečná.
      • NE, nevytvoří: Hranu nakresli (přidej do sítě).
  4. Kroky opakuj od bodu 2, dokud nejsou propojeny všechny uzly.

Úkol: Po ničivé vichřici v horské oblasti spadly všechny sloupy elektrického vedení. K dispozici máme jen omezené množství drahého kabelu. Naším úkolem je co nejlevněji propojit elektrárnu (E) se třemi kritickými body: nemocnicí (N), školou (Š)vodárnou (V).
Vyzkoušej si algoritmus na návrhu propojení těchto několika míst ve městě elektrickou sítí. Výchozí situaci popisuje tato matice:

Výchozí matice pro návrh elektrické sítě

A jak vypadá graf, z této matice?

Výchozí situace pro návrh elektrické sítě

Obr. 1: Ukázka grafu elektrické sítě s vyznačenou váhou hran (vzdáleností v km).

Jak bude vypadat minimální kostra tohoto grafu? Aplikujme společně Kruskalův algoritmus...

Překvapivé zjištění matematiky: Přestože algoritmus uvažuje jen o aktuálně nejlevnějším kroku a nijak „neplánuje“, u hledání minimální kostry tento „hloupý“ postup zaručeně vede k absolutně nejlepšímu celkovému výsledku!

4. Řešení příkladu s elektrickou sítí

Řešení bylo jednoduché, protože jsme nemuseli žádnou hranu zahazovat. Stačilo vzít tři „nejlevnější“ hrany :-).

řešení situace s elektrickou sítí

Obr. 2: Ukázka grafu elektrické sítě s vyznačenou váhou hran (vzdáleností v km) a nalezenou minimální kostrou grafu (zeleně).

Automatic translation

Můžete využít automatický překlad stránek do následujících jazyků. Výchozím jazykem je čeština. K automatickému překladu využíváme služeb GTranslate.
You can use automatic translation of the pages into the following languages. The default language is Czech. We use GTranslate services for automatic translation.

Czech English French German Italian Portuguese Russian Spanish

e-Mole zpravodaj

Objednejte si zasílání novinek e-mailem! Váš e-mail bude použit pouze k zasílání informací o novinkách na našem webu. Odebírání e-mailového zpravodaje můžete kdykoli zrušit (váš email bude z naší databáze trvale odstraněn).