60 likes | 229 Vues
Stromy. Graf bez kružnic se nazývá les Souvislý les se nazývá strom Les je tedy takový graf, jehož každou komponentou je strom Mezi každými dvěma vrcholy stromu vede jediná cesta Přidáním jedné nové hrany do stromu vznikne kružnice (právě jedna)
E N D
Stromy • Graf bez kružnic se nazývá les • Souvislý les se nazývá strom • Les je tedy takový graf, jehož každou komponentou je strom • Mezi každými dvěma vrcholy stromu vede jediná cesta • Přidáním jedné nové hrany do stromu vznikne kružnice (právě jedna) • Strom je tedy minimální souvislý graf na daných vrcholech • Kostra grafu je takový podgraf, který obsahuje všechny uzly a je to strom
Kořenový strom • Jestliže vybereme jeden uzel, který nazveme kořen, získáváme kořenový strom • Pak hovoříme o předchůdcích (rodičích), následnících (potomcích) a sousedech (sourozencích) uzlů • Arita stromu je maximální počet potomků každého uzlu • Uzel bez potomků se nazývá list • 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 • Maximální vzdálenost mezi kořenem a listem se nazývá výška stromu
Aplikace stromů • Potřebujeme 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 • Hodnoty v levém podstromu jsou menší než hodnota v kořeni, ta je menší než hodnoty v pravém podstromu • Algoritmy: přidání uzlu, odebrání uzlu, vyhledání uzlu • Jaká je složitost těchto algoritmů?
Heap sort • Řazení haldou • V haldě platí, že rodič nese větší (menší) hodnotu než jeho potomci • Algoritmy: přidání prvku, odebrání kořene • Jaká je složitost těchto dílčích algoritmů? • Jaká je složitost řazení haldou?