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

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

Hledání silně souvislý komponent Silně souvislá komponenta orientovaného grafu G= (V,E) je maximální množina uzlů UV taková že ∀ u,v ∈ V : u je dosažitelné.

Podobné prezentace


Prezentace na téma: "Hledání silně souvislý komponent Silně souvislá komponenta orientovaného grafu G= (V,E) je maximální množina uzlů UV taková že ∀ u,v ∈ V : u je dosažitelné."— Transkript prezentace:

1 Hledání silně souvislý komponent Silně souvislá komponenta orientovaného grafu G= (V,E) je maximální množina uzlů UV taková že ∀ u,v ∈ V : u je dosažitelné z v a v je dosažitelné z u

2 Známé algoritmy a jejich složitost ● Tarjan (1972) – složitost  (V + E) ● Double DFS – složitost  (V + E) Je zřejmé, že jejich složitost je zároveň dolní hranice tohoto problému

3 Double DFS ● Je založen na aplikaci DFS ● Algoritmus využívá transponovaný graf G T ● Grafy G a G T mají shodné SCC ● Po provedení 2. DFS jsou hledané komponenty tvořeny vrcholy jednotlivých DFS stromů

4 SCC(G) 1.Zavolej DFS(G), který spočítá koncový čas pro každý vrchol 2.Spočitej transponovaný graf G T 3.Zavolej DFS(G T ), ale vrcholy uvažu v pořadí klesajících koncových časů spočitaných v 1. 4.Výstup jsou komponenty tvořeny vrcholy jednotlivých DFS stromů spočitaných v 3.

5 Provedeme 1.DFS

6 0/ 0

7 2/ 0 0/ 0 1/ 0 0/ 0

8 2/ 0 3/ 4 1/ 0 0/ 0

9 2/ 5 3/ 4 1/ 0 0/ 0

10 6/ 0 2/ 5 3/ 4 1/ 0 0/ 0

11 6/ 0 2/ 5 3/ 4 1/ 0 7/ 8

12 6/ 9 2/ 5 3/ 4 1/ 0 7/ 8

13 6/ 9 2/ 5 3/ 4 1/ 1 0 7/ 8

14 Transponujeme graf Provedeme 2.DFS na transponovaném grafu ale v hlavní cyklu DFS uvažujeme vrcholy v pořadí klesajících koncových časů spočitaných v 1. DFS

15 9 6 7 1010 8

16 9 6 7 1010 8

17 9 6 7 1010 8

18 9 6 7 1010 8

19 9 6 7 1010 8

20 9 6 7 1010 8

21 Vrcholy jednotlivých DFS stromů tvoří hledané sylně souvislé komponenty

22 Robert E. Tarjan (*1948) ● studoval na California Institute of Technology (B.S.) a Stanford University (M.S. a Ph.D.) ● Publikoval přes 170 článků, vymyslel řadu alogritmů (převážně z oblasti grafových algoritmů), zabýval se datovými strukturami. ● Algoritmus pro SCC publikován v: Robert E. Tarjan, Depth-first search and linear graph algorithms, SIAM Journal on Computing, 1(2):146-160, 1972.

23 Tarjanův algoritmus pro SCC ● Je založený na DFS. ● Vrcholy v grafu si indexuje podle pořadí v jakém je navštěvuje (visit), u každého vrcholu si také pamatuje vrchol s nejnižším indexem, ke kterému existuje z tohoto vrcholu cesta (low-link). ● Při první návštěvě vrcholu nastaví low-link = visit, při dalším prohledávání upravuje low-link na odpovídající hodnotu. ● Navštívené vrcholy postupně ukládá na zásobník (kde jsou seřazeny podle jejich hodnoty visit). ● Když se rekurzívní volání DFS vrátí zpět k takovému vrcholu, u kterého platí visit = low-link (tedy vrchol s nejnižším indexem, ke kterému vede z toho vrcholu cesta, je on sám), tak se odstraní všechny vrcholy ze sásobníku až po tento vrchol – tvoří totiž silně spojitou komponentu.

24 Příklad

25

26

27

28

29

30

31

32

33

34

35

36 Srovnání obou algoritmů


Stáhnout ppt "Hledání silně souvislý komponent Silně souvislá komponenta orientovaného grafu G= (V,E) je maximální množina uzlů UV taková že ∀ u,v ∈ V : u je dosažitelné."

Podobné prezentace


Reklamy Google