View
49
Download
5
Category
Preview:
DESCRIPTION
Binární stromy, AVL stromy. Vyhledávání v souboru. ?. blablabla. blablable. blablablo. blablablu. blablably. Časová složitost θ (n). blablablík. blablablíci. Vyhledávání v indexovaném souboru. ?. blablabla. blablable. Indexová struktura. blablablo. blablablu. blablably. - PowerPoint PPT Presentation
Citation preview
Binární stromy, AVL stromy
Vyhledávání v souboruklíč data
2
4
8
1
5
7
3
blablablo
blablable
blablabla
blablablu
blablably
blablablík
blablablíci
?Časová složitost θ (n)
Vyhledávání v indexovaném souboruklíč data
2
4
8
1
5
7
3
blablablo
blablable
blablabla
blablablu
blablably
blablablík
blablablíci
?Když se to dobře udělá, tak se dosáhne Časové složitosti θ (log n)
Indexová struktura
Proč je θ (log n) lepší než θ (n)Velikost souboru
10 1000 100 000
1 000 000
10 000 000
108 1010 1012 1014
Počet operacíθ (n)
10 1000 100 000
1 000 000
10 000 000
108 1010 1012 1014
Čas (při 108 op/s
10-7s 10-5s 1 ms 10 ms 0,1 s 1s 1 min40 s
2h 46min
2 týdny
Velikost souboru
10 1000
100 000
1 000 000
10 000 000
108 1010 1012 1014
Počet operacíθ (log n)
4 10 17 20 24 27 34 40 47
Čas (při 108 op/s
40ns 100ns
170ns 200 ns 240 ns 270 ns 340 ns 400 ns 470 ns
Když je soubor očíslovaný
Vstup: Posloupnost Ai, i = 0,1,...,N - 1, hodnota X
Výstup: Hodnota i, pro kterou Ai = X, nebo i = -1, pokud takové Ai neexistuje
polož ZACATEK = 0, KONEC = N - 1Dokud je ZACATEK ≤ KONEC opakuj Urči PROSTREDEK jako celou část z (ZACATEK + KONEC)/2 Pokud je APROSTREDEK < X
polož ZACATEK = PROSTREDEK + 1 Jinak
Pokud je APROSTREDEK > X
polož KONEC = PROSTREDEK - 1 Jinak polož i = PROSTREDEK a skončipolož i = -1Pokud budou v souboru indexy 1-n, dosáhnu složitosti θ (log n)
Pokud budou indexy rozloženy nerovnoměrně, moc si nepomůžu
Binární strom
22
3027
4028165
3511
a)
Uzel je buď• List (obsahuje hodnotu)• Vnitřní uzel – obsahuje hodnotu n
• Může mít levého a pravého potomka (nebo oba)• Všechny uzly v levém podstromu jsou menší než n• Všechny uzly v pravém podstromu jsou větší, než n
Vyhledávání má složitost θ (hloubka stromu)Otázka je, kolik může být hloubka stromu
3 různé binární stromy pro stejnou množinu indexů
22
3027
4028165
3511
a)
27
30
4028165
3511
22
b)
27
30
40
28
16
5
35
11
22
c)
Hloubka 3
Hloubka 3
Hloubka 8
Dokonale vyvážený binární strom
• Počet uzlů v levém a pravém podstromu libovolného uzlu se liší maximálně o 1
22
3027
4028165
3511
a)
Není dokonale vyvážený
27
30
4028165
3511
22
b)
Je dokonale vyvážený
3
5
Vložení prvku do dokonale vyváženého stromu
27
30
4028165
3511
22
b)
22
30
4028165
3511
228
Nový prvek 8
Vložení nenarušilo dokonalou vyváženostBylo provedeno v čase θ (log n)
Vložení prvku do dokonale vyváženého stromu
27
30
4028165
3511
22
b)
Nový prvek 33
θ (log n)
22
30
4028165
3511
22
33
AVL stromy
• Georgij Maximovič Addelson Velskij (*1922 Moskva, žije v Izraeli))
• Jevgenij Michajlovič Landis (1921 Charkov-1997 Moskva)
AVL stromy
• Pro každý uzel platí, že hloubka levého a pravého podstromu se liší maximálně o 1
• Slabší podmínka, než podmínka dokonalé vyváženosti
AVL stromy
27
30
4028165
3511
22
b)
22
3027
4028165
3511
a)
AVL stromy
• N(h) – minimální počet prvků ve stromu hloubky h
• N(1)=1, N(2)=2, N(3)=4• N(h)=1+N(h-1)+N(h-2)• Hodnoty N(h) jsou čísla Fibonacciho
posloupnosti zvětšená o 1• AVL stromům se říká také Fibonacciho stromy
Matematické tvrzení
– Prvky Fibonacciho posloupnosti rostou exponencielně se základem d, který je menší než 2.
– Prvky posloupnosti h(n) pro dokonale vyvážené stromy rostou exponencielně se základem 2.
– Současný nejlepší odhad základu d je asi 1,74.– d je tedy 1,45 x menší, než 2.– Vyhledávání v AVL stromech je tedy maximálně o
45% pomalejší, než vyhledávání v dokonale vyvážených stromech
Zařazování do AVL stromů
30
4028165
3511
27
22
30
4028165
3511
27
22
3
Zařadím prvek 3
Zařazení prvku 3 nenarušilo AVL vlastnost
Zařazování do AVL stromů
30
4028165
3511
27
22
Zařadím prvek 1
Zařazení prvku 1 narušilo AVL vlastnost
30
4028165
3511
27
22
3
1
30
4028165
3511
27
22
3
1
30
4028163
3511
27
22
1 5
Provedu „LL rotaci“, přesměrování 2 ukazatelů
Zařazování do AVL stromů
30
4028165
3511
27
22
Zařadím prvek 29
Zařazení prvku 29 narušilo AVL vlastnost
Provedu „LR rotaci“, přesměrování 4 ukazatelů (nejsložitější situace)Ještě existuje RR rotace (2 změny) a RL rotace (4 změny)
30
4028163
3511
27
22
1 5
29
30
4028163
3511
27
22
1 5
29 29
3528163
3011
27
22
1 5 40
(a,b) stromy
• Zobecnění pojmu binární strom• Každý uzel může mít minimálně a a maximálně b
potomků• Dají se pro ně definovat pojmy dokonalé vyváženosti a
AVL vyváženosti s podobnými vlastnostmi– Jen typy a složitosti AVL rotací jsou jiné a konstanta d má jinou
hodnotu než 45 %• V obecné informatice se často používají (2,3) stromy, když
se udělají šikovně, dá se výrazně omezit výskyt rotací• V počítačové grafice nejčastěji (2,4) stromy a (4,4) stromy
(4-tree).
Recommended