25
Duomenų struktūros lekt. dr. A. Slotkienė

Duomenų struktūros

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

Page 1: Duomenų struktūros

Duomenų struktūros

lekt. dr. A. Slotkienė

Page 2: Duomenų struktūros

Dvejetainis paieškos medis

9

1 8

4 10

5

6

3

Nesubalansuotaspavyzdys

Kaip kurti subalansuotą medį?

Page 3: Duomenų struktūros

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

Page 4: Duomenų struktūros

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)

Page 5: Duomenų struktūros

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.

Page 6: Duomenų struktūros

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)

Page 7: Duomenų struktūros

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.

Page 8: Duomenų struktūros

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ę

Page 9: Duomenų struktūros

Ž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

Page 10: Duomenų struktūros

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

Page 11: Duomenų struktūros

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

Page 12: Duomenų struktūros

Trijų viršūnių pervarkymas:Viengubas postūmis į kairę

Jei w ilgis >= v ilgiui

tai pertvarkom p u w

kitaip pertvarkom p u v

Page 13: Duomenų struktūros

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

Page 14: Duomenų struktūros

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

Page 15: Duomenų struktūros

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ę

Page 16: Duomenų struktūros

Dvigubas postūmis į dešinę

Jei w ilgis >= v ilgiuitai pertvarkom p u w kitaip pertvarkom p u v

2. Postūmis į dešinę

Page 17: Duomenų struktūros

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

Page 18: Duomenų struktūros

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

Page 19: Duomenų struktūros

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

Page 20: Duomenų struktūros

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

Page 21: Duomenų struktūros

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ę

Page 22: Duomenų struktūros

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

Page 23: Duomenų struktūros

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

Page 24: Duomenų struktūros

Pertvarkymo suvestinė

p

u

v w

p

u

v w

Page 25: Duomenų struktūros

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