1
Část I
Základní pojmy teorie grafů [Graph theory] V matematice grafem obvykle rozumíme grafické znázornění funkční závislosti. Pro tento předmět je však podstatnější pohled jiný. V teorii grafů rozumíme grafem objekt popsaný množinou vrcholů [vertices] a množinou hran [edges].
1
Neorientovaný graf
Definice 1 (Neorientovaný graf). Graf (z pohledu teorie grafů) definujme jako dvojici G = (V, E), kde V = {u1 , u2 , . . . , un } je konečná množina objektů, kterým říkáme vrcholy, někdy též uzly (dále budeme používat termín uzly) grafu a E = {ui , uj , i, j = 1, 2, . . . , n} je množina některých dvojic uzlů, kterým říkáme hrany grafu.
Obrázek 1: Příklad neorientovaného uzlového grafu – matice sousednosti (1) 2
4
1
6
3
5
Tak jak jsme zvyklí v matematice, je graf obvykle znázorněním určité situace a proto i my budeme na grafy nahlížet jako na realizace rozličných problémů. Graf pak může znázorňovat počítačovou síť, postup stavby rodinného domku, sociologické vztahy ve skupině apod. Uzly grafu ui , pro i = 1, 2, . . . , n, budeme zobrazovat jako očíslované je kroužky – viz obrázek 1. Hrany grafu ui , uj , pro i, j = 1, 2, . . . , n a i 6= j, budeme zobrazovat přímými nebo různě lomenými čarami. Obyčejný graf, tak jsem jej zavedli v definici 1, je grafem konečným, má tedy konečný počet uzlů a hran. Někdy bývá uvažováno vícero hran mezi dvěma uzly, ale touto situací se zabývat nebudeme – viz multigraf. Počet uzlů |V | = n omezuje i počet možných hran |E|, které lze v grafu udělat. Maximální počet hran v grafu bez vícenásobných hran mezi uzly a bez smyček (hrana, která vychází a končí v tom samém uzlu) je n2 . Počet všech různých n grafů vytvořených na množině n uzlů je tedy: 2( 2 ) . Pro efektivní popis grafů samotných, jakožto i popisu reálných situaci zadefinujme několik pojmů, které nám umožní srozumitelně a přesně hovořit o různých typech grafů o jejich vlastnostech a charakteristikách.
2
1
NEORIENTOVANÝ GRAF
Obrázek 2: Příklad neorientovaného uzlového grafu s vícero hranami 2
4
1
6
3
1.1
5
Definice/vysvětlení základních pojmů
• Sousedními uzly nazveme nazveme takovou dvojici uzlů, která je spojena hranou. Hrana ui , uj je pak incidentní s uzly ui a uj , pro i, j = 1, 2, . . . , n a i 6= j. • Multigraf je graf, ve kterém mezi některou dvojicí uzlů existuje více hran (obrázek 2). • Stupeň uzlu deg(ui ) definujeme jako počet hran, které do uzlu vstupují/vztupují1 . Platí: n P deg(ui ) = 2 · |E|, neboť každá hrana začíná/končí2 ve dvou uzlech. i=1
• Okolím uzlu ui nazveme množinu všech uzlů, do kterých vede z uzlu ui hrana. • Diskrétním grafem nazveme takový graf, který neobsahuje ani jednu hranu. Naopak úplným (komplexním) grafem bude nazýván takový graf, který obsahuje všechny možné hrany3 . Obrázek 3 zobrazuje čtyřuzlový diskrétní a kompletní graf. Obrázek 3: Čtyřuzlový diskrétní (vlevo – matice sousednosti (2)) a komplexní (vpravo – matice sousednosti (3)) graf 1
2
1
2
3
4
3
4
D4
K4
• Doplněk grafu G = (V, E) je graf (V, E 0 ), který obsahuje právě ty hrany, které neobsahuje graf původní. Například grafy D4 a K4 z obrázku 3 jsou si doplňkem. 1
Uvědomme si, že mluvíme o neorientovaném grafu. U neorientovaného grafu nelze rohodnout 3 Uvědomme si, že mluvíme o neorientovaném grafu, který není multigrafem! 2
1.1
Definice/vysvětlení základních pojmů
3
• Podgraf grafu G = (V, E) je graf takový G0 , který vznikne z toho původního vypuštěním některých uzlů nebo některých hran. Úplným podgrafem nazýváme takový podgraf, který má s ohledem na vypuštěné uzly všechny hrany, které měl graf původní, tj. nemá jen ty hrany, které by vedly k vypuštěným uzlům. • Sledem obvykle rozumíme posloupnost uzlů, kde pro uzel ui a uzel následující ui+1 existuje hrana. Někteří autoři sledu říkají procházka. • Sled končící ve stejném uzlu, ve kterém začal se nazývá cyklus, nebo také kružnice. Kružnice je tedy sled, ve kterém jsou všechny uzly pospojované – jakoby navlečené na niť. Dvě různé kružnice na šesti uzlech zobrazuje obrázek 4. Obrázek 4: Kružnice na šesti uzlech (vlevo – matice sousednosti (4) i vpravo – matice sousednosti (5)) 2
2
1
3
1
3
6
4
6
4
5
5
C6
C6
• Graf bez kružnice (cyklu) se nazývá acyklický. • Pokud se ve sledu žádný z uzlů neopakuje víckrát mluvíme o cestě. • Méně přísným požadavkem na graf než je předpoklad sledu je neexistence opakující se hrany. V tomto případě mluvíme o tahu. U tahu se tedy uzly opakovat mohou. • Pro vyjádření obyčejného grafu například pro softwareovou implementaci se nejčastěji používá tzv. matice sousednosti – obvykle značeno AG . Matice sousednosti (nebo také incidenční matice) je čtvercová matice, která má na pozici ij nulu pokud mezi i-tým a j-tým uzlem neexistuje hrana. Pokud mezi i-tým a j-tým uzlem hrana existuje je ij-tá pozice obsazena jedničkou. Matice sousednosti pro obyčejné grafy jsou přílohách a odkazované v popiscích obrázků jednotlivých grafů. Je zřejmé, že popis multigrafu by musel probíhat jinak. Vzhledem k tomu, že zatím byla řeč jen o neorientovaných grafech, musí být matice sousednosti symetrické podle hlavní diagonály.
4
1
NEORIENTOVANÝ GRAF
• Dalším možným vyjádřením důležitých vlastností grafů je matice dosažitelnosti (RG ) a matice vzdáleností 4 (DG ). Jedná se opět o čtvercové matice. Matice dosažitelnosti má na pozici ij nulu pokud mezi i-tým a j-tým uzlem neexistuje procházka. Pokud mezi i-tým a j-tým uzlem procházka existuje je ij-tá pozice obsazena jedničkou. Matice vzdáleností má na pozici ij nulu pokud mezi i-tým a j-tým uzlem neexistuje procházka. Pokud mezi i-tým a j-tým uzlem procházka existuje je ij-tá pozice obsazena počtem hran, který obsahuje nejkratší cesta. Zkuste vytvořit tyto matice jako cvičení. • Průměrem grafu je nejdelší vzdálenost kroků mezi libovolnými uzly. Průměr je nejvyšší hodnota v matici vzdáleností. • Excentricitou vrcholu ui označíme nejdelší z nejkratších cest, tj. nejvyšší číslo v i-tém řádku matice vzdáleností. • Uzel/uzly s nejnižší excentricitou se nazývají středem grafu. Excentricitu těchto uzlů navíc označujeme jako poloměr grafu. • Hamiltonovskou cestou nazveme takovou cestu, která prochází skrz všechny uzly. Končíli cesta ve stejném uzlu jako začala mluvíme o Hamiltonovské kružnici. Hamiltonovský graf je tedy graf obsahující alespoň jednu hamiltonovskou kružnici. • Graf, který lze nakreslit jedním tahem (žádná hrana se neopakuje), nazýváme eulerovským grafem. Obrázek 5: Eulerovský graf 2 7
6 3
1
4 2
8 4
3
1
5 5
• Souvislý graf je takový graf, pro který platí, že pro všechny dvojice jeho uzlů existuje alespoň jedna cesta, která je spojuje5 . • Kostrou grafu nazveme libovolný podgraf grafu původního, který obsahuje všechny uzly a který je stále souvislý. Tj. vypouštíme pouze některé hrany, ale tak, aby i po vypoštění zůstal graf souvislý. • (Souvislými) komponentami se nazývají takové maximální úplné podgrafy, které jsou souvislé (tj. přidáním/znovuvrácením dalšího uzlu původního grafu by se podgraf stal nesouvislým). 4 5
Matice vzdáleností je daleko zajímavější za předpokladu stranově ohodnoceného orientovaného grafu Matice dosažitelnosti obsahuje samé jedničky.
5 • Graf, který lze překreslit tak, aby se jeho hrany nekřížily se nazývá rovinným grafem. • Stromem je takový souvislý graf, který neobsahuje cyklus. Příkladem může být logický strom zobrazující jak může proběhnout tenisové utkání, které se hraje na dva vyhrané sety. Každý set může vyhrát hráč A nebo hráč B. A aby to nebylo tak jednoduché uvažme, že hráč A či hráč B může odstoupit, tj. utkání „skrečovatÿ. První set tedy může vyhrát hráč A nebo hráč B a utkání pokračuje, nebo vzdá hráč A či B a utkání končí. Po druhém setu utkání skončí jen v případě, že vyhrál stejný hráč jako v setu prvním, nebo opět někdo skrečuje. To se to komplikuje, že? Pojďme možné výsledky uspořádat do logického stromu, kde A bude znamenat vítězství hráče A v setu, AS skreč hráče A u hráče B obdobně. Spojnice mezi jednotlivými stavy nazýváme větve a stavy, které jsou konečné, pak listy. Listy na obrázku 6, které jsou červené, zobrazují výsledek, který skončil vítězstvím hráče A, modré pak symbolizují vítězství hráče B. Počet listů (16) je počtem všech možných výsledků tenisového zápasu. V polovině vyhrává samozřejmě hráč A v polovině hráč B. Obrázek 6: Logický strom výsledků tenisového zápasu S
A
A
A
B
BS
AS
AS
AS
BS
BS
B
BS
B
AS
A
A
BS
B
AS
B
Jak se situace změní pokud budeme uvažovat orientované hrany popisuje následující podkapitola.
2
Orientovaný graf
Definice 2 (Orientovaný graf). Graf (z pohledu teorie grafů) definujme jako dvojici G = (V, E), kde V = {u1 , u2 , . . . , un } je konečná množina objektů, kterým říkáme vrcholy, někdy též uzly grafu a E = {ui , uj , i, j = 1, 2, . . . , n} je množina některých uspořádaných dvojic uzlů, kterým říkáme orientované hrany grafu. Orientace hrany bývá v grafu zobrazena šipkou. Některé pojmy jsou shodné pro orientované i neorientované grafy. Některé pojmy naopak mají smysl jen pro jeden typ grafů. Následující definice se týkají výhradně orientovaných grafů. I u nich však nepředpokládme existenci cyklů a více souhlasně orientovaných hran.
6
2
ORIENTOVANÝ GRAF
Obrázek 7: Příklad orientovaného uzlového grafu – matice sousednosti (6) 2
4
1
6
3
2.1
5
Definice/vysvětlení základních pojmů
• Orientovaným sledem je obvykle rozuměna posloupnost uzlů kde pro uzel ui a uzel následující ui+1 existuje orientovaná hrana. • Pokud se v orientovaném sledu žádný z uzlů neopakuje víckrát mluvíme o orientované cestě. • Podobně se definuje orientovaný tah, Hamiltonovská cesta a Hamiltonovská kružnice v orientovaném grafu. • Síť je konečný souvislý, orientovaný, acyklický graf, v němž existuje jeden počáteční uzel (nevstupuje do něj žádná hrana) a jeden uzel koncový (žádná hrana z něj nevystupuje). Příkladem sítě je telefonní síť, rozvod plynu, kanalizace, atd. Příkladem může být na rozdíl od grafu na obrázku 7 graf na obrázku 8. Obrázek 8: Příklad sítě – matice sousednosti (7) 2
4
POČÁTEK
KONEC
1
6
3
5
Konkrétní použití grafů je součástí ostatních kapitol.
7
A
Matice sousednosti
A.1
Neorientované grafy
1. Matice sousednosti pro graf 1
0 1 1 0 0 0
0 0 0 1 1 0
1 0 1 1 1 0
1 1 0 0 1 0
0 1 0 0 0 1
0 1 1 0 0 1
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
(2)
1 0 1 1
1 1 0 1
1 1 1 0
(3)
0 1 0 1 0 0
0 0 1 0 1 0
0 0 0 1 0 1
1 0 0 0 1 0
1 0 0 0 1 0
0 1 0 0 1 1
0 1 1 0 0 0
1 0 0 1 0 0
(1)
2. Matice sousednosti pro graf 3 – vlevo
3. Matice sousednosti pro graf 3 – vpravo
0 1 1 1 4. Matice sousednosti pro graf 4 – vlevo
0 1 0 0 0 1
1 0 1 0 0 0
(4)
5. Matice sousednosti pro graf 4 – vpravo
0 0 1 0 0 1
0 0 0 1 1 0
(5)
8
A
A.2
MATICE SOUSEDNOSTI
Orientované grafy
1. Matice sousednosti pro graf 7
0 0 0 0 0 0
1 0 0 0 0 0
1 1 0 0 0 0
0 1 0 0 0 0
0 1 1 0 0 1
0 0 0 1 1 0
0 0 0 0 0 0
1 0 0 0 0 0
1 1 0 0 0 0
0 1 0 0 0 0
0 1 1 0 0 0
0 0 0 1 1 0
(6)
2. Matice sousednosti pro graf 8
(7)