Základy informatiky 07 Teorie grafů Kačmařík/Szturcová/Děrgel/Rapant
Obsah přednášky barvení mapy teorie grafů definice uzly a hrany typy grafů cesty, cykly, souvislost grafů
Barvení mapy Kolik barev je potřeba k obarvení mapy zobrazující jednotlivé státy? https://teorie-grafu.cz/vybrane-problemy/barveni-mapy.php
Barvení mapy https://teorie-grafu.cz/vybrane-problemy/barveni-mapy.php
Barvení mapy spojitost s grafy jeden stát = jeden uzel grafu hranice dvou států = jedna hrana grafu https://teorie-grafu.cz/vybrane-problemy/barveni-mapy.php
Barvení mapy spojitost s grafy praktické využití úlohy = sítě mobilních operátorů malé buňky, každá má svoji základnovou stanici (BTS), se kterou mobily komunikují na určité frekvenci snahou je eliminovat počet buněk s nutností splnit podmínku, kdy dvě sousední buňky nemohou používat stejnou frekvenci https://teorie-grafu.cz/vybrane-problemy/barveni-mapy.php
Teorie grafů Teorie grafů zkoumá vlastnosti struktur, zvaných grafy grafy umožňují jednoduše a přehledně popisovat reálné systémy: které jsou standardně reprezentovány pomocí sítí (počítačové sítě, silniční sítě, atd.) nebo které mohou být na grafovou reprezentaci převedeny Grafové algoritmy umožňují zpracovávat grafy, hledat nejkratší nebo nejrychlejší cesty, počítat propustnost sítě, atd.
Definice grafu Graf je definován jako dvojice e v G = (V, E) v kde: v 1 e 1 e 5 e 5 V je množina vrcholů E je množina hran e 12 v 2 e 2 e 6 e 56 v 5 v 6
Konvence V(G) E(G) G G G = (, ) množina vrcholů v grafu G množina hran v grafu G počet vrcholů v grafu G počet hran v grafu G prázdný graf v ϵ e vrchol v náleží hraně e (v je incidentní s hranou e) d v stupeň vrcholu (počet hran, se kterými je vrchol incidentní)
Typy grafů orientovaný jeho hrany jsou definovány uspořádanými dvojicemi bodů neorientovaný jeho hrany jsou dvouprvkové množiny bodů (nezáleží na orientaci). v v v 1 v 1 v 2 v 2
Ohodnocený graf ohodnocený graf jeho hrany jsou opatřeny číselnými nebo jinými hodnotami w ij (reprezentují délky úseků silnic, možnost různých časových průjezdů v opačných směrech w ij w ji ) v 6 v v 1 v 2 10 12 1 v 5 11 v 7 v 6 7 v
Sled sled (orientovaný, neorientovaný) je posloupnost vrcholů a hran, následující hrana začíná v uzlu, ve kterém předchozí hrana končí otevřený, uzavřený v 1 v v v 1 v v 2 v 5 v 2 v 5 v 6 v 6
Tah sled, v němž se žádná hrana neopakuje orientovaný, neorientovaný otevřený, uzavřený
Eulerovský tah https://popelka.ms.mff.cuni.cz/~lessner/mw/index.php/u%c%debnice/grafy/jednota%c5%beky
Eulerovský tah Sedm mostů města Královce Je možné všechny mosty přejít tak, aby ten, kdo se o to pokouší, vstoupil na každý most pouze jednou? http://cs.wikipedia.org/wiki/sedm_most%c5%af_m%c%9bsta_kr%c%a1lovce
Cesta sled, v němž se neopakuje ani žádná hrana, ani žádný uzel orientovaná, neorientovaná otevřená, uzavřená
Dosažitelnost vrcholů Vrchol B je dosažitelný z vrcholu A, pokud existuje alespoň jedna cesta z vrcholu A do vrcholu B v v 1 Příklad: vrchol v je dosažitelný z v 2 (naopak to neplatí) v 2
Cyklus sled, jehož první vrchol je totožný s posledním, se nazývá cyklus v v v 1 C = {v,v 5,v 6,v } v 2 v6 v 5 graf, který neobsahuje žádný cyklus, se nazývá acyklický cyklus se může nacházet i v neorientovaném grafu
Souvislost grafu každý neprázdný graf G se nazývá souvislý, pokud existuje sled mezi kteroukoliv dvojicí vrcholů u orientovaných grafů se při vyhodnocování souvislosti orientace nebere v úvahu v v v 1 v 5 v 2 v 6
Úloha krizový plán pro silné sněžení situace:... silné sněžení v oblasti severní Moravy předpoklad nesjízdnost vozovek; údržba cest musí být provedena tak, aby byla zaručena dostupnost všech obcí ze seznamu silnic vybereme takové, aby: všechny obce byly dostupné, a součet nákladů na udržování vybraných silnic byl co nejmenší potřebujeme vstupní data: mapu silnic náklady na údržbu jednotlivých silnic
Úloha krizový plán pro silné sněžení
Minimální kostra Výchozí graf se upraví tak, aby výsledný graf splňoval následující požadavky: stejný počet vrcholů souvislý acyklický s minimálním celkovým ohodnocením
Minimální kostra kostra u souvislého grafu vždy existuje a má n-1 hran (n je počet vrcholů grafu) Kruskalův algoritmus: přidáváme hranu s nejmenším ohodnocením tak, aby nevznikl cyklus http://homel.vsb.cz/~kov16/talks/algoritmy/
Stromy spojitý a acyklický graf se nazývá strom v v v 1 v 5 v 2 v 6
Úplný graf úplný graf je takový graf, ve kterém je každý vrchol propojen hranou se všemi ostatními vrcholy v grafu
Multigraf multigraf je takový graf, který obsahuje alespoň jednu násobnou hranu (dva vrcholy spojené dvěma nebo více hranami)
Bipartitní graf bipartitní graf je takový graf, ve kterém se množina vrcholů V skládá ze dvou disjunktních podmnožin X, Y zvaných parity X v 1 v Y množina hran E takového grafu obsahuje pouze hrany, jejichž jeden koncový vrchol leží v množině X a druhý koncový vrchol v množině Y v 2 v v 5 v 6 žádné dva vrcholy z parity X (resp. Y) nejsou spojeny hranou v 7
Bipartitní graf Příklad: výběr partnerů v tanečních http://homel.vsb.cz/~kov16/talks/algoritmy/obrazky/tanecni.gif
Úplné párování párování P nazývá úplné, jestliže každý vrchol je koncovým vrcholem právě jedné hrany v P http://homel.vsb.cz/~kov16/talks/algoritmy/obrazky/tanecnireseni.gif
Disktrétní graf diskrétní graf je takový graf, který nemá žádnou hranu ( G = 0) v 2 v 1 v v 5 v
Reprezentace grafu nakreslení grafu (obrázek) v v 1 matice sousednosti (popř. matice incidence) v 2 A = 0 1 1 1 0 0 1 0 0
Reprezentace grafu seznam vrcholů a jejich sousedů v 1 -> v 2 v 1 -> v seznam hran G = {(v 1,v ), (v 1,v 2 )}
Nakreslení grafu vrcholy grafu jsou nakresleny jako body (kroužky), hrany jako čáry orientovanou hranu znázorňujeme šipkou od počátečního vrcholu ke koncovému existuje mnoho různých nakreslení stejného grafu výhodou je přehlednost nakreslení je nevýhodné v případě rozsáhlého grafu, nebo pokud vyžadujeme automatické zpracování grafu v 1 v v 1 v v 2 v 2
Seznam hran graf je dán seznamem hran neorientovaný graf: v h 2 v 1 v 2 G = {(v 1, v 2 ), (v 2,v ), (v 2,v )} h 1 h v
Seznam hran graf je dán seznamem hran orientovaný graf: v h 2 v 1 v 2 G = {(v 1, v 2 ), (v,v 2 ), (v 2,v )} h 1 h v
Matice sousednosti Postup pro vytvoření: očíslujeme vrcholy (v 1... v n ) matici sousednosti A pak vytvoříme takto: A i,j = ቊ 1... pokud v i je incidentní s v j 0... v opačném případě v případě ohodnocených hran může být A i,j = w i,j, kde w i,j je hodnota hrany matice sousednosti neorientovaného grafu bude vždy symetrická (u orientovaného grafu tomu tak být nemusí)
Matice sousednosti v v 2 v 1 v 1 v 2 v v v 1 0 1 0 0 v 2 1 0 1 1 v 0 1 0 0 v 0 1 0 0 v
Matice incidence tato reprezentace je vhodná pro automatické zpracování počítačem nevýhodou je nepřehlednost pro člověka Postup pro vytvoření: očíslujeme vrcholy (v 1... v n ) a hrany (h 1, h m ) matici incidence A pak vytvoříme takto: A i,j = ቊ 1... pokud v i je incidentní s h j 0... v opačném případě v případě ohodnocených hran může být A i,j = w i,j, kde w i,j je hodnota hrany
Matice incidence v h 2 v 1 h 1 v 2 h v h 1 h 2 h v 1 1 0 0 v 2 1 1 1 v 0 1 0 v 0 0 1
Seznam sousedů graf je dán seznamem vrcholů a jejich sousedů neorientovaný graf: v h 2 v 1 v 2 v 1 v 2 v 2 v 1, v, v h 1 h v v 2 v v 2 v
Seznam sousedů graf je dán seznamem vrcholů a jejich sousedů orientovaný graf: v v 1 v 2 h 2 v 1 v 2 v 2 v h 1 h v v 2 v v
Prohledávání grafu prohledávání grafu je systematický postup, kterým můžeme řešit například hledání nejkratší, nejdelší, nejlevnější cesty z jednoho vrcholu do druhého, popřípadě zjišťovat dostupnost vrcholů v grafu, vyhledávat uzel odpovídající zadanému kritériu apod. například při vyhledávání postupujeme takto: z výchozího uzlu se postupně přesouváme po hraně k dalšímu a zkoumáme, zda cílový uzel přesunu vyhovuje našemu kritériu úloha končí buď nalezením hledaného uzlu, nebo prohledáním celého grafu bez kladného výsledku
Prohledávání grafu Existují dvě základní strategie: prohledávání grafu do hloubky (angl. depth-first search DFS) prohledávání grafu do šířky (angl. breadth-first search BFS)
Prohledávání grafu do hloubky tento algoritmus si lze představit jako průchod bludištěm, kdy procházím z místnosti do místnosti po chodbách a v dosažené místnosti si vybíráme chodbu, po které jsme ještě nešli pokud taková chodba neexistuje, musíme se z této místnosti vrátit do předešlé místnosti algoritmus končí, pokud jsme prošli všechny uzly grafu nebo pokud jsme našli cílový uzel
Prohledávání grafu do hloubky Postup prohledávání do hloubky využívá zásobník: 1. do zásobníku zařadíme výchozí uzel 2. uzel odebereme ze zásobníku a porovnáme jej s hledanou hodnotou. je-li to hledaný uzel: a) pak ukončíme prohledávání a vrátíme uzel ve výsledku, b) jinak zařadíme do zásobníku následné uzly dostupné z tohoto uzlu, dosud neprozkoumané. je-li zásobník prázdný: a) pak všechny uzly byly porovnány; prohledávání je ukončeno, vracíme výsledek Hledaný uzel nebyl nalezen, b) jinak opakujeme bod 2.
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 2 1 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 2 5 6 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 9 10 11 12 1 5 6 10 6 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 9 10 11 12 1 10 6 10 6 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 10 6 6 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 1 6
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 1 7
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 11 12 1 7 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 11 12 1 12 1 1 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 1 12 12 1 1 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 1 12 1 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 1 1
Prohledávání grafu do hloubky 1 2 5 6 7 9 10 11 12 1 1 Hledaný je uzel č.
Prohledávání grafu do šířky Odlišnost tohoto algoritmu spočívá v tom, že se z dosaženého vrcholu rozhlédneme najednou do všech sousedních vrcholů. Postup prohledávání do šířky využívá frontu: 1. Do fronty zařadíme výchozí uzel 2. Uzel odebereme z fronty a porovnáme jej
Prohledávání grafu do šířky. je-li to hledaný uzel: a) pak ukončíme prohledávání a vrátíme jej ve výsledku b) jinak zařadíme do fronty dostupné uzly, které ještě nebyly porovnány. je-li fronta prázdná: a) pak byly porovnány všechny uzly. Prohledávání je ukončeno, vracíme výsledek Hledaný uzel nebyl nalezen b) jinak opakujeme bod 2
Prohledávání grafu do šířky 1 1 2 5 6 7 2 9 10 11 12 1 1
Prohledávání grafu do šířky 1 2 2 5 6 7 6 5 9 10 11 12 1 1
Prohledávání grafu do šířky 1 6 5 2 5 6 7 6 5 9 10 11 12 1 1
Prohledávání grafu do šířky 1 6 5 2 5 6 7 7 6 5 9 10 11 12 1 1
Prohledávání grafu do šířky 1 7 6 5 2 5 6 7 10 9 7 6 9 10 11 12 1 1
Prohledávání grafu do šířky 1 10 9 7 6 2 5 6 7 10 9 7 9 10 11 12 1 1
Prohledávání grafu do šířky 1 10 9 7 2 5 6 7 1 12 11 10 9 9 10 11 12 1 1
Prohledávání grafu do šířky 1 1 12 11 10 9 2 5 6 7 1 12 11 10 9 9 10 11 12 1 1
Prohledávání grafu do šířky 1 1 12 11 10 9 2 5 6 7 1 12 11 10 9 10 11 12 1 1
Prohledávání grafu do šířky 1 1 12 11 10 2 5 6 7 1 12 11 9 10 11 12 1 1
Prohledávání grafu do šířky 1 1 12 11 2 5 6 7 1 1 12 9 10 11 12 1 1
Prohledávání grafu do šířky 1 1 1 12 2 5 6 7 1 1 9 10 11 12 1 1
Prohledávání grafu do šířky 1 1 1 2 5 6 7 1 9 10 11 12 1 1
Prohledávání grafu do šířky Hledaný je uzel č. 1 1 1 2 5 6 7 9 10 11 12 1 1
Prohledávání grafu do šířky Hledaný je uzel č. 7 1 10 9 7 2 5 6 7 10 9 9 10 11 12 1 1
Další úlohy nad grafy Hledání nejkratší trasy úkolem je najít nejkratší/nejrychlejší/nejlevnější cestu grafem z uzlu A do uzlu B Úloha obchodního cestujícího existuje n měst, mezi nimi silnice o známých délkách úkolem je najít nejkratší možnou trasu, procházející všemi městy a vracející se nazpět do výchozího města
Další úlohy nad grafy Úloha čínského listonoše existuje poštovní doručovací obvod a v něm ulice, které musí listonoš všechny projít úkolem je najít nejkratší možnou trasu, procházející všemi ulicemi a vracející se nazpět do výchozího místa pošty
Další literatura Diestel, R.: Graph Theory. Electronic Edition 2000. Spronger-Verlag, New York 1997, 2000. 22 s. [on-line] http://www.esi2.us.es/~mbilbao/pdffiles/diestelgt.pdf (22..201) Kovář, P.: Grafové alegoritmy. Katedra matematiky a deskriptivní geometrie, VŠB-TU Ostrava. [on-line] http://homel.vsb.cz/~kov16/talks/algoritmy/ (22..201) Jirovský, L.: Teorie grafů ve výuce na střední škole. [on-line] http://teorie-grafu.cz/ (22..201) Fábry, J.: Diskrétní modely. Katedra ekonometrie, VŠE Praha, 2016. [on-line] https://nb.vse.cz/~fabry/ek1-prezentace.pdf (22..201)