TGH03 - stromy, ukládání grafů Jan Březina Technical University of Liberec 17. března 2015
Kružnice - C n V = {1, 2,..., n} E = {{1, 2}, {2, 3},..., {i, i + 1},..., {n 1, n}, {n, 1}}
Cesta - P n V = {1, 2,..., n} E = {{1, 2}, {2, 3},..., {i, i + 1},..., {n 1, n}}
Úplný graf - K n
Úplný bipartitní graf - K n,m
Rovinný graf Graf je rovinný, pokud jej lze nakreslit bez křížení hran.
Definition Strom je souvislý graf neobsahující kružnici. Lemma Každý strom s alespoň dvěma vrcholy má alespoň dva listy (vrcholy stupně 1).
Definition Strom je souvislý graf neobsahující kružnici. Lemma Každý strom s alespoň dvěma vrcholy má alespoň dva listy (vrcholy stupně 1). Důkaz: Nejdelší cesta P = (v 0, e 1, v 1,..., e t, v t ) na stromu T.
Definition Strom je souvislý graf neobsahující kružnici. Lemma Každý strom s alespoň dvěma vrcholy má alespoň dva listy (vrcholy stupně 1). Důkaz: Nejdelší cesta P = (v 0, e 1, v 1,..., e t, v t ) na stromu T. Její konce musí být listy. Dokážeme sporem:
Definition Strom je souvislý graf neobsahující kružnici. Lemma Každý strom s alespoň dvěma vrcholy má alespoň dva listy (vrcholy stupně 1). Důkaz: Nejdelší cesta P = (v 0, e 1, v 1,..., e t, v t ) na stromu T. Její konce musí být listy. Dokážeme sporem: Pokud by jeden z nich nebyl list (třeba v 0 ), pak bud existuje hrana v 0, u, u P a tedy kružnice (T není strom)
Definition Strom je souvislý graf neobsahující kružnici. Lemma Každý strom s alespoň dvěma vrcholy má alespoň dva listy (vrcholy stupně 1). Důkaz: Nejdelší cesta P = (v 0, e 1, v 1,..., e t, v t ) na stromu T. Její konce musí být listy. Dokážeme sporem: Pokud by jeden z nich nebyl list (třeba v 0 ), pak bud existuje hrana v 0, u, u P a tedy kružnice (T není strom) nebo P jde prodloužit (P není nejdelší)
Věta o stromech Theorem Necht G = (V, E) je graf, pak následující podmínky jsou ekvivalentní 1. G je strom 2. jednoznačnost cesty Mezi každými dvěma vrcholy x, y V existuje právě jedna cesta. 3. maximální graf bez kružnice Každá přidaná hrana vytvoří kružnici. 4. minimální souvislý graf G je souvislý a vynecháním libovolné hrany vznikne nesouvislý graf. 5. Eulerův vzorec G je souvislý a platí V = E + 1
Důkaz 1) 2) zdefinice souvislosti: G je souvislý mezi každými dvěma vrcholy x, y V existuje cesta. druhá část G neobsahuje kružnici cesta je jednoznačná (2 cesty kružnice)
Důkaz 1) 3) Stačí dokázat: souvislost maximalita 1) 3) přidáním hrany e = (x, y) vytvořím kružnici, jelikož mezi x a y už existuje cesta (souvislost). 3) 1) pokud mohu přidat hranu (x, y) bez vytvožení kružnice je graf nesouvislý
Důkaz 1) 4) Stačí dokázat: bez kružnice minimalita 1) 2) 3) Pro každou hranu (x, y) neexistuje jiná cesta, odstranění nesouvislý graf 3) 1), not1) not3) Pokud existuje kružnice, je možno odebrat hranu.
Důkaz 1) 5) 1) 5), indukcí podle počtu vrcholů 1. Pro V = 1 vzorec platí. 2. Pokud vzorec platí pro V = n 1, musím dokázat, že platí i pro n: strom má alespoň 2 listy (lemma), pokud jeden odeberu, vzorec už platí Vzorec graf bez kružnice Součet s stupňů grafu: s = 2 E = 2 V 2 Kvůli souvislosti jsou všechny stupně aspoň 1, tj. max V 2 nejsou listy, tj. existuje list. Utrhnu list a použiju platnost implikace pro n 1, (opět indukce)
Kořenové stromy Kořenový strom je strom s jedním vyznačeným vrcholem kořenem. Orientace od listů ke kořeni. Každý vrchol kromě kořene má právě jednoho bezprostředního předka π(x). Pokud vede (orientovaná) cesta z y do x je x předek y a y potomek x Vrcholy kromě listů mají jednoho nebo více bezprosředních potomků. Zobrazením π(x) : V V je strom jednoznačně určen. pojmy: hladina, výška, šířka, k-ární strom
Reprezentace grafů Jakými způsoby můžeme reprezentovat grafy v počítači? Příklady pro grafy: Vrcholy i hrany budeme číslovat od jedné.
Seznam hran Ukládám počet vrcholů + seznam hran: graf G 5 vrcholů hrany: (1,2) (1,3) (1,4) (2,4) (3,4) (4,5) graf H 4 vrcholy hrany: (1,2) (2,1) (1,3) (3,2) (4,3) Příklad v C a C++: s t r u c t Graph { unsigned i n t n vtx, n edg ; unsigned i n t [ 2 ] edges ; } s t r u c t Graph { unsigned i n t n v t x ; v e c t o r < p a i r <int, int > > edges ; }
Matice sousednosti Vrcholy grafu očíslujeme 1,..., n = V, pak A i,j G = { 1 pokud existuje (orientovaná) hrana mezi vrcholy i, j 0 pokud hrana neexistuje závisí na uspořádání vrcholů počet prvků na řádku roven stupni vrcholu deg(g) = deg + (G) + deg (G) pro neorientované grafy symetrická příklad: A G = 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 0 A H = 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0
Incidenční matice Očíslujeme vrcholy 1,..., n = V a hrany 1,..., m = E. Neorientovaná incidenční matice C o rozměrech m n pro neorientovaný graf má prvek C i,j = 1 pokud j je vrcholem hrany i, jinak je C i,j = 0. Pro orientovaný graf je C i,j = 1 pokud hrana i opouští vrchol j (e i = (j, x)) a C i,j = 1 pokud hrana j přichází do vrcholu i (e i = (x, j)). Orientovanou incidenční matici můžeme sestavit i pro neorientovaný graf.
Vztah mezi maticemi (neorientované grafy) Lemma Necht C je neorientovaná incidenční matice a A je matice sousednosti grafu G. Pak C T C = A + D, kde D je diagonální matice stupňů D i,i = deg(i)
Seznamy sousedů Pro každý vrchol máme pole jeho sousedů. příklad: 2, 3, 4 1, 4 graf G: 1, 4 graf H: 1, 2, 3, 5 4 Pomocí dvou poĺı: G: (1, 4, 6, 8, 12, 13), (2, 3, 4, 1, 4, 1, 4, 1, 2, 3, 5, 4) H: (1, 3, 4, 5, 6), (2, 3, 1, 2, 3) 2, 3 1 2 3
Řídké grafy a matice Seznam hran: řídké uložení incidenční matice. Seznamy sousedů: řídké uložení matice sousednosti
Výhody uložení Ozačme: n - počet vrcholů, m - počet hran, r - max. počet sousedů je uv hrana průchod sousedů pamět seznam hran O(m) O(m) O(m) matice sousednosti O(1) O(n) O(n 2 ) seznamy sousedů O(r) O(r) O(n + m)
Laplaceova/Kirchhoffova matice a vztah mezi maticemi (orientované grafy) Pokud A(G) je matice sousednosti (obecně) orientovaného grafu a D(G) je diagonální matice stupňů, Laplaceova matice je: L(G) = D(G) L(G) Lemma Necht C je orientovaná incidenční matice a A je matice sousednosti grafu G. Pak C T C = L(G), Laplaceova matice je důležitá pro analýzu souvislosti grafů.
Matice konektivity, ohodnocení a vzdáleností Matice konektivity, nesymetrická matice sousednosti, M i j = 1 pokud existuje hrana (i, j). Matice ohodnocení hran. Matice vzdálenosti, matice metriky grafu.
Řídké grafy a matice pole začátků řádků, pole sloupců, pole hodnot (alokace dohromady) pro každý řádek pole sloupců nenulových prvků a pole jejich hodnot (alokace zvlášt ) místo poĺı lineární (spojový) seznam (každý prvek zvlášt )