Úvod do teorie grafů

Robert Mařík


Ovládání: Prezentaci je možno posouvat šipkami nebo mezerníkem. Klávesa "S" zmenšuje písmo, "B" zvětšuje (smaller/bigger). Klávesa "C" zobrazí obsah (content). Klávesou "A" se přepíná režim prezentace/html stránka.

Kliknutím na obrázek se obrázek zvětší na vertikální rozměr okna. Pro zavření zvětšeniny klikněte do zašedlého zbytku stránky nebo použijte klávesu "ESC".

Pokud se matematické výrazy nezobrazují korektně, nechejte znovunačíst stránku (Reload, Crtl+R, F5) nebo použijte alternativní verzi prezentace.

Základní pojmy

Definice (Graf)

  • Grafem (neorientovaným grafem) rozumíme dvojici \(G=(V,E)\), kde \(V\) je neprázdná množina a \(E\) je podmnožina množiny všech dvouprvkových podmnožiny množiny \(G\). Prvky množiny \(V\) nazýváme vrcholy, prvky množiny \(E\) nazýváme hrany.

  • Je-li \(e\) hrana grafu, potom její prvky nazýváme krajní body hrany.

  • Orientovaný graf definujeme analogicky, pouze navíc ke každé hraně dodáme orientaci -- jeden z vrcholů prohlásíme za počáteční a jeden z vrcholů za koncový.

  • Graf může být hranově nebo vrcholově ohodnocený -- každé hraně nebo každému vrcholu může být přiřazeno reálné číslo.

Neorientovaný, hranově ohodnocený graf

Neorientovaný, hranově ohodnocený graf

Základní pojmy (cesta, ...)

Definice (cestování v grafech)

  • Posloupnost hran, které na sebe navazují, se nazývá sled.

  • Sled, ve kterém se neopakuje žádná hrana se nazývá tah.

  • Tah, ve kterém se naopakuje žádný vrchol se nazývá cesta.

  • Délkou sledu (tahu, cesty) rozumíme bud počet hran (v grafech bez hranového ohodnocení), nebo součet hranových ohodnocení všech hran v tomto sledu (tahu, cestě).

  • Graf, ve kterém mezi každými dvěma vrcholy existuje cesta, se nazývá souvislý.

Sled (který není tahem) a tah (který není cestou) v souvislém grafu

Sled (který není tahem) a tah (který není cestou) v souvislém grafu

Nejkratší cesta (shortest path problem )

Vstup: orientovaný a neorientovaný graf s nezápornými ohodnoceními hran, výchozí bod, cílový bod

Výstup: délka nejkratší cesty mezi výchozím a cílovým bodem

Aplikace: nejkratší cesta v dopravním slova smyslu, nejkratší cesta ve smyslu výrobního procesu,

Nejkratší cesta

Nejkratší cesta

Algoritmus pro nalezení nejkratší cesty (Dijkstrův)

Výstupem tohoto algoritmu je délka nejkratší cesty z výchozího bodu do všech ostatních bodů grafu.

Mějme graf \(G=(V,E)\), v němž hledáme nejkratší cestu.

Pro každý vrchol vrchol \(v\) z \(V\) si budeme značit hodnotu \(d[v]\) pamatuje délku dosud nalezené nejkratší cesty, která sem vede z výchozího bodu. Na začátku mají všechny vrcholy v hodnotu \(d[v]=\infty\), kromě počátečního vrcholu \(s\), který má \(d[s]=0\). Nekonečno symbolizuje, že neznáme cestu k vrcholu.

Budme uvažovat dvě množiny \(Z\) a \(N\) -- zpracovaných a nezpracovaných vrcholů. V každém kroku

Příklad

Základní pojmy (nakresli jedním tahem, ...)

Definice

  • Sled, který projde právě jednou všechny hrany grafu se nazývá eulerovský.

  • Graf, ve kterém existuje uzavřený eulerovský sled se nazývá eulerovský graf.

  • Stupněm vrcholu rozumíme počet hran, které do (z) tohoto vrcholu vedou.

Úloha zjistit zda je možno graf "nakreslit jedním uzavřeným tahem" je vlastně tedy úloha na to zjistit, zda graf je nebo není eulerovský. Následující věta řeší možnost kreslení uzavřeným i otevřeným tahem.

Věta (charakterizace grafů, které lze nakreslit jedním tahem): Graf je možno nakreslit jedním tahem právě tehdy když je souvislý a všechny vrcholy jsou sudého stupně, nebo má právě dva vrcholy lichého stupně.

Jsou-li v grafu dva vrcholy lichého stupně, potom tah začíná v jednom z těchto stupňů a končí ve druhém.

Stupně vrcholů v grafu, který je možno nakreslit jedním tahem

Stupně vrcholů v grafu, který je možno nakreslit jedním tahem

Základní pojmy (strom, kostra, ...)

Definice (lesnické pojmy v grafech)

  • Tah, ve kterém splývá počáteční a koncový bod se nazývá cyklus (v orientovaných grafech) nebo kružnice (v neorientovaných grafech).

  • Graf, který neobsahuje kružnici se nazývá les. Souvislý les (tj. souvislý graf, který neobsahuje križnici) se nazývá strom.

  • Je-li \(G=(V,E)\) graf a jsou-li \(V'\) a \(E'\) podmnožiny množin \(V\) a \(E\) takové, že \(G'=(V', E')\) je grafem, nazývá se \(G'\) podgrafem grafu \(G\). Je-li \(V'=V\) (podgraf obsahuje všechny vrcholy), nazývá se \(G'\) faktorem grafu \(G\).

  • Faktor, který je stromem se nazývá kostra.

Kostra grafu je tedy podgraf, který obsahuje všechny vrcholy a takové hrany, aby výsledný podgraf byl souvislý a neobsahoval kružnice. Hran tedy nesmí být ani příliš mnoho (objevily by se kružnice) ani málo (graf by nebyl souvislý).

Věta o počtu hran ve stromu: Počet hran stromu v neorientovaném grafu je o jednu nižší než počet vrcholů.

Graf který není stromem, kružnice a kostra v tomto grafu

Graf který není stromem, kružnice a kostra v tomto grafu

Minimální kostra (minimum spanning tree)

Vstup: Souvislý graf s hranovými ohodnoceními.

Výstup: minimální kostra (kostra, s nejmenším součtem hranových ohodnocení).

Aplikace: minimalizuje celkové náklady na propojování míst (elektrickou sítí, počítačovou sítí, optimální postup při prohrnování sněhu mezi městy, ...)

Modifikace (Steiner tree problem): minimalizujeme náklady na propojení všech vesnic elektřinou, dráty se mohou sbíhat nebo rozpojovat i mimo vesnice -- velmi komplikovaný problém!

Postup (Kruskal):

Příklad

Kritická cesta (CPM, Critical path method)

Vstup: orientovaný hranově ohodnocený graf bez kružnic odpovídající sledu činností na projektu

Výstup: minimální doba trvání projektu, časové rezervy jednotlivých činností, harmonogram činností

Aplikace: plánování výrobního procesu, detekce kritických činností ve výrobním procesu

Příklad (http://hspm.sph.sc.edu/Courses/J716/CPM/CPM.html)

Činnost Předchůdce Trvání
Product design (A) (None) 5 months
Market research (B) (None) 1
Production analysis (C) A 2
Product model (D) A 3
Sales brochure (E) A 2
Cost analysis (F) C 3
Product testing (G) D 4
Sales training (H) B, E 2
Pricing (I) H 1
Project report (J) F, G, I 1
Projekt z tabulky zakreslený do grafu

Projekt z tabulky zakreslený do grafu

Algoritmus CPM

Postup:

Příklad