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

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

Kostra grafu Prohledávání grafu

Podobné prezentace


Prezentace na téma: "Kostra grafu Prohledávání grafu"— Transkript prezentace:

1 Kostra grafu Prohledávání grafu

2 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?

3 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

4 Systematické navštívení / zpracování všech uzlů v grafu
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

5 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

6 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

7 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 Cn má n koster Počet koster v úplném grafu Kn je roven nn-2 Cayleyho formule Počet koster úplného bipartitního grafu Kp,q je roven pq-1.qp-1

8 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 Zdroj:

9 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 LG = (lij): lij = dG(vi) pro i = j -1 pokud (vi,vj) 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’

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 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í

12 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

13 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

14 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

15 (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

16 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

17 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

18 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

19 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

20 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.

21 Hledání mostů: algoritmus
Vstup: Souvislý graf G Výstup: Seznam mostů v grafu G Inicializace: Nastav H := G Opakuj dokud |UH| > 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

22 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

23 Hledání artikulací: algoritmus
Vstup: Souvislý graf G low(v) pro každého potomka v uzlu u Výstup: Množina artikulací K Má-li kořen r více, než jednoho potomka Inicializace: K :=  K := K  {r} Vyber libovolný uzel r grafu G Pro všechny uzly u kromě r Prohledej graf do hloubky začínaje v uzlu r pokud má potomka v takového, že low(v)  dfnum(u) Výsledkem bude strom T s kořenem r K := K  {u} Vrať množinu K 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

24 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

25 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

26 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

27 K zamyšlení Je dán úplný graf Kn, 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.


Stáhnout ppt "Kostra grafu Prohledávání grafu"

Podobné prezentace


Reklamy Google