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

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

TGH04 - procházky po grafech

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

TGH06 - Hledání nejkratší cesty

Matice sousednosti NG

TGH06 - Hledání nejkratší cesty

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

TGH08 - Optimální kostry

Grafové algoritmy. Programovací techniky

Jan Březina. 7. března 2017

Grafové algoritmy. Programovací techniky

TGH10 - Maximální toky

Vzdálenost uzlů v neorientovaném grafu

Algoritmy na ohodnoceném grafu

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

Úvod do teorie grafů

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

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

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

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

Dijkstrův algoritmus

TGH02 - teorie grafů, základní pojmy

TGH09 - Barvení grafů

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

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

TGH02 - teorie grafů, základní pojmy

TGH02 - teorie grafů, základní pojmy

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.

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

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

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

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

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

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

10 Přednáška ze

Použití dalších heuristik

Grafové algoritmy. Aktualizováno: 29. listopadu / 228

6. Tahy / Kostry / Nejkratší cesty

TGH12 - Problém za milion dolarů

4 Pojem grafu, ve zkratce

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

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

3. Prohledávání grafů

Algoritmizace prostorových úloh

Metody síťové analýzy

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

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

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

07 Základní pojmy teorie grafů

DISKRÉTNÍ MATEMATIKA PRO INFORMATIKY II

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

bfs, dfs, fronta, zásobník

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

Diskrétní matematika. DiM /01, zimní semestr 2016/2017

Přijímací zkouška - matematika

TEORIE GRAFŮ TEORIE GRAFŮ 1

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

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

Paralelní grafové algoritmy

Vybíravost grafů, Nullstellensatz, jádra

Definice 1 eulerovský Definice 2 poloeulerovský

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

Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy.

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

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

Teorie grafů Jirka Fink

ALGORITMY A DATOVÉ STRUKTURY

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

Stromy, haldy, prioritní fronty

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

Vrcholová barevnost grafu

Algoritmy a datové struktury

Výroková a predikátová logika - II

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Kapitola 11. Vzdálenost v grafech Matice sousednosti a počty sledů

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

Výroková a predikátová logika - III

Výroková a predikátová logika - IV

Dynamické programování

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

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

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

TGH07 - Chytré stromové datové struktury

Martin Milata, Pokud je alespoň jeden rozměr čokolády sudý (s výjimkou tabulky velikosti 1x2, která už je od

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

10 Podgrafy, isomorfismus grafů

TGH07 - Chytré stromové datové struktury

Jarníkův algoritmus. Obsah. Popis

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

Výroková a predikátová logika - II

Barevnost grafů MFF UK

Definice 5.1 Graf G = (V, E) je tvořen množinou vrcholů V a množinou hran, kde

8 Přednáška z

Binární vyhledávací stromy pokročilé partie

Algoritmy a datové struktury

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

PLANARITA A TOKY V SÍTÍCH

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

Transkript:

TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 28. března 2017

Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující cykly. Obsahuje alespoň jeden (startovní) vrchol bez vstupní hrany a alespoň jeden (cílový) vrchol bez výstupní hrany. BÚNO právě jeden startovní u S a jeden cílový vrchol u F (spojení startovních/cílových vrcholů do jednoho) Grafová úloha: Pro daný orientovaný acyklický graf G(V, E) s ohodnocenými vrcholy w[v] najdi nejmenší číslo (čas) T tak, aby délka každé cesty (součet jejích vrcholů) ze startovního do cílového vrcholu byla menší než T. Pro každý vrchol u najdi mezní časy t start [u] a t end [u] a rozhodni zda je součásí kritické cesty/cest.

CPM - algoritmus 1. Předpokládáme, že cílový vrchol má ohodnocení 0. 2. Proved topologické setřídění bez ohledu na ohodnocení. Výsledkem je seznam vrcholů l[:], první je u S, poslední u F. 3. Nastav t start [:] = 0, minimální časy začátků činností. 4. Procházej seznam l dopředu (od u S ) a pro každý vrchol u a jeho hranu (u, v): t start [v] = max(t start [v], t start [u] + w[u]), (maximum z délek cest které vedou do v). Pro cílový vrchol u F dostáváme t start [u F ] + w[u F ] = T = t end [u F ].

CPM - algoritmus 1. Předpokládáme, že cílový vrchol má ohodnocení 0. 2. Proved topologické setřídění bez ohledu na ohodnocení. Výsledkem je seznam vrcholů l[:], první je u S, poslední u F. 3. Nastav t start [:] = 0, minimální časy začátků činností. 4. Procházej seznam l dopředu (od u S ) a pro každý vrchol u a jeho hranu (u, v): t start [v] = max(t start [v], t start [u] + w[u]), (maximum z délek cest které vedou do v). Pro cílový vrchol u F dostáváme t start [u F ] + w[u F ] = T = t end [u F ]. 5. Nastav t end [:] = T, maximální časy ukončení činností. 6. Procházej seznam l pozpátku a počítej pro každý vrchol u a jeho hranu (u, v): t end [u] = min(t end [u], t end (v) w(v)), (kdy nejpozději musím skončit, abych neposunul následující činnosti) 7. Průběžně zaznamenej kritické vrcholy, pro které: t end [v] t start [v] = w(v).

Topologické setřídění: E B C D A Příklad D=4 4 8 E=1 B=3 0 1 1 4 A=5 8 13 C=2 4 8 E B C D A 0 1 4 8 13

Silně souvislé komponenty orientovaného grafu silně souvislá komponenta je maximální množina vrcholů, kde pro každou uspořádanou dvojici (u, v) existuje cesta kontrakce hrany Splynutí jejích vrcholů v grafu. Necht W V G a indukovaný podgraf G[W ] je souvislý, pak kontrakce množiny W, je graf G.W který vznikne kontrakcí všech hran v G[W ]. metagraf orientovaného grafu vznikne kontrakcí jeho SSK

Příklad

Hledání SSK Algoritmus pro hledání SSK pomocí DFS: 1. Proved DFS(G), urči časy postvisit f[u]. 2. Sestav transponovaný graf G T (opačně orientovaný), 3. Proved DFS(G T ). Hlavní cyklus sestupně podle hodnot f[u]. Provádíme odtrhávání zdrojových komponent metagrafu. 4. Každý strom lesa průchodu odpovídá jedné komponentě

Důležitá pozorování Lemma (o metagrafu) Metagraf je DAG (orientovaný graf bez cyklů). Značení po provedení DFS: d(c) = min{d[u], u C}, čas příchodu do komponenty C f(c) = max{f[u], u C}, čas odchodu z komponenty C Lemma (o zdrojové komonentě) Necht C a C jsou SSK a existuje hrana z C do C, pak f(c) > f(c ). (Čas odchodu je vyšší u komponenty ze které vede hrana.) Důkaz: Bud nejprve otevřu nějaký vrchol v C a projdu a zavřu C. Nebo nejprve otevřu vrchol v C, pak otevřu vrchol v C zavřu C a zavřu C. V obou případech později zavřu C.

Správnost algoritmu: V druhém DFS začínám na komponentě s max. f(c), podle lematu je to zdrojový vrchol metagrafu komponent (zdrojová komponenta) a na G T z ní nevede hrana. Po jejím průchodu zůstává v platnosti invariant: Komponenta s max. f(c) je zdrojová komponenta zbylého metagrafu.

Eulerova cesta úloha: Pro souvislý neorientovaný graf zjistit, zda se dá nakreslit jedním uzavřeným tahem a najít takový tah. Lemma V souvislém neorientovaném grafu G existuje uzavřený sled obsahující každou hranu právě jednou právě tehdy, když stupně všech vrcholů jsou sudé: v V : deg(v) = 2n Stupně musí být sudé, protože do každého vrcholu přijdeme tolikrát kolikrát odejdeme. Sudost vrcholů zaručuje existenci Eulerovského sledu.. viz. následující algoritmus.

Algoritmus pro Eulerovský tah 1. Z vrcholu v procházej graf (jako do hloubky, ale bez návratů) dokud se nevrátíš do v, odstraňuj (označuj) použité hrany. Musím se vrátit do v jelikož po jeho opuštění je to jediný vrchol lichého stupně. 2. Najdi ve výsledném sledu vrchol v s neprojitou hranou. Pokud takový neexistuje skonči. 3. Pokud existuje proved rekurzivně bod 1) a vlož sled do výsledného sledu na místo vrcholu v. Při vhodné implementaci má algoritmus složitost O(V + E).

detaily

Procházení do šířky I Vstup: graf G daný vrcholy V a sousednostmi Adj[i], počáteční vrchol s Výstup: vzdálenosti d[i] od s, předci π[i] průchodového stromu 1 for u V do Color[u] = W hite 2 Color[s] = Gray; d[s] = 0; π[s] = NULL 3 ClearQueue ; EnQueue(s) 4 while u =DeQueue do 5 for v Adj[u] do 6 if Color[v] == W hite then 7 Color[v] = Gray; d[v] = d[u] + 1; π[v] = u 8 EnQueue(v) 9 Color[u] = Black

Procházení do šířky II Breadth First Search (BFS) pro orientované i neorientované grafy vygeneruje kořenový strom vrcholů dosažitelných z s (stejná komponenta) čas: V (vložení a vybrání z fronty)+každá hrana= Θ( V + E ) pamět : reprezentace grafu V + E d[v] je délka nejkratší cesty z s do v kostra souvislého grafu je jeho maximální indukovaný podstrom... zde strom daný předky π[v] Vnější inicializací a cyklem přes všechny bílé vrcholy detekování komponent neorientovaného grafu.

Nejkratší cesta Lemma (o správnost BFS) Po průběhu BFS (na jedné komonentě) je hodnota d[u] rovna délce nejkratší cesty z s do u. Důkaz indukcí: Pro d[s] = 0 tvrzení platí. Dokážeme, že pokud platí pro vrcholy, kde d[u] n, pak platí i pro ty kde je d[u] n + 1. Sporem necht u je vrchol, kde d[u] = n + 1 a existuje cesta délky ns poslední hranou {w, u} Při BFS jsem do u mohl přijít z vrcholu v, který byl do fronty dán před w. hodnota d vrcohlů ve frontě neklesá (rozmyslet), proto: d[u] = d[v] + 1, a d[v] d[w] Dále jsem mohl do u přijít přímo z w, pak v každém případě je d[u] = d[w] + 1 n + 1 d[u] nebo Pro w je tedy d[w] n 1 již správně (indukční předpoklad).