ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2/2, Lekce Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce /
Orientované grafy a binární relace V této části se seznámíme s pojmy: acyklický graf, testování acykličnosti topologické uspořádání uzlů/hran orientovaného grafu graf binární relace na množině, graf složení relací, složení grafů, tranzitivní uzávěr grafu Skripta odstavec 2.2, str. - 6 Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 2 /
Acyklické grafy Co víme: silně souvislý graf má každou hranu v nějakém cyklu Jak vypadá opačný extrém? acyklický graf = orientovaný graf bez cyklů Jak nejlépe testovat, zda je graf acyklický???? Hledáním cyklů??? Zjištění: Pokud pro uzly orientovaného grafu G platí u U: δ + (u) nebo u U: δ (u), potom graf G obsahuje alespoň jeden cyklus. nesplňuje podmínku δ (u) cyklus! nesplňuje podmínku δ + (u) Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce /
Acyklické grafy Naše zjištění představuje podmínku postačující, nikoliv nutnou! Pro testování acykličnosti se nehodí. nemá ani kořen ani list! Nové zjištění: Orientovaný graf G je acyklický pro jeho libovolný kořen nebo list u je graf G - {u} acyklický. Teď už můžeme formulovat ALGORITMUS TESTOVÁNÍ ACYKLIČNOSTI postupným odebíráním kořenů/listů Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 4 /
Acyklické grafy - aplikace Plánujeme pořadí provádění nějakých akcí, např.: a < b, a < c, b < d, c < d, d < e, d < f, e < g, e < c, f < h, g < h b d f a c e g h Tyto akce NELZE reálně naplánovat. Proč? Odpovídající graf není acyklický Topologické uspořádání uzlů (obyčejného) orientovaného grafu je posloupnost u, u 2,..., u n taková, že každá hrana (u i, u j ) má i<j. Topologické uspořádání hran (obyčejného) orientovaného grafu je posloupnost h, h 2,..., h m taková, že každá dvojice navazujících hran h i, h j má i<j (co jsou to "navazující" hrany?) Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 5 /
Acyklické grafy - aplikace Jak bychom našli topologické uspořádání uzlů? Postupně odebíráme kořeny grafu (δ - (u)=) jako při testu acykličnosti. Jak to efektivně zařídit? pro každý uzel spočítáme - δ - (u)... vstupní stupeň (je-li =, je to kořen) - Γ(u)... množinu následníků při každém vypuštění kořene upravíme δ - (u) pro jeho následníky, při poklesu na zařadíme mezi kořeny. Pořadí odebrání uzlů je jejich topologickým uspořádáním.! Později uvedeme ještě jednodušší algoritmus! Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 6 /
Orientované grafy a binární relace Binární relace na množině X : Prostý OG s množinou uzlů U : R X X H U U (orientovaný) graf binární relace R... G R : h = (u, v) vyjadřuje platnost u R v X = {,2,,4,5} R = {<,2>, <,>, G R <2,>, <2,5>, <,4>, <,5>, <4,>, <4,2>, 5 2 <5,>, <5,4>} 4 Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 7 /
Orientované grafy a binární relace Složení grafů G R G S = G R S G R G S 5 2 5 2 4 4 5 2 5 2 G R S G S R 4 4 Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 8 /
Orientované grafy a binární relace (RE), (SY), (TR), (ANS), (AS), (IR) - jak se projeví v grafu?? Tranzitivní uzávěr grafu G G R G R+ 5 2 5 2 4 4 Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 9 /
Kontrolní otázky. Navrhněte algoritmus topologického očíslování hran acyklického orientovaného grafu..2 Zdůvodněte, proč pro testování acykličnosti (resp. hledání topologického uspořádání uzlů) orientovaného grafu stačí vypouštět jenom kořeny (nebo jenom listy).. Je topologické uspořádání uzlů (hran) orientovaného grafu určeno jednoznačně?.4 Kolika různými způsoby lze orientovat úplný neorientovaný graf o n uzlech K n tak, aby byl výsledný graf acyklický?.5 Popište strukturu nějakého obyčejného orientovaného grafu s n uzly, který má pro danou hodnotu k ( k n-) přesně k!. (n-k)! různých topologických uspořádání uzlů..6 Popište strukturu grafu binární relace, která je reflexivní (resp. symetrická, antisymetrická, asymetrická, tranzitivní, ireflexivní). Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce /
REPREZENTACE GRAFU maticové spojové další... V této části se seznámíme s pojmy: matice incidence NG/OG, matice sousednosti NG/OG (základní) spojová reprezentace NG/OG Skripta odstavec 4., str. 65-74 Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce /
Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 2 / Matice incidence NG A = [ a ik ] obdélníková matice typu U x H nad tělesem mod 2 (pozor na základní operace!)... hrana h k inciduje s uzlem u i a ik =... jinak a d e b c 2 4 5 6 7 a b c d 2 4 5 6 7 e? Co nám říká matice incidence o grafu?? Smyčky, rovnoběžné hrany?
Matice incidence NG Poznáme podle matic incidence, zda jsou dva grafy izomorfní? Např.: G G 2?? právě když?? A = A 2 Zjištění: součet (mod 2) ve sloupci je (vždy dvě jedničky!) řádky jsou lineárně závislé, takže hodnost matice A... h(a) U - (rovnost platí pro souvislé grafy) h(a) = U - p obecný vztah pro graf s p komponentami Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce /
Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 4 / Matice sousednosti NG V = [ v ij ] čtvercová matice typu U x U nad okruhem celých čísel: v ij = počet hran mezi uzly u i a u j a d e b c a b c d e a b c d e? Co nám říká matice sousednosti o grafu?? Smyčky, rovnoběžné hrany?
Matice sousednosti NG Poznáme podle matic sousednosti, zda jsou dva grafy izomorfní? Např.: G G 2?? právě když?? V = V 2 Zjištění: V = V T V r = [v ik (r) ]... počet sledů délky r mezi u i a u k A. A T = V + D, D = [ d ii ], kde d ii = δ(u i ) Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 5 /
Matice incidence OG A = [ a ik ] obdélníková matice typu U x H nad okruhem celých čísel: a ik =... hrana h k vychází z uzlu u i -... hrana h k končí v uzlu u i... jinak a b 2 a c 2 4 5 6 7-4 5 6 b c d - - - - d 7 e e - - Vlastnosti jsou podobné jako pro NG Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 6 /
Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 7 / Matice sousednosti OG V = [ v ij ] čtvercová matice typu U x U nad okruhem celých čísel: v ij = počet hran z uzlu u i do uzlu u j a d e b c a b c d e a b c d e? Poznáme izomorfní orientované grafy?? V = V T? a b c d e a b c d e
Matice sousednosti OG Zjištění: V r = [v (r) ik ]... počet spojení délky r z u i do u k V* = V i, i=,... d, kde d = min( H, U -)?? Co asi říká o grafu tato matice V*?? A. A T = D - V - V T, D = [ d ii ], kde d ii = δ + (u i )+ δ - (u i ) Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 8 /
Spojová reprezentace grafu NG - seznamy sousedů OG - seznamy následníků Adj[u]: 2 U Srovnání paměťové složitosti: NG A: U * H (bitů!) V: U * U (integer? Boolean) Adj: U + 2* H OG Adj: U + H Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 9 /
Spojová reprezentace grafu Základní spojovou reprezentaci mohou ještě doplňovat: seznamy předchůdců uzlů (pro OG) u každého prvku v seznamu následníků/předchůdců lze uvést i odpovídající označení (číslo) hrany přiřazení dvojic (uspořádaných dvojic) uzlů hranám (ρ a σ) ohodnocení/označení uzlů a/nebo hran Místo spojové reprezentace seznamů následníků/předchůdců je možné použít např. uložení v poli: 2 2 4 5 6 4 6 7 2 4 5 6 7 4 5 2 5 5 2 4 Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 2 /
Vnější reprezentace grafu Až dosud jsme měli na mysli vnitřní reprezentaci grafů, ale jsou také různé vnější reprezentace, jimiž lze zadat graf na vstupu nějakého programu, např.: // počet uzlů a hran 5 7 // hrany jako dvojice uzlů 2 2 4 4 2 2 5 5 5 4 4 2 2 5 6 4 7 5 Jaké jsou další možnosti? Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 2 /
Vnější reprezentace grafu Vlastní reprezentaci mohou mít některé speciální typy grafů, jako např.: kořenové stromy pravidelné stromy atd. Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 22 /
Kontrolní otázky.7 Jak se z matice incidence neorientovaného grafu určí množina sousedů zadaného uzlu? Jaká bude časová složitost této operace?.8 Jak se z matice incidence orientovaného grafu určí množina předchůdců zadaného uzlu? Jaká bude časová složitost této operace?.9 Přesně popište, jaký bude vztah matice sousednosti (obecného) neorientovaného grafu G a matice sousednosti grafu G', který vznikl nějakou orientací hran grafu G.. V jakém orientovaném grafu bude r-tá mocnina V r matice sousednosti V obsahovat počty různých orientovaných cest mezi jednotlivými uzly?. Jak se z matice sousednosti neorientovaného grafu určí množina sousedů zadaného uzlu? Jaká bude časová složitost této operace?.2 Jak se z matice sousednosti orientovaného grafu určí množina předchůdců zadaného uzlu? Jaká bude časová složitost této operace?. Navrhněte algoritmus převodu matice incidence A neorientovaného grafu na jeho matici sousednosti V..4 Navrhněte algoritmus převodu matice sousednosti V orientovaného grafu na jeho matici incidence A. Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 2 /
Prohledávání grafů V této části probereme témata strom prohledání do šířky (BF-strom) časová složitost prohledání do šířky rozklad neorientovaného grafu na komponenty Skripta odstavec 4.2, str. 74-79 Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 24 /
Prohledávání grafu do šířky BFS - Breadth-First Search Je zadán graf G = H,U,σ (není podstatné, zda NG nebo OG) a jeho uzel s U. Prohledáním do šířky dostaneme strom (nejkratších) s u cest pro všechny uzly u dostupné z uzlu s (BF-strom) Stavy uzlů: FRESH - nový (dosud neobjevený) uzel OPEN - právě objevený ("nadějný") uzel CLOSED - vyčerpaný uzel Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 25 /
Prohledávání grafu do šířky 2 4 5 6 7 8 9 2 4 5 6 7 8 9 2 Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 26 /
Prohledávání grafu do šířky d[v]=k+ s u p[v]=u v d[u]=k Použité datové struktury: stav[u] - FRESH / OPEN / CLOSED d[u] - zjištěná vzdálenost s u p[u] - předchůdce uzlu u (viz ) Queue - fronta OPEN uzlů Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 27 /
Prohledávání grafu do šířky void BFS (Graph G, Node s) { // pseudokod for (Node u in U(G)-s) 2 { stav[u] = FRESH; d[u] = ; p[u] = null; } stav[s] = OPEN; d[s] = ; p[s] = null; 4 Queue.Init(); Queue.Push(s); 5 while (!Queue.Empty()) { 6 u = Queue.Pop(); 7 for (v in Adj[u]) { 8 if (stav[v] == FRESH) { 9 stav[v] = OPEN; d[v] = d[u]+; p[v] = u; Queue.Push(v); } } 2 stav[u]=closed; } Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 28 /
Prohledávání grafu do šířky d[u] 2 4 2 4 5 2 4 5 6 7 8 9 2 4 5 6 2 4 5 4 5 6 7 6 7 8 9 2 Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce 29 /
Složitost prohledávání do šířky cykl na řádku a 2... U operace s frontou O() na uzel celkem O( U ) cykly 5- a 7- pro každého souseda O( H ) O( U + H ) Zjištění: pokud fronta obsahuje uzly v, v 2,..., v r, potom platí d[v r ] d[v ] + d[v i ] d[v i+ ] pro i=,2,...,r- BFS nalezne nejkratší s v cestu pro každý uzel v dosažitelný z uzlu s a (p[v],v) určuje její poslední hranu všechny tyto hrany tvoří tzv. BF-strom Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce /
Kontrolní otázky.5 Změní se nějak chování či výsledek algoritmu BFS, pokud příkaz na řádku 2 umístíme bezprostředně za řádek 6?.6 Jak budou výsledky algoritmu BFS (tzn. vytvořený BFS-strom a hodnoty d[u]) ovlivněny změnou pořadí uzlů v seznamech sousedů?.7 Změní se nějak složitost algoritmu BFS, pokud namísto spojové reprezentace použijeme k vyjádření struktury grafu jeho matici incidence A (resp. matici sousednosti V)?.8 Zdůvodněte, proč nelze následující strom T získat jako BFS-strom při prohledání grafu G do šířky pro žádné uspořádání uzlů v seznamech sousedů uzlů, přestože strom T představuje jeden z možných stromů nejkratších cest z uzlu s do všech ostatních uzlů. s G s T.9 Jak vypadá neorientovaný graf, jehož BFS strom má při libovolném uspořádání uzlů v seznamu sousedů tvar hvězdice?.2 Upravte algoritmus BFS tak, aby určoval počet a strukturu (tj. skupiny uzlů) jednotlivých komponent neorientovaného grafu. Doc. Josef Kolář (ČVUT) Reprezentace grafů GRA, LS 2/, Lekce /