Stromy.

Slides:



Advertisements
Podobné prezentace
Grafové algoritmy.
Advertisements

DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
Deduktivní soustava výrokové logiky
NEJKRATŠÍ CESTY MEZI VŠEMI UZLY
PLANARITA A TOKY V SÍTÍCH
LOGISTICKÉ SYSTÉMY 6/14.
Red-Black Stromy Binární Vyhledávací Stromy, u kterých je časová složitost operací v nejhorším případě rovná O(log n)
Diskrétní matematika Opakování - příklady.
Aplikace teorie grafů Základní pojmy teorie grafů
Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Úvod do teorie grafů.
Algebra.
Statické systémy.
CW – 05 TEORIE ROZHODOVACÍCH PROCESŮ
Varianty Turingova stroje Výpočet funkcí pomocí TS
ADT Strom.
Skip-List je datová struktura, která může být použita jako náhrada za vyvážené stromy. představují pravděpodobnostní alternativu k vyváženým stromům (struktura.
Úvod do Teorie množin.
Binární stromy, AVL stromy
LOGISTICKÉ SYSTÉMY 7/14.
LOGISTICKÉ SYSTÉMY 8/14.
Důkazové metody.
1IT S ÍŤOVÝ DATOVÝ MODEL Ing. Jiří Šilhán. S ÍŤOVÝ DATOVÝ MODEL Je historicky nejstarším datovým modelem. Jeho základem jsou vzájemně propojené množiny.
TI 6.1 STROMY A KOSTRY Stromy a kostry. TI 6.2 Stromy a kostry Seznámíme se s následujícími pojmy: kostra grafu, cyklomatické číslo grafu, hodnost grafu.
REDUKCE DAT Díváme-li se na soubory jako na text, pak je tento text redundantní. Redundance vyplývá z:  některé fráze nebo slova se opakují  existuje.
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Základní teorie grafů a její aplikace
Složitost.
Další abstraktní datové typy
Predikátová logika.
Algebra II..
Další typy dopravních problémů
CW – 05 TEORIE ROZHODOVACÍCH PROCESŮ
STROMY Datová struktura sestávající z uzlů
Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Grafové pojmy Projekt učitelé.
VLASTNOSTI GRAFŮ Vlastnosti grafů - kap. 3.
Teorie grafů.
Matematické metody optimalizace Tomáš Vaníček Katedra inženýrské informatiky Stavební fakulta ČVUT Thákurova 7, Praha 6 Dejvice, b407
Kostra grafu Prohledávání grafu
hledání zlepšující cesty
Barvení grafů Platónská tělesa
Kanonické indexování vrcholů molekulového grafu Molekulový graf: G = (V, E, L, ,  ) Indexování vrcholů molekulového grafu G: bijekce  : V  I I je indexová.
Vstup: Úplný graf G=(V,E), ohodnocení hran d:E → R + Výstup: Nejkratší Hamiltonovská cesta HC v grafu G Najdi minimální kostru K grafu G Pokud K neobsahuje.
Planarita a toky v sítích
Les, stromy a kostry Kružnice: sled, který začíná a končí ve stejném vrcholu, ostatní vrcholy jsou různé Souvislý graf: mezi každými dvěma vrcholy existuje.
Doc. Josef Kolář (ČVUT)Prohledávání grafůGRA, LS 2010/11, Lekce 4 1 / 15Doc. Josef Kolář (ČVUT)NP-úplné problémyGRA, LS 2012/13, Lekce 13 1 / 14 NP-ÚPLNÉ.
VLASTNOSTI GRAFŮ Doc. RNDr. Josef Kolář, CSc
Jak je to s izomorfismem
Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Domečkologie Projekt učitelé.
Hledání cyklů Komunikační sítě Elektrické obvody Odběr surovin a výrobků v průmyslové výrobě Logistika Chemie ….
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.
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é.
CW – 05 TEORIE ROZHODOVACÍCH PROCESŮ Ústav technologie, mechanizace a řízení staveb Fakulta stavební VUT v Brně © Ing. Václav Rada, CSc. 23. PŘEDNÁŠKA.
TI 3.1 UPOZORNĚNÍ Reprezentace grafů, odst. 4.1 dne (za týden) bude X36TIN dvakrát dne (za 5 týdnů) bude X36OSY dvakrát skripta.
NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6.
Část III: Teorie grafů Teoretické základy informatiky Tomáš Foltýnek
STROMY A KOSTRY Stromy a kostry - odst. 3.2.
Znázornění dopravní sítě grafem a kostra grafu Předmět: Teorie dopravy - cvičení Ing. František Lachnit, Ph.D.
MODELY TEORIE GRAFŮ.
Maximální propustnost rovinné dopravní sítě
MINIMÁLNÍ KOSTRA V GRAFU
CW-057 LOGISTIKA 43. PŘEDNÁŠKA Teorie grafů – 2 Leden 2017
CW – 05 TEORIE ROZHODOVACÍCH PROCESŮ
Běžné reprezentace grafu
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Toky v sítích.
Prakticky identické postupy:
AVL a B-stromy cvičení Radek Mařík.
Algoritmizace a datové struktury (14ASD)
Prakticky identické postupy:
Transkript prezentace:

Stromy

Opakování Co je to graf? Co je to sled, tah, cesta? Co je to eulerovský a hamiltonovský graf? Co je to (slabě / silně) souvislý graf? Co je to izomorfismus grafů? Co je to matice sousednosti? Co je to matice incidence? Jak jinak lze implementovat graf?

Graf bez kružnic (acyklický graf) se nazývá les Definice pojmů Graf bez kružnic (acyklický graf) se nazývá les Souvislý les se nazývá strom Les je tedy takový graf, jehož každou komponentou je strom Stromy mohou být neorientované orientované (kořenové)

Vlastnosti stromů Je dán strom G = (U, H, f). Pak |H| = |U| – 1 důkaz indukcí přes počet uzlů stromu Mezi každými dvěma uzly stromu vede jediná cesta Přidáním jedné nové hrany do stromu vznikne kružnice (právě jedna) Každý uzel stromu je artikulace, každá hrana stromu je most Strom je minimální souvislý graf na daných vrcholech

Uzel se stupněm 1 nazveme list. Neorientované stromy Uzel se stupněm 1 nazveme list. Každý strom obsahuje alespoň jeden list v grafu, kde stupeň každého uzlu ≥ 2 musí existovat kružnice Graf vzniknuvší ze stromu odstraněním libovolného listu a s ním incidentní hrany, je opět strom.

Kořenový strom I. Orientovaný strom je graf, jehož symetrizace je strom. Jestliže vybereme jeden uzel, který nazveme kořen, a všechny hrany jsou orientovány směrem od kořene, získáváme kořenový strom. Pro daný uzel pak hovoříme o předchůdcích (rodičích) následnících (potomcích) sousedech (sourozencích) Uzel bez potomků se nazývá list vstupní stupeň = 1, výstupní stupeň = 0

Kořenový strom II. Vzdálenost uzlu od kořene se nazývá výška uzlu. Výška stromu je výška uzlu (listu) s největší výškou. Liší-li vzdálenost (délka cesty) mezi kořenem a všemi listy nejvýše o 1, mluvíme o vyváženém stromu

Uzlově ohodnocený strom Binární vyhledávací strom Aplikace stromů Uzlově ohodnocený strom Binární vyhledávací strom složitost vyhledávání je log(n) a ne n je-li strom vyvážený Řazení algoritmem heap-sort časová složitost n*log(n) Kódování Morse, Huffmann, …

Binární vyhledávací strom Binární vyhledávací strom (BST) je uspořádaný binární uzlově ohodnocený strom, v němž pro každý uzel platí hodnoty v levém podstromu jsou menší, než hodnota v daném uzlu hodnoty v pravém podstromu jsou větší, než hodnota v daném uzlu někdy připouštíme i rovnost, ale jen v 1 směru Algoritmy: vyhledání uzlu přidání uzlu odebrání uzlu

BVS: Vyhledávání Vstup: strom T, klíč k Výstup: ukazatel na uzel s klíčem k nebo NULL Sekvenčně: Rekurzivní BSTsearch(v,k): v := T (kořen) if v = NULL then return NULL while (v ≠ NULL) and (v.key ≠ k) do else if v.key = k then return v else if k<v.key then return BSTsearch(v.left, k) if k<v.key then v := v.left; else v := v.right; else return BSTsearch(v.right, k) return v; Otázka: Jak implementovat vkládání a rušení uzlu?

AVL stromy Pojmenován po autorech Adelson-Velskii a Landis Samovyvažující binární vyhledávací strom Pro každý uzel platí v levém podstromu jsou menší klíče v pravém podstromu jsou větší klíče výška levého a pravého podstromu se liší nejvýše o 1 U každého uzlu koeficient vyváženosti rozdíl výšek levého a pravého podstromu

Vkládání uzlu do AVL stromu Vložíme uzel jako v BVS Aktualizujeme koeficienty vyváženosti Provedeme vyvážení pomocí cyklických záměn ukazatelů levá nebo pravá rotace: novým kořenem se stává kořen vyššího podstromu maximálně dvě (protisměrné) rotace na jedno vložení

Vyvažování AVL stromu: levá rotace Pravý podstrom o 2 vyšší než levý v pravém podstromu je vyšší pravý podstrom Analogicky pravá rotace zdroj: wikipedia

Vyvažování AVL stromu: dvojitá rotace Pravý podstrm o 2 vyšší než levý v pravém podstromu vyšší levý podstrom Analogicky opačné rotace

Rušení uzlu z AVL stromu Je-li rušený uzel list, odebereme jej Není-li, je třeba jej nahradit nejlevějším uzlem pravého podstromu nebo nejpravějším uzlem levého podstromu Ten může mít maximálně 1 podstrom; jeho kořen jde na místo zrušeného uzlu Aktualizujeme koeficienty vyváženosti až ke kořeni V případě potřeby provedeme vyvážení

Halda (heap) Statická reprezentace prioritního stromu zleva úplný vyvážený binární strom každý uzel nese vyšší hodnotu, než všichni jeho potomci maximální hodnota je tedy v kořeni Pole, v němž jsou uzly určeny indexy kořen má index 0 levý potomek uzlu s indexem n má index 2n+1 pravý potomek uzlu s indexem n má index 2n+2 rodič uzlu s indexem n má index [(n-1)/2] Halda šetří místo, protože není potřeba ukládat ukazatele

Dokud má vkládaný uzel větší prioritu, než jeho rodič, vyměníme je Vkládání do haldy Vložíme nový uzel na nejbližší volnou pozici tak, aby strom zůstal zleva úplný Dokud má vkládaný uzel větší prioritu, než jeho rodič, vyměníme je “probubláváme” s uzlem směrem nahoru na správné místo Maximální počet výměn je h = log2n

Vybírání z haldy Vždy vybíráme kořen protože má nejvyšší prioritu Na jeho místo vložíme nejpravější list (L) maximální výšky kvůli zachování levé úplnosti stromu Dokud má L nižší prioritu než některý z jeho potomků, vyměníme jej s potomkem vyšší priority “probubláváme” s uzlem směrem dolů Maximální počet výměn je h = log2n

Vybudování haldy vložením všech prvků Heap sort Řazení haldou Vybudování haldy vložením všech prvků n*log(n) Postupné odebírání kořene a rekonstrukce haldy