Upload
jonah-contreras
View
77
Download
1
Embed Size (px)
DESCRIPTION
Duomenų struktūros. lekt . dr. A . Slotkien ė. D vejetainis paieškos medis. 9. Nesubalansuotas pavyzdys. 4. 10. 1. 8. 3. 5. 6. Kaip kurti subalansuot ą medį?. AVL medis. - PowerPoint PPT Presentation
Citation preview
Duomenų struktūros
lekt. dr. A. Slotkienė
Dvejetainis paieškos medis
9
1 8
4 10
5
6
3
Nesubalansuotaspavyzdys
Kaip kurti subalansuotą medį?
AVL medis AVL (Adelson-Velski ir Landis) medis yra iš
dalies subalansuotas dvejetainis paieškos medis, kurio bet kurios viršūnės kairiojo ir dešiniojo pomedžių aukščiai skiriasi ne daugiau nei vienetu.
Šis skirtumas vadinamas subalansuotumo faktoriumi: 0 – pomedžiai subalansuoti -1 – kairiojo pomedžio aukštis vienetu didesnis už
dešiniojo 1 – dešiniojo pomedžio aukštis vienetu didesnis už
kairiojo
AVL medisIš dalies subalansuotas dvejetainis
paeiškos medis
Viršūnių charakteristikos: 1) ilgiausios šakos ilgis (lygmuo);
lygmuo skaičiuojamas nuo 0 2)skirtuminė charakteristika
dešiniosios ir kairiosios šakų ilgių skirtumas yra vadinamas faktoriumi
Faktorius turi būti -1, 0, +1. Jei faktorius ±2, medį reikia pertvarkyti.
3
5
6
(2, 2)
AVL medis
AVL-medis – tai dvejetainis paieškos medis, kurio šaknies dešinysis ir kairysis pomedžių aukščiai skiriasi ne daugiau kaip vienetu ir kurio pomedžiai, savo ruožtu, tai pat yra AVL-medžiai.
Charakteristikų skaičiavimo pavyzdys 10 elementas:
lygmuo ->3 faktorius -> 1 (3-2)
nereikia pertvarkyti
14 elementas: lygmuo ->2 faktorius -> 0 (2-2)
nereikia pertvarkyti
10
9
7 12
11
14
15
1613
(3, 1)
(2, 0)
(1, 0)
(0, 0)
(1, 1)
(0, 0) (0, 0)
Elementų įrašymo į AVL medį algoritmas
1. Naują viršūnę prijungiame pagal pagrindinį dvejetainio paieškos medžio formavimo algoritmą;
2. Viršūnių charakteristikas skaičiuojame išrinktajame kelyje tol, kol faktorius intervale [1, -1] ;
3. Jeigu gaunamas neleistinas skirtumas ±2, tai paskutines tris viršūnes pertvarkome ir prijungiame jų pomedžius.
Subalansavomo AVL medyje būdai Viengubas postūmis į dešinę Viengubas postūmis į kairę Dvigubas postūmis į dešinę:
Vieną kartą į kairę Kitą kartą į dešinę
Dvigubas postūmis į kairę: Vieną kartą į dešinę Kitą kartą į kairę
Žymėjimų susitarimai
p – viršunė kurios charakteristika ±2 u – vidurinioji viršūnė (pirmoji p iš
kairės arba dešinės, priklausomai kuo to, į kurią pusę didesnis viršūnių skaičius)
v – vidinė šaka w – išorinė šaka
Jei w ilgis >= v ilgiui
pertvarkom p u w
kitaip pertvarkom p u v
p
u
v w
Trijų viršūnių pervarkymas: Viengubas postūmis į dešinę
Jei w ilgis >= v ilgiui
pertvarkom p u w
kitaip pertvarkom p u v
u
w v
7
3
9
122
6
1
p(2, -2) u
w
v
7
3
9
12
2
61p
w=v =>puw w<v =>puv
Viengubas postūmis į dešinę
50
35
40 55
32
[2, -2]
50
32
35 55
40
[2, -2]p
u
w
w>v =>puw
Trijų viršūnių pervarkymas:Viengubas postūmis į kairę
Jei w ilgis >= v ilgiui
tai pertvarkom p u w
kitaip pertvarkom p u v
Viengubas postūmis į dešinę
51 73
9563
78
31
51 73
9563
78
31
51 78
95
63
73
2
1
1
0
1
Postūmis į dešinę
Įterpiame 31 Skaičiuojame faktorius Balansuojame puw
Viengubas postūmis į kairę
10583
9563
78
10583
9563
78
100
2
1
-1 10578
95
63 83 100
Postūmis į kairę
Įterpiame 100 Skaičiuojame faktorius Balansuojame puw
Trijų viršūnių pervarkymas: Dvigubas postūmis į dešinę
Jei v ilgis > w ilgiui
tai pertvarkom p u v
kitaip pertvarkom p u w
Dvigubas postūmis į dešinę:
1. Vieną kartą į kairę
2. Kitą kartą į dešinę
1. Postūmis į kairę
Dvigubas postūmis į dešinę
Jei w ilgis >= v ilgiuitai pertvarkom p u w kitaip pertvarkom p u v
2. Postūmis į dešinę
Dvigubas postūmis į dešinę
50
32
35 55
40
37
40
32
35 50
37 55
50
35
40 55
32 37
Postūmis į kairę SubalansuotasPostūmis į dešinę
puv puw
Dvigubas postūmis į dešinę
6455 7336
51 70 90
9563
78
6555
64
36
51
63 78
90
95
70
73
6555
64
36
51
63 73 90
9570
78
65
2
-1
1
-1 0
0
0
-1
1-1
0
0
Dvigubas postūmis į dešinę
78
63 95
90
55 73
70
65
51
36
75
78
70 95
90
65
55
73
36
63
51 75
70
63 78
73
55
9565
90
51
36 75
2
-1
-1
-1
1
Trijų viršūnių pervarkymas:Dvigubas postūmis į kairę
6
15
8
122
5
10
9
7
Dvigubas postūmis į kairę:
1. Vieną kartą į dešinę
2. Kitą kartą į kairę
p
u
v
3;2
puv
Trijų viršūnių pervarkymas:Dvigubas postūmis į kairę
u
w
6
12
8
102
5
9
p(3, 2)
6
159
122
5 10
15
87
7
puw
Postūmis į kairęPostūmis į dešinę
Dvigubas postūmis į kairę
51
63
78
95
85
80
100
83 105
79 200
51
63
78
83
200
80
100
79 95
85 105
63
78
83
95
51 80 100
85 10579
200
-2
1
1
-1
Postūmis į kairę SubalansuotasPostūmis į dešinę
puv puw
Skaičiaus 4 pašalinimas iš AVL:
1. Į 4 vietą atkeliam (iš dešinės) 6
2. p viršūnės faktorius -2 – reikia pertvarkyti
tris viršūnes - p u w ar p u v ?
7
3
9
122
4
1
u
w v
7
3
9
122
6
1
p(2, -2)
6
Pertvarkymo suvestinė
p
u
v w
p
u
v w
Praktika http://www.engin.umd.umich.edu/CIS/course.des/cis350/
treetool/ http://www.site.uottawa.ca/~stan/csi2514/applets/avl/BT.ht
ml http://www.cs.jhu.edu/~goodrich/dsa/trees/avltree.html