07 Základní pojmy teorie grafů

Podobné dokumenty
STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Algoritmizace prostorových úloh

Úvod do teorie grafů

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

Teorie grafů. Teoretická informatika Tomáš Foltýnek

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

Grafové algoritmy. Programovací techniky

Vzdálenost uzlů v neorientovaném grafu

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Algoritmy na ohodnoceném grafu

Grafové algoritmy. Programovací techniky

Kostry. 9. týden. Grafy. Marie Demlová (úpravy Matěj Dostál) 16. dubna 2019

TEORIE GRAFŮ TEORIE GRAFŮ 1

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

Teorie grafů BR Solutions - Orličky Píta (Orličky 2010) Teorie grafů / 66

Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd.

Základní pojmy teorie grafů [Graph theory]

Hledáme efektivní řešení úloh na grafu

Teorie grafů. Kostra grafu. Obsah. Radim Farana Podklady pro výuku pro akademický rok 2013/2014

Použití dalších heuristik

5 Orientované grafy, Toky v sítích

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Drsná matematika III 10. demonstrovaná cvičení Kostry grafů

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Jan Březina. 7. března 2017

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

4EK311 Operační výzkum. 5. Teorie grafů

Metody síťové analýzy

Teorie grafů. zadání úloh. letní semestr 2008/2009. Poslední aktualizace: 19. května First Prev Next Last Go Back Full Screen Close Quit

Stromy, haldy, prioritní fronty

Teoretická informatika Tomáš Foltýnek Barvení grafů Platónská tělesa

H {{u, v} : u,v U u v }

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

TGH10 - Maximální toky

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

1 Teorie grafů. Základní informace

Definice 1 eulerovský Definice 2 poloeulerovský

Operační výzkum. Síťová analýza. Metoda CPM.

TGH06 - Hledání nejkratší cesty

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

GRAFY A GRAFOVÉ ALGORITMY

Základní datové struktury III: Stromy, haldy

STROMY. v 7 v 8. v 5. v 2. v 3. Základní pojmy. Řešené příklady 1. příklad. Stromy

TGH05 - aplikace DFS, průchod do šířky

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

TGH02 - teorie grafů, základní pojmy

Učební texty k státní bakalářské zkoušce Matematika Teorie grafů. študenti MFF 15. augusta 2008

Rovinné grafy Kostra grafu Minimální kostra Toky v sítích Problém maximálního toku v síti. Stromy a kostry. Michal Bulant

TGH05 - aplikace DFS, průchod do šířky

III přednáška Toky v sítích

ADT STROM Lukáš Foldýna

Matice sousednosti NG

TGH06 - Hledání nejkratší cesty

TGH02 - teorie grafů, základní pojmy

TGH09 - Barvení grafů

Grafy. 1. Základní pojmy. 1. Definice grafu. Grafy.nb 1

6. Tahy / Kostry / Nejkratší cesty

TGH08 - Optimální kostry

VLASTNOSTI GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 5

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

Jan Březina. Technical University of Liberec. 21. dubna 2015

TGH02 - teorie grafů, základní pojmy

Jan Březina. Technical University of Liberec. 30. dubna 2013

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

Matematika III 10. přednáška Stromy a kostry

10 Přednáška ze

Metody analýzy dat I (Data Analysis I) Rozsáhlé struktury a vlastnosti sítí (Large-scale Structures and Properties of Networks) - pokračování

10 Podgrafy, isomorfismus grafů

Prohledávání do šířky = algoritmus vlny

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Algoritmy a datové struktury

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Dynamické datové struktury III.

bfs, dfs, fronta, zásobník, prioritní fronta, halda

VLASTNOSTI GRAFŮ. Vlastnosti grafů - kap. 3 TI 5 / 1

Vybíravost grafů, Nullstellensatz, jádra

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

Barevnost grafů MFF UK

4 Pojem grafu, ve zkratce

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Základy umělé inteligence

1. Toky, řezy a Fordův-Fulkersonův algoritmus

Prioritní fronta, halda

opakování reprezentace grafů, dijkstra, bellman-ford, johnson

Grafové algoritmy. Programovací techniky

PLANARITA A TOKY V SÍTÍCH

STROMY A KOSTRY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 6

Aplikace pro výuku grafových a síťových algoritmů

Jarníkův algoritmus. Obsah. Popis

Grafy (G) ρ(h) = [u,v]

8 Přednáška z

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Transkript:

07 Základní pojmy teorie grafů (definice grafu, vlastnosti grafu, charakteristiky uzlů, ohodnocené grafy) Definice grafu množina objektů, mezi kterými existují určité vazby spojující tyto objekty. Uspořádaná trojice (U, H, f), kde U je množina uzlů, H je množina hran a f: H > U 2 je incidenční zobrazení počátečního a sousedního koncového uzlu, pokud jsou stejné, jedná se o smyčku. U hypergrafu hrany spojují více uzlů Vlastnosti grafu Neorientovaný graf v základu je graf orientovaný (digraf), jestliže má každá hrana hranu protisměrnou je graf neorientovaný. Symetrizací grafu vzniká neorientovaný graf. Prostý graf graf bez násobných hran (více stejných), opak je multigraf. Prostý graf bez smyček je jednoduchý. Prázdný a nekonečný graf prázdná a nekonečná množina uzlů. Diskrétní a úplný graf žádná hrana a jedna hrana mezi každými dvěmi uzly [(n/2) * (n 1)]. Bipartitní množina uzlů je rozdělena na dvě disjunktní třídy (průnik je prázdná množina). Regulární všechny uzly mají stejný stupeň. Podgraf část grafu, pokud obsahuje všechny uzly jedná se o faktor. Sled střídavá posloupnost sousedních uzlů a hran. Pokud se žádná hrana neopakuje, jedná se o tah. Pokud se žádný vnitřní uzel neopakuje jedná se o cestu (cesta je tah). Kružnice a cyklus uzavřená cesta v neorientovaném a orientovaném grafu. Souvislý graf mezi každými dvěmi uzly existuje sled. Každý maximální souvislý podgraf je komponenta. Uzlové a hranové řezy množina uzlů / hran jejichž odstraněním se zvýší počet komponent. Uzlový řez s jedním uzlem je artikulace. Hranový řez s jednou hranou je most. Klika a nezávislá množina Klika je úplný podgraf, nezávislá množina je diskrétní podgraf. Charakteristiky uzlů Uzly následnící, předchůdci, sousedi uzlu Hrany výstupní okolí, vstupní okolí, okolí uzlu Stupně výstupní stupeň, vstupní stupeň, stupeň uzlu Ohodnocené grafy Uzlové ohodnocení grafu zobrazení k: U > R, nazývá se klíč a dá se využít při řazení, vyhledávání či kódování.

Hranové ohodnocení grafu zobrazení d: H > R, nazývá se délka hrany a dá se využít při hledání minimální kostry, nejkratší cesty či toků v sítích. 08 Reprezentace grafu (matice sousednosti, matice incidence, výčet sousedů, dynamická reprezentace) Matice sousednosti čtvercová matice UxU, u neorientovaného grafu souměrná podle hlavní diagonály. Hodnota 1 značí souseda, hodnota 0 nikoliv. Na diagonále jsou smyčky, multigraf se značí větším číslem. Matice incidence obdélníková matice UxH. Hodnota +1 je hrana do uzly, 1 hrana z uzlu (u orientovaného grafu), 0 bez hrany a 2 značí smyčku. Umožňuje zaznamenat hypergraf. Výčet sousedů matice obsahují spoustu nul, úspornější je zaznamenat seznam sousedů pro každý uzel, nejlépe pomocí dynamické reprezentace. Dynamická reprezentace jednosměrné seznamy uzlů a hran. class Vrchol { string klic; int ohodnoceni; vector<vrchol*> naslednici; // sousedé vrcholu Vrchol *V // následný vrchol } class Hrana { int ohodnoceni; Vrchol ZUzlu, DoUzlu; Hrana *H // další hrana v pořadí }

09 Stromy (vlastnosti stromů a jejich aplikace, kostra grafu, hledání minimální kostry) Vlastnosti stromů a jejich aplikace Strom je souvislý graf, který neobsahuje žádnou kružnici. Pro každé dva uzly tak existuje pouze jedna cesta. Více stromů (komponent) je les. Výška uzlu je počet hran na cestě od kořene, maximální výška uzlu je výška stromu. Arita stromu je maximální počet potomků každého uzlu. Prohledávání binárních stromů level order, pre order, in order, post order Binární vyhledávací strom hodnoty v levém podstromu jsou menší, hodnoty v pravém podstromu jsou větší než v uzlu. AVL strom samovyvažovací binární vyhledávací strom, výška levého a pravého podstromu se tak vždy liší maximálně o 1. Halda statická reprezentace prioritního stromu, kořen má nejvyšší prioritu, nový list probublává na správnou pozici. Využívá se pro řazení haldou, při něm se vždy vybere kořen (nejvyšší prvek), za něj se dosadí nejnižší list a probublá opět dolů. Kostra grafu faktor, který je stromem. Každý strom má jedinou kostru, sebe sama. Hledání minimální kostry Jarníkův algoritmus růst stromu, vybereme libovolný uzel, který označíme za viditelný, a pak vždy připojujeme nejkratší hranu mezi viditelným a neviditelným uzlem, který se následně stává také viditelným. Kruskalův hladový algoritmus odstraníme všechny hrany, seřadíme je podle velikosti, a pak postupně přidáváme od nejkratší tak, aby nikdy nevznikla kružnice (to se ověřuje pomocí union find algoritmu). Borůvkův algoritmus odstraníme všechny hrany a pak každou komponentu propojíme s jinou pomocí nejkratší hrany, dá se paralelizovat, ale všechny hrany musí mít unikátní ohodnocení.

10 Grafové algoritmy (prohledávání grafu, hledání optimálních sledů) Prohledávání grafu BFS prohledávání do šířky, vyber uzel, expanduj jeho sousedy a vlož je do fronty OPEN, opakuj dokud není fronta prázdná. Možné vylepšení pomocí seznamu CLOSED pro již projité uzly. DFS prohledávání do hloubky, vyber uzel, expanduj jeho sousedy a vlož je do zásobníku OPEN, opakuj dokud není zásobník prázdný. Možné vylepšení pomocí seznamu CLOSED pro již projité uzly. Informované prohledávání použití heuristiky, například A* nebo greedy search. Tarryho algoritmus pro procházení bludiště DFS, označování dveří IN/OUT, pokud neexistuje východ, projde každou chodbu právě 2x. Hledání optimálních sledů Různé typy optimálních sledů nejkratší cesta (výchozí), nejdelší cesta (h = h * ( 1)), nejnebezpečnější cesta (maximální součin, h = log h), nejširší cesta (minimum šířek, upravený dijkstra). Algoritmy pro hledání nejkratší cesty inicializace je provedena ohodnocením prvního uzlu jako 0, všech ostatních jako nekonečno. Moorův algoritmus procházení do šířky v neohodnoceném grafu, zapisujeme u každého uzlu vzdálenost od počátku (vzdálenost expandovaného uzlu +1) a předchůdce. Dijkstrův algoritmus procházení do šířky v nezáporně ohodnoceném grafu, zapisujeme u každého uzlu součet vzdáleností od počátku a předchůdce, procházíme pomocí prioritní fronty. Bellman Fordův algoritmus v grafu bez cyklu záporné délky, graf se projde U 1 krát, kdy pro všechny hrany provedeme tzv. relaxaci změníme hodnotu uzlu, pokud součet hrany a hodnoty předchůdce je menší než původní hodnota a zaznamenáme tohoto předchůdce. Nakonec provedeme relaxace ještě jednou, pokud se nějaký hodnota změní, graf obsahuje cyklus záporné délky. Floyd Warschallův algoritmus sestrojíme matici sousednosti délkami hran a postupně se sčítají hodnoty z n řádku a n sloupce a nahrazují se jimi vyšší hodnoty na průsečících.

11 Sítě (definice sítě a toku, věta o maximálním toku a minimálním řezu, hledání maximálního toku) Definice sítě a toku Síť orientovaný graf s nezáporně ohodnocenými hranami (kapacity), kde jsou vyznačeny dva uzly, zdroj a stok. Využití v dopravě, potrubí, zatížení datové sítě. Tok hodnota až do velikosti kapacity hrany, která určuje kolik aktuálně hranou protéká, jeho velikost (v celém grafu) je součet toků ze zdroje (na hranách incidentních se zdrojem). Věta o maximálním toku a minimálním řezu velikost libovolného toku není větší než velikost libovolného řezu, tedy maximální velikost toku je rovna minimální velikosti řezu. Řez množina hran, po jejichž odstranění by nevedla žádná cesta od zdroje ke stoku. Velikost řezu je rovna součtu kapacit hran v řezu. Hledání maximálního toku Ford Fulkersonův / Edmonds Karpův algoritmus najdi rezervní (někdy též zvanou rozšiřující / zlepšující) cestu (cestu z nenasycených hran) od zdroje do stoku (E. K. vylepšení najdi nejkratší rezervní cestu pomocí Moorova algoritmu) a zvyš / sniž (u protisměrných hran) tok všech hran rezervní cesty o její rezervu, opakuj dokud existuje rezervní cesta. Rezervní cesty můžeme hledat i na protisměrných hranách, kde rezerva je inverze a tok snižujeme, díky tomu vždy najdeme maximální tok. Další možnosti jsou Dinicův algoritmus nebo Goldbergův algoritmus (operace protlačení vlny a zvednutí uzlu).

12 Aplikace grafů (barvení grafu, párování v bipartitních grafech, problémy řešené pomocí teorie grafů) Barvení grafu každé 2 sousední uzly mají jinou barvu. Množina uzlů se stejnou barvou je barevná třída, počet barev nutných k obarvení grafu je chromatické číslo (2 pro bipartitní graf / strom, max 4 pro rovinný graf (mapu), U u úplného grafu). Barvení grafu je NP úplný problém, následující algoritmy nezaručují optimální řešení. Sekvenční barvená grafu postupně procházíme uzly a určujeme nejmenší číslo barvy, které lze použít. Barvení grafu pomocí nezávislých množin hledáme postupně co největší nezávislé množiny uzlů, které můžeme obarvit stejnou barvou. Barvení grafu slepováním uzlů spojují se sousední uzly, dokud graf není úplný. Párování v bipartitních grafech dvě disjunktní skupiny hran, tedy žádné dvě hrany nemají společný uzel. Slouží například k propojení dělníků a jejich úkolů (úplný bipartitní graf, hledáme maximální párování s minimálním ohodnocením, kde každý pracovník má úkol a každý úkol je řešen). Maximální párování nelze k němu přidat další hranu. Největší párování největší možný počet hran Perfektní párování pokrývá všechny uzly Střídavá cesta její hrany střídavě leží a neleží v párování Zlepšující cesta střídavá cesta jejíž oba krajní uzly jsou volné. Pokud v grafu neexistuje, pak párování je největší. Volný uzel není incidentní s žádnou hranou v párování Problémy řešené pomocí teorie grafů problém 7 mostů města Královce, problém obchodního cestujícícho, problém obarvení mapy 4 barvami, elektrifikace měst (minimální kostry), vyhledávání, třídění.