Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Teorie grafů Mgr. Tomáš Foltýnek, Ph.D. Kostra grafu Prohledávání grafu.

Podobné prezentace


Prezentace na téma: "Teorie grafů Mgr. Tomáš Foltýnek, Ph.D. Kostra grafu Prohledávání grafu."— Transkript prezentace:

1 Teorie grafů Mgr. Tomáš Foltýnek, Ph.D. Kostra grafu Prohledávání grafu

2 Teorie grafů Opakování z minulé přednášky Co je to AVL strom a jak funguje? Co je to prioritní fronta a prioritní strom? Jak funguje řazení haldou? strana 2

3 Teorie grafů Osnova dnešní přednášky Prohledávání obecného grafu –do hloubky a do šířky Definice kostry –počet koster grafu Růst stromu – souvislost koster a prohledávání Algoritmy hledání minimální kostry Hledání mostů a artikulací Bloudění v bludišti strana 3

4 Teorie grafů Prohledávání grafu Systematické navštívení / zpracování všech uzlů v grafu –narozdíl od stromů prohledávání komplikují cykly Prohledávání do šířky –datová struktura fronta Prohledávání do hloubky –datová struktura zásobník strana 4

5 Teorie grafů Obecný algoritmus prohledávání Vstup: Souvislý graf G Výstup: Posloupnost všech uzlů grafu G Inicializace: Libovolný uzel označkuj a vlož do D Dokud je D neprázdné, opakuj –Vyber uzel, který je na řadě –Zpracuj / vypiš jej –Všechny jeho neoznačkované následovníky označkuj a vlož do D D = fronta / zásobník podle způsobu prohledávání Díky značkování zpracujeme každý uzel právě jednou strana 5

6 Teorie grafů Kostry a jejich vlastnosti Kostra souvislého neorientovaného grafu je takový faktor, který je stromem U hranově ohodnoceného grafu je velikost (délka, cena) kostry dána součtem ohodnocení hran kostry. Minimální kostra je kostra s nejmenší možnou velikostí Každý souvislý graf má kostru Každý souvislý acyklický podgraf grafu G je součástí nějaké kostry grafu G Každá kostra a každý hranový řez mají společnou alespoň jednu hranu strana 6

7 Teorie grafů Počet koster grafu Snadlo lze počet koster určit pouze pro speciální typy grafů: Strom má jedinou kostru – sebe sama Cyklický graf C n má n koster Počet koster v úplném grafu K n je roven n n-2 –Cayleyho formule Počet koster úplného bipartitního grafu K p,q je roven p q-1. q p-1 strana 7

8 Teorie grafů Počet koster obecného grafu I. Počet koster obecného grafu získáme takto: –artikulacemi rozdělíme graf na části, které vždy obsahují všechny hrany mezi danými uzly jsou buď stromy, cykly nebo úplné grafy –určíme počty koster jednotlivých podgrafů –vynásobíme počty koster mezi sebou strana 8 Zdroj:

9 Teorie grafů Počet koster obecného grafu II. Postup pomocí rozdělování na podgrafy je těžko algoritmizovatelný Obecný postup pro neorientované grafy: Laplaceova matice grafu G L G = (l ij ): l ij = –d G (v i ) pro i = j –-1 pokud (v i,v j ) je hrana –0 jinak Matici L’ získáme vypuštěním libovolného řádku a libovolného sloupce z matice L. Počet koster grafu G = determinant matice L’ strana 9

10 Teorie grafůstrana 10 Růst stromu I. Je dán graf G a jeho podgraf T, který je stromem. Hraniční hranou nazveme takovou hranu, jejíž jeden uzel leží ve stromu T a druhý ne. Věta: Jestliže ke stromu T přidáme hraniční hranu spolu s incidujícím uzlem, výsledný graf bude opět strom. Důkaz: Přidání hraniční hrany nemůže vytvořit cyklus, protože koncový uzel je mimo strom.

11 Teorie grafů Růst stromu II. T := libovolný uzel grafu G Opakuj dokud existují hraniční hrany –vyber hraniční hranu –přidej ji ke stromu T Výběr hraniční hrany lze provést mnoha způsoby –podle toho, jaký výsedek požadujeme Uzly stromu lze uspořádat podle pořadí přidávání strana 11

12 Teorie grafů Růst lesa v nesouvislém grafu Iterativní přidávání hraničních hran vytvoří kostru komponenty V nesouvislém grafu je třeba budovat strom pro každou komponentu –nejsou-li žádné hraniční hrany, přidáme některý z dosud nepřidaných uzlů ten určitě leží v jiné komponentě –výsledkem je tedy les strana 12

13 Teorie grafů Růst stromu a prohledávání grafu Prohledávání do šířky –růst stromu, při němž přidáváme hrany incidentní s nejdříve přidaným uzlem Prohledávání do hloubky –růst stromu, při němž přidáváme hrany incidentní s nejpozději přidaným uzlem strana 13

14 Teorie grafů Hledání minimální kostry grafu Jarníkův-Primův-Dijkstrův algoritmus –růst stromu Kruskalův hladový algoritmus –postupné spojování komponent lesa do jediného stromu Borůvkův-Sollinův algoritmus –postupné spojování komponent lesa do jediného stromu strana 14

15 Teorie grafů (Jarníkův-)Primův(-Dijkstrův) algoritmus Růst stromu, při němž přidáváme vždy nejkratší z hraničních hran –Vyber libovolný uzel –Dokud existují nevybrané uzly Vyber nejkratší hranu spojující některý vybraný uzel s nevybraným Přidej vybranou hranu a nevybraný incidentní uzel Důkaz minimality: –indukcí přes počet uzlů –v každém kroku platí, že na daných uzlech není možné najít menší kostru strana 15

16 Teorie grafů Kruskalův hladový algoritmus Množinu hran seřadíme vzestupně podle hranového ohodnocení Postupně budujeme nový graf –začínáme pouze s uzly (tj. „diskrétní faktor“) –přidáváme hrany dle pořadí délek –pokud by přidáním hrany vznikla kružnice, hranu nepřidáváme spojujeme tedy jen uzly ležící v různých komponentách –pokusíme se přidat všechny hrany strana 16

17 Teorie grafů Borůvkův-Sollinův algoritmus Je dán souvislý graf G = (U, H) –s hranami různé délky T :=  Dokud (U, T) není souvislý graf, opakuj: –E :=  –Pro všechny komponenty (U, T) Do E přidej nejkratší hranu spojující uzel dané komonenty s uzlem mimo komponentu –T := T  E (U, T) je minimální kostra grafu G strana 17

18 Teorie grafů Další užitečné kostry grafů Maximální kostra –Všechny uvedené algoritmy lze použít pro hledání maximální namísto minimální kostry –K čemu jsou maximální kostry dobré? Minimální kostra s omezeným stupněm uzlů Kostra s maximem listů Kostra s minimem listů –úzce souvisí s hledáním Hamiltonovské kružnice Kostra s minimálním průměrem strana 18

19 Teorie grafů Hledání mostů Připomenutí: Most je hrana, po jejímž odstranění se zvýší počet komponent grafu. –V souvislém grafu se poruší souvislost –Jednoprvkový hranový řez Most je součástí kritické cesty –je obsažen v každé kostře –každá cesta spojující uzly “na různých stranách mostu” vždy prochází přes most Odhalení slabých / zranitelných hran v síti / procesu / struktuře strana 19

20 Teorie grafů Hledání mostů: pomocné pojmy Uzel při DFS nazveme dokončený, jestliže všichni jeho sousedé již byli navštíveni –potřeba backtrackingu Nechť H je podgrafem grafu G. Kontrakcí H do uzlu nazveme graf vzniklý z grafu G nahrazením celého podgrafu H jediným uzlem. strana 20

21 Teorie grafů Hledání mostů: algoritmus Vstup: Souvislý graf G Výstup: Seznam mostů v grafu G Inicializace: Nastav H := G Opakuj dokud |U H | > 1 –buduj DFS-cestu tak dlouho, dokud nedosáhne dokončeného vrcholu t –jestliže stupeň t je roven 1 označ hranu incidentní s t jako most H := H – t –jinak (uzel t a všichni jeho sousedé leží na cyklu C) Proveď kontrakci cyklu C strana 21

22 Teorie grafů Hledání artikulací Připomenutí: Artikulace je uzel, po jehož odstranění se zvýší počet komponent grafu. –V souvislém grafu se poruší souvislost –Jednoprvkový uzlový řez Artikulace je součástí kritické cesty –je obsažena v každé kostře –každá cesta spojující uzly “na různých stranách” vždy prochází přes artikulaci Odhalení slabých / zranitelných uzlů v síti / procesu / struktuře strana 22

23 Teorie grafů Hledání artikulací: algoritmus Vstup: Souvislý graf G Výstup: Množina artikulací K Inicializace: K :=  Vyber libovolný uzel r grafu G Prohledej graf do hloubky začínaje v uzlu r –Výsledkem bude strom T s kořenem r –Pro každý uzel u známe dfnum(u) = pořadí navštívení uzlu Pro každý uzel u spočítej low(u) jako minimum z –dfnum(u) –dfnum(v) všech sousedů uzlu u přes hranu neležící ve stromu –low(v) pro každého potomka v uzlu u Má-li kořen r více, než jednoho potomka –K := K  {r} Pro všechny uzly u kromě r –pokud má potomka v takového, že low(v)  dfnum(u) K := K  {u} Vrať množinu K strana 23

24 Teorie grafů Tarryho algoritmus: úvod Hledání cesty z bludiště pomocí prohledávání do hloubky Bludiště je tvořeno místnostmi, z nichž vedou dveře do chodeb spojujících jednotlivé místnosti Nemáme k dispozici mapu V každé místnosti je kousek křídy –můžeme uchovávat lokální informaci strana 24

25 Teorie grafů Tarryho algoritmus: popis Založen na značkování dveří podle následujících pravidel: –vstoupíš-li do místnosti, kde žádné dveře nejsou označeny, označkuj vstupní dveře “IN” –jsi-li v místnosti s alespoň jedněmi neoznačkovanými dveřmi, vyber si libovolné, označ je “OUT” a projdi chodbou za nimi do následující místnosti –jsi-li v místnosti, kde jsou všechny dveře označeny, vstup do dveří označených “IN” –vstoupíš-li do místnosti, kde jsou všechny dveře označeny “OUT”, z bludiště není východ strana 25

26 Teorie grafů Tarryho algoritmus: vlastnosti Nemá-li bludiště východ, po skončení bude každý tunel projítý právě dvakrát –jednou tam a jednou zpátky –nikdy nejdeme stejným tunelem stejným směrem dvkarát Backtracking nastává teprve tehdy, není- li jiná alternativa Existuje-li východ, po konečném počtu kroků je najdeme strana 26

27 Teorie grafů K zamyšlení Je dán úplný graf K n, n >1 a v něm hrana e. V kolika různých kostrách leží? Uveďte příklad grafu G a jeho kostry T takové, že T nemůže odpovídat žádnému prohledávání do šířky, ani do hloubky. Zdůvodněte. strana 27


Stáhnout ppt "Teorie grafů Mgr. Tomáš Foltýnek, Ph.D. Kostra grafu Prohledávání grafu."

Podobné prezentace


Reklamy Google