STROMY A KOSTRY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 6

Podobné dokumenty
STROMY A KOSTRY. Stromy a kostry TI 6.1

Použití dalších heuristik

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

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

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

VLASTNOSTI GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 5

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

PLANARITA A TOKY V SÍTÍCH

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

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

Stromy, haldy, prioritní fronty

Algoritmy na ohodnoceném grafu

Vzdálenost uzlů v neorientovaném grafu

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

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

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

Rekurzivní algoritmy

07 Základní pojmy teorie grafů

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

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

Jan Březina. 7. března 2017

Úvod do teorie grafů

Algoritmy a datové struktury

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

6. Tahy / Kostry / Nejkratší cesty

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

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

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

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

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.

Dynamické datové struktury III.

TGH07 - Chytré stromové datové struktury

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

Dynamické programování

Grafové algoritmy III.

Dynamické datové struktury IV.

Binární vyhledávací stromy II

Dynamicky vázané metody. Pozdní vazba, virtuální metody

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

Algoritmy výpočetní geometrie

Matice sousednosti NG

TURINGOVY STROJE. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

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

TGH07 - Chytré stromové datové struktury

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

Matematika III 10. přednáška Stromy a kostry

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

8 Přednáška z

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

Přijímací zkouška - matematika

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2015

GRAFOVÉ MODELY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 1

TEORIE GRAFŮ TEORIE GRAFŮ 1

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

TGH08 - Optimální kostry

Návrh Designu: Radek Mařík

Programování v C++ 1, 16. cvičení

TGH06 - Hledání nejkratší cesty

0. ÚVOD - matematické symboly, značení,

ALGEBRA. Téma 5: Vektorové prostory

Union-Find problém. Kapitola 1

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

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

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

Řešení rekurentních rovnic 2. Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 11

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

řádově různě rostoucí rostou řádově stejně rychle dvě funkce faktor izomorfismus neorientovaných grafů souvislý graf souvislost komponenta

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

Matematika pro informatiky

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

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

5. Dynamické programování

Grafy (G) ρ(h) = [u,v]

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

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

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

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

Paralelní grafové algoritmy

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

5 Rekurze a zásobník. Rekurzivní volání metody

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

Dynamické programování

Úlohy k procvičování textu o svazech

Dynamické datové struktury II.

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

1. Minimální kostry Od mìsteèka ke kostøe

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

Cvičení z logiky II.

které je z různých pohledů charakterizují. Několik z nich dokážeme v této kapitole.

BI-EP1 Efektivní programování 1

4 Pojem grafu, ve zkratce

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2017

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2016

Transkript:

STROMY A KOSTRY Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 010/011, Lekce 6 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 4 6 1 / 35 15

Stromy a kostry Seznámíme se (připomeneme si) následujícími pojmy: kostra rafu, cyklomatické číslo rafu, hodnost rafu kořenový strom, hloubka stromu kořenová kostra orientovaného rafu uspořádaný strom, pravidelný strom stupně r, úplný pravidelný strom vnější/vnitřní délka stromu, binární strom průchody preorder/inorder/postorder Skripta odst. 3., str. 49 58 Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 / 15 35

Stromy a kostry Připomeňme si nejprve, co je to strom... a co je to kostra rafu... Co lze říci o stromech? Nechť G = H,U je prostý raf. Potom a) G je strom b) u,v U existuje právě jedna cesta u v c) G je souvislý, ale G - {h} není pro libovolnou h H d) G je souvislý a platí H = U - 1 e) G neobsahuje kružnice a platí H = U - 1 f) G neobsahuje kružnice, ale G {h} ano jsou ekvivalentní tvrzení Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 3 / 15 35

Větve a tětivy Kostra rafu rozdělí hrany na větve a tětivy Fundamentální soustava kružnic odpovídající dané kostře Cyklomatické číslo (počet nezávislých kružnic = počet tětiv) µ(g) = H - U +p (p je počet komponent) Hodnost rafu (počet hran kostry nebo lesa rafu) h(g) = U -p Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 4 / 15 35

Orientované stromy (připomenutí) strom orientovaný strom kořenový strom Kořenový strom T u (s kořenem u) - orientovaný strom, kde každá cesta C(u,v) je orientovanou cestou. Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 5 / 15 35

Kořenová kostra OG orient. raf jeho kostra kořenová kostra Kořenová kostra - kostra, která je kořenovým stromem. Hloubka hl(x) uzlu x v kořenovém stromu = vzdálenost od kořene Hloubka kořenového stromu = max hl(x) x U Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 6 / 15 35

orientace hran orientace hran uspořádání následníků toto jsou různé uspořádané stromy Uspořádaný (kořenový) strom následníci (podstromy každého uzlu) jsou pevným způsobem uspořádáni (první, druhý,...) Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 7 / 15 35

Pravidelné stromy stupeň 3 hloubka stupeň 3 hloubka 4 Pravidelný strom stupně r ( 1) (δ + (u) = 0 nebo r) Úplný pravidelný strom stupně r hloubky k - všechny listy jsou v hloubce k od kořene Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 8 / 15 35

Pravidelné stromy Statistika: 7 listů (k) 6 vnitřních uzlů (m) 1 hran (h) Zjištění: Pro každé k N existuje pravidelný strom stupně s k listy (má k-1 vnitřních uzlů a (k-1) hran: k / k-1 / (k-1) )?Jak je to pro jiné stupně? m.(r-1)+1 / m / m.r 15/7/1 9/4/1 Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 9 / 15 35

Pravidelné stromy 0.............. 1....... Statistika (r=): E(T)=.4+3.3+.= 1 I(T)=1.3+.+.1=9.... 3....... 4.................... Statistika (r=3): E(T)=3.4+5.3+4.+1.1= 36 I(T)=1.3+.+.1=9 vnější délka vnitřní délka E(T u ) = hl(v) sčítá se přes listy v I(T u ) = hl(v) sčítá se přes vnitřní uzly v E = I. (r-1) + r. m, kde m je počet vnitřních uzlů r=: 1=9.1+.6 r=3: 36=9.+3.6 Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 10 / 15 35

Pravidelné vs. n-ární stromy pravidelný strom stupně binární strom Binární strom Průchody binárním stromem - žádný uzel (prázdný) - preorder: kořen, LS, PS - kořen, levý podstrom, pravý podstrom - inorder: LS, kořen, PS - postorder: LS, PS, kořen Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 11 / 15 35

Kontrolní otázky 6.1 Určete, jakou podmínku musí splňovat uzel u souvislého orientovaného rafu, aby existovala kořenová kostra tohoto rafu s kořenem u. 6. Pro obecný počet uzlů n (n 3) určete, jak vypadá strom s n uzly, který má maximální (resp. minimální) počet listů. 6.3 Kolik různých kružnic vznikne, přidáme-li do kostry rafu dvě tětivy? 6.4 Zdůvodněte, proč se při libovolném z průchodů preorder, inorder, postorder binárního stromu navštíví jeho listy ve stejném relativním pořadí. 6.5 Předpokládejme, že uzly pravidelného stromu stupně jsou nějak očíslovány pořadovými čísly 1 až n. Ukažte, že strukturu tohoto pravidelného stromu lze jednoznačně rekonstruovat, pokud jsou k dispozici alespoň dvě z posloupností získaných průchodem preorder, inorder a postorder tohoto stromu. 6.6 Neorientovaný strom T má k listů a součet stupňů jeho vnitřních uzlů je s. Určete, co z toho bezprostředně plyne pro vlastnosti čísel k a s počet vnitřních uzlů stromu T v závislosti na k a s. 6.7 Šířkou kořenového stromu se nazývá maximum počtu uzlů nacházejících se ve stejné hloubce. Navrhněte aloritmus pro určení šířky zadaného kořenového stromu. Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 1 / 15 35

Minimální kostry Seznámíme se s následujícími pojmy: enerování všech koster rafu množinový rozklad minimální kostra rafu Borůvkův-Kruskalův aloritmus Jarníkův-Primův aloritmus hladové aloritmy, Huffmanovo kódování Skripta kap. 5, str. 91-109 Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 13 / 15 35

Doc. Josef Kolář (ČVUT) Prohledávání rafů GRA, LS 010/11, Lekce 4 14 / 15 Doc. Josef Kolář (ČVUT) Stromy a kostry GRA, LS 010/11, Lekce 6 14 / 35?Jak bychom enerovali všechny kostry rafu? Pomocí stromu všech koster - efektivní test vzniku kružnic! b c a d e f e d b a f f f e f e d c f e f f f e f e f f f e d f e d c b f e d f e f 4 hrany bez kružnic Generování koster rafu f

Generování koster rafu Rekapitulace: K tomu se hodí... Přidáváme hrany a testujeme vznik kružnice. Množinový rozklad - dynamický soubor podmnožin dané množiny s následujícími operacemi: - MAKE-SET(x) vytvoří jednoprvkovou podmnožinu - UNION(x,y) sjednocení podmnožin s prvky x a y - FIND(x) určí reprezentanta podmnožiny s prvkem x Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 15 / 15 35

Množinový rozklad Další použití: void KOMP(Graph G) { // určení komponent NG for (Node u in U(G)) MAKE-SET(u); for (Ede (u,v)in H) if (FIND(u)!= FIND(v)) UNION(u,v); } a b {a} {b} {c} {d} {e} {f} {} {h} {i} (a,b) {a,b} {c} {d} {e} {f} {} {h} {i} c e h d f i (e,f) {a,b} {c} {d} {e,f} {} {h} {i} (d,b) {a,b,d} {c} {e,f} {} {h} {i} (h,i) {a,b,d} {c} {e,f} {} {h,i} (a,c) {a,b,d,c} {e,f} {} {h,i} (e,) {a,b,d,c} {e,f,} {h,i} (b,c) {a,b,d,c} {e,f,} {h,i} (f,) {a,b,d,c} {e,f,} {h,i} (a,d) {a,b,d,c} {e,f,} {h,i}? Složitost : Ω( U + H )? Výhoda : dynamika! Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 16 / 15 35

Množinový rozklad Jak implementujeme množinový rozklad? Pomocí seznamů s odkazy na reprezentanta: MAKE-SET, FIND... O(1) UNION... O(min(m,n)) (pro vyvažování) (vyžaduje uchovávat další pomocné údaje) Areovaná složitost m operací, z toho n x MAKE-SET: O(m + n.l n) Při použití na určení kostry provedeme: U -krát MAKE-SET max.. H -krát FIND ( U -1)-krát UNION n = U, m.( U + H ) O( H + U + U.l U ) = O( H + U.l U )? Dokážeme to ještě lépe? ANO! Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 17 / 15 35

Množinový rozklad Další heuristiky pro množinový rozklad zkracování cesty při FIND UNION podle hodností Datové struktury: p[x] - předchůdce uzlu x hod[x] - hodnost (aproximace výšky) Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 18 / 15 35

Množinový rozklad void MAKE-SET (int x) { p[x] = x; hod[x] = 0; } void UNION (int x, int y) { LINK(FIND(x), FIND(y)); } void LINK(int x,int y) { if (hod[x] > hod[y]) p[y] = x; else { p[x] = y; if (hod[x] == hod[y]) hod[y]++; } } void FIND(int x) { if (x!= p[x]) p[x] = FIND(p[x]); return p[x]; } Složitost m operací MAKE-SET, FIND, UNION, když počet MAKE-SET je přesně n: O(m. l* n) neboli O(( U + H ). l* U ) Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 19 / 15 35

Minimální kostra (neorientovaného) rafu? Jaká kostra je minimální? Každá má přece U -1 hran! G = H,U je souvislý NG s nezáporným ohodnocením hran w: H R +. Hledáme kostru T = H v,u takovou, že? K čemu to bude dobré? w(h) (součet přes h H v ) je minimální 3 1 3 6 6 8 1 celkem má koster? 8 10 8 3 Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 0 / 15 35

Minimální kostry? Jak poznáme, že kostra je minimální? prohledáme všechny kostry rafu??? uhádneme kostru a ověříme její minimálnost (JAK?) V: Kostra T rafu G je minimální pro každou tětivu t je (kde K je jediná kružnice v T {t}) w(t) max w(h) pro h K 3 3 3 3 1 3 1 3 1 1 1 1 Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 1 / 15 35

Hledání minimální kostry? Praktické možnosti? odebírat hrany z původního rafu??? najít libovolnou kostru a postupně ji upravovat??? vytvářet minimální kostru přidáváním vhodných hran!!! Generický aloritmus pro minimální kostru void GENERIC-MST(Graph G,Weihts w) { T = ; while ("T netvoří kostru") { "najdi vhodnou hranu [u,v] pro T" T = T [u,v] } return T; } TOHLE je ten problém Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 / 15 35

Hledání minimální kostry Jak hledat hranu pro přidání do minimální kostry? V: Nechť P je podstrom vytvořenéčásti minimální kostry rafu G, [p,q] je hrana taková, že - p P, q P - w([p,q]) = min w([u,v]) pro vš. hrany [u,v], u P, v P. Pak lze hranu [p,q] přidat k minimální kostře. kandidáti na přidání do kostry P G-P Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 3 / 15 35

Borůvkův - Kruskalův aloritmus void BK-MST(Graph G, Weihts w) { 1 T = ; for (Node u in U(G)) MAKE-SET(u); 3 "seřaď H(G) podle neklesajících vah w(h)" 4 for (Ede [u,v] in H(G)) { // v daném pořadí 5 if (FIND(u)!= FIND(v)) { 6 T = T [u,v]; 7 UNION(u,v); 8 } } 9 return T; } O( H.l H ) řazení, O( H. l* U ) dyn. rozklad Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 4 / 15 35

Použítí Borůvkova-Kruskalova aloritmu 1 3 4 3 1 3 4 5 1 1 5 3 1 3 1 1 1 5 3 4 1 3 5 6 3 6 4 1 3 4 3 1 5 6 4 1 5 3 5 1 3 1 3 1 1 3 H O T O V O! Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 5 / 15 35

Jarníkův - Primův aloritmus void JP-MST(Graph G, Weihts w, Node r) { 1 Q = U; for (Node u in Q) d[u] = ; 3 d[r] = 0; p[r] = null; 4 while ( Q!= ) { 5 u = Q.ExtMin(); 6 for (Node v in Adj[u]) { 7 if ((v Q) && (w(u,v) < d[v])) { 8 p[v] = u; d[v] = w(u,v); 9 } } } } POZOR! Nemají konstantní složitost!!! O( U ) + O( U. l U ) + O( H. l U ) Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 6 / 15 35

Použítí Jarníkova-Primova aloritmu 1 3 4 3 1 3 4 5 1 1 5 3 1 4 3 1 1 1 5 3 4 1 3 5 6 3 1 3 6 4 1 1 3 4 3 1 5 6 4 1 5 3 5 3 1 1 3 H O T O V O! Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 7 / 15 35

Srovnání výsledků 1 1 1 1 1 1 1 1 1 3 1 3 1 1 3 1 1 3 3 1 1 3 Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 8 / 15 35

Kontrolní otázky 6.8 Nechť G je souvislý neorientovaný raf s nezáporným ohodnocením hran w, nechť H 1 je nějaká podmnožina jeho hran, která neobsahuje kružnice. Navrhněte aloritmus nalezení kostry s minimálním ohodnocením hran takové, že obsahuje všechny hrany z množiny H 1. 6.9 Zjistěte, zda jsou následující tvrzení pravdiváči nikoliv. Pravdivá tvrzení dokažte, nepravdivá vyvraťte co nejjednodušším protipříkladem: Jsou-li ohodnocení všech hran v souvislém neorientovaném rafu navzájem různá, je jeho minimální kostra určena jednoznačně. Jsou-li ohodnocení všech hran v souvislém neorientovaném rafu navzájem různá, pak mají každé dvě jeho různé kostry různá ohodnocení. Nechť je ohodnocení hrany h v souvislém neorientovaném rafu menší než ohodnocení každé jiné hrany. Pak je hrana h obsažena v každé jeho minimální kostře. 6.10 Graf G vzniknul tak, že jsme do stromu přidali hranu spojující nějakou dvojici jeho nesousedních uzlů. Čím je určen počet různých koster takto vytvořeného rafu G? 6.11 Ukažte na příkladu, že popsanými aloritmy hledání minimální kostry neorientovaného rafu nelze obecně získat minimální kořenovou kostru orientovaného rafu. V čem spočívá hlavní obtíž? Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 9 / 15 35

Hladové aloritmy (Greedy Alorithms) Požadavky na úlohu vlastnost hladového výběru - výběr podproblému a pak jeho řešení optimální podstruktura - optimální řešení problému obsahuje optimální řešení podproblému Postup shora dolů (dynamické proramování zdola nahoru) Příklad - Jarník-Prim aloritmus: výběr "nejlepšího" z n uzlů mimo dílčí podstrom pro přidání úprava kritéria pro jeho sousedy pak totéž pro (n-1) uzlů, atd. Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 30 / 15 35

Hladové aloritmy - příklad Příklad návrh optimální větvící struktury proramu test1 test test3 0.5 0.3 0.15 0.05 0.5 0.3 0.15 0.05.0 Známe relativníčetnost průchodu jednotlivými větvemi? Jaký bude průměrný počet testů potřebných k větvení? w i. hl(u i ) Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 31 / 15 35

Hladové aloritmy - příklad Obecná formulace: Pravidelný kořenový strom T u stupně r s n listy, které jsou ohodnoceny reálnými čísly w i = w(u i ) vnější w-délka E w (T u ) = w i. hl(u i ) Jak vypadá strom s minimální vnější w-délkou?.0 1.7.75 0.5 0.05 0.5 0.3 0.15 0.05 0.3 0.15 0.15 0.05 0.5 0.3 Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 3 / 15 35

Hladové aloritmy - příklad Jiná aplikace - enerování optimálního prefixového kódu prefixový kód - žádné slovo není prefixem jiného slova Jsou dány znaky a jejich četnosti (absolutní/relativní) v textu znak A B C D E F G H I J kód 10 11000 000 001 111 11001 110100 110101 01 11011 četnost 5 5 18 13 1 4 3 35 7 16 160 0 1 0 1 0 66 1 0 94 1 0 31 I:35 A:5 1 0 4 1 C:18 D:13 0 1 1 E:1 průměrná délka kódu.75 (proti 4.0) 0 9 1 B:5 F:4 0 5 0 1 1 G: H:3 1 J:7 Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 33 / 15 35

Huffmanův aloritmus (pro r=) void Huffman(Weihts w, int n) { Q.Init(); for (int i=1; i<=n; i++) { u = MakeNode(w[i]); Q.Push(u); } for (int i=1; i<n; i++) { x = Q.ExtMin(); y = Q.ExtMin(); z = MakeNode(w[x]+w[y]); z.left = x; z.riht = y; Q.Push(z); } return Q.ExtMin(); } Zobecnění pro libovolné r (stupeň stromu) je přímočaré... Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 34 / 15 35

Kontrolní otázky 6.1 Upravte Huffmanův aloritmus tak, aby vytvářel minimální pravidelný strom se zadaným stupněm r. 6.13 Dokažte, že hodnotu E w vnější w-délky pravidelného stromu vytvořeného Huffmanovým aloritmem lze spočítat jako součet ohodnocení všech jeho vnitřních uzlů. Doc. Josef Kolář (ČVUT) Prohledávání Stromy a kostry rafů GRA, LS 010/11, Lekce 46 35 / 15 35