Napredni vidovi drva

47
Бинарни дрва AVL дрва B Дрва Red/Black дрва Напредни видови дрва h BST, AVL, B, Red/Black i Васил Танески Институт за информатика Природно – математички факултeт 18.12.2007 / ПРК

Transcript of Napredni vidovi drva

Page 1: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Напредни видови дрва〈 BST, AVL, B—, Red/Black 〉

Васил Танески

Институт за информатикаПриродно – математички факултeт

18.12.2007 / ПРК

Page 2: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Преглед

1 Бинарни дрваВидови и дефиницииРотирање на бинарни дрва

2 AVL дрваДефинициjаОперации со AVL дрва

3 B— ДрваДефиницииОперации со B— дрва

4 Red/Black дрваДефиницииОперации со Црвено/Црно дрва

Page 3: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Преглед

1 Бинарни дрваВидови и дефиницииРотирање на бинарни дрва

2 AVL дрваДефинициjаОперации со AVL дрва

3 B— ДрваДефиницииОперации со B— дрва

4 Red/Black дрваДефиницииОперации со Црвено/Црно дрва

Page 4: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Бинарно дрво

Дрво со наjмногу две деца.

• Вистинско бинарно дрво• Комплетно бинарно дрво• Дегенерирано бинарно дрво• Балансирано бинарно дрво

Page 5: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Комплетно бинарно дрво

def.Комплетно бинарно дрво е дрво со n нивоа, каде во секоениво d ≤ n− 1 има точно 2d jазли и jазлите во n–тото нивосе пополнети од лева страна.

Page 6: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Комплетно бинарно дрвослика

Page 7: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Дегенерирано бинарно дрво

def.Дегенерирано бинарно дрво е дрво каде секоj jазол–татко етатко на само едно дете.

Ова бинарно дрво се однесува како листа

Page 8: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Дегенерирано бинарно дрвослика 1

Page 9: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Дегенерирано бинарно дрвослика 2

Page 10: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Балансирано бинарно дрво

def.Балансирано бинарно дрво е дрво во кое разликата мегубило кои два листа е 1.

Page 11: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Балансирано бинарно дрвослика

Page 12: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Преглед

1 Бинарни дрваВидови и дефиницииРотирање на бинарни дрва

2 AVL дрваДефинициjаОперации со AVL дрва

3 B— ДрваДефиницииОперации со B— дрва

4 Red/Black дрваДефиницииОперации со Црвено/Црно дрва

Page 13: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Ротирање на бинарни дрвадефинициjа

Операциjа при коjа се менува структурата на бинарнотодрво, но не и inorder редоследот.

• Единечна ротациjа- Лева ротациjа- Десна ротациjа

• Двоjа ротациjа- Лева/десна ротациjа- Десна/лев ротациjа

Page 14: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Ротирање на бинарно дрвослика

Истото бинарно дрво од сликата 1 на Дегенерирани б.д.

Page 15: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Примери и вежби

http://bach.taneski.com/applet/rot/

Page 16: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Преглед

1 Бинарни дрваВидови и дефиницииРотирање на бинарни дрва

2 AVL дрваДефинициjаОперации со AVL дрва

3 B— ДрваДефиницииОперации со B— дрва

4 Red/Black дрваДефиницииОперации со Црвено/Црно дрва

Page 17: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

AVL дрво

Прво дрво од овоj вид (самобалансирачки дрва).

Г. Аделсон–Велски и Е. Ландис — 1962

Page 18: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Време за извршување

За трите основни операции:• Вметнување• Пребарување• Бришење

©(log n)

Page 19: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Баланс фактор

За секоj jазол покраj вредност и Баланс фактор ∈ {−1, 0, 1}.

def.Баланс фактор на AVL дрво е разликата мегу висините надесното и левото поддрво.

Page 20: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

AVL дрвослика

Page 21: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Преглед

1 Бинарни дрваВидови и дефиницииРотирање на бинарни дрва

2 AVL дрваДефинициjаОперации со AVL дрва

3 B— ДрваДефиницииОперации со B— дрва

4 Red/Black дрваДефиницииОперации со Црвено/Црно дрва

Page 22: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Вметнување

• Класично изминување до точната локациjа• Класично вметнување• Ажурирање на баланс факторите движеjки се конкоренот

• Ротирање ако новиот баланс фактор на некоj jазол е −2или 2

Page 23: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Ротирање

• Ако е −2 (левата страна повисока) — десна ротациjа• Ако е 2 (десната страна повисока) — лева ротациjа

Page 24: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Бришење

Слично како и за вметнувањето.

• Класично изминување до точната локациjа• Бришење како при BST• Ажурирање на баланс факторите движеjки се конкоренот

• Ротирање ако новиот баланс фактор на некоj jазол е −2или 2

Page 25: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Пребарување

Исто како и каj BST.

Page 26: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Пример

http://bach.taneski.com/applet/

Ке направиме AVL дрво со следните вредности:(во во овоj редослед)

8, 9, 13, 3, 4, 2, 10, 14, 12, 11, 7, 6, 5, 15, 1

Page 27: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Преглед

1 Бинарни дрваВидови и дефиницииРотирање на бинарни дрва

2 AVL дрваДефинициjаОперации со AVL дрва

3 B— ДрваДефиницииОперации со B— дрва

4 Red/Black дрваДефиницииОперации со Црвено/Црно дрва

Page 28: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

B— Дрво

За разлика од AVL и Red/Black дрвото ова не бинарно дрво.

Rudolf Bayer и Ed McCreight — 1972

Page 29: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

B— Дрводефинициjа

def.B— дрво е дрво од ред m > 1 кое задоволува:• секоj jазол има dm2 e ≤ m деца• коренот има барем 2 деца• сите лисjа имаат се на исто ниво (имаат иста висина)• Внатрешен jазол со k деца има k − 1 вредности

Page 30: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

B— Дрвослика

Page 31: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Преглед

1 Бинарни дрваВидови и дефиницииРотирање на бинарни дрва

2 AVL дрваДефинициjаОперации со AVL дрва

3 B— ДрваДефиницииОперации со B— дрва

4 Red/Black дрваДефиницииОперации со Црвено/Црно дрва

Page 32: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Вметнување

Секое вметнување е на листовите.• Класично изминување до точната локациjа• Ако листот има помалку вредности од максималниот,вметнуваме тука (задржуваjки го редоследот)

• Ако нема помалку од максималниот броj вредности:- Избираме средина мегу вредностите вклучуваjки jа иновата вредност

- Вредностите помали од избраната ги ставаме во новjазол лево, а поголемите во нов десно.

- Избраната се вметнува каj таткото, што може да гопродолжи делењето нагоре.

Page 33: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Бришење

Се пронаога елементот коj треба да се избрише, се брише исе преструктуира дрвото нагоре.

Наjлесно е бришење во лисjата.

Page 34: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Пребарување

Исто како и каj BST дрвата.

Page 35: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Пример

http://bach.taneski.com/applet/

Ке направиме B— дрво со следните вредности:(во во овоj редослед)

8, 9, 13, 3, 4, 2, 10, 14, 12, 11, 7, 6, 5, 15, 1

Page 36: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Преглед

1 Бинарни дрваВидови и дефиницииРотирање на бинарни дрва

2 AVL дрваДефинициjаОперации со AVL дрва

3 B— ДрваДефиницииОперации со B— дрва

4 Red/Black дрваДефиницииОперации со Црвено/Црно дрва

Page 37: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Red/Black дрво

Симетрично бинарно B— дрво

Rudolph Bayer — 1972

Исто како и двете претходните дрва, за сите операциивремето е ©(log n)

Page 38: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Red/Black дрводефинициjа

def.Црвено/Црно дрво е самобалансирачко бинарнопребарувачко дрво.Покраj вредност секоj jазол има и боjа ∈ црвена, црна .Треба да биде запазено и:• Секоj jазол има или црвена или црна боjа.• Коренот има црна боjа.• Сите лисjа се црни (лисjата се nil)• Двете деца на црвен jазол се црни.• Патеката од било коj jазол до било коj лист коjпризлегува од него содржи ист броj на црни jазли.

Page 39: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Red/Black дрвоRed/Black дрво

Претходно наведените ограничувања jа наметнуваатглавната особина на R/B дрвата:

Наjдолгиот пат од коренот до некоj лист е не повеке од двапати подолг од наjкраткиот пат во дрвото.

Page 40: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Red/Black дрвослика

Page 41: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Преглед

1 Бинарни дрваВидови и дефиницииРотирање на бинарни дрва

2 AVL дрваДефинициjаОперации со AVL дрва

3 B— ДрваДефиницииОперации со B— дрва

4 Red/Black дрваДефиницииОперации со Црвено/Црно дрва

Page 42: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Операции со Црвено/Црни дрва

Операциите вметнување и бришење за овие дрва се достакомплексни.• При вметнување постоjат 5 различни случаи• При бришење 6 различни случаи

Пребарувањето е исто како и каj BSD дрвата.

Ке ги разгледаме на примерот.

Page 43: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Операции со Црвено/Црни дрва

Иако тешки за имплементациjа овие дрва се доста користенипоради доброто време на извршување при наjлош случаj.

Page 44: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Пример

http://bach.taneski.com/applet/

Ке направиме Црвено/Црно дрво со следните вредности:(во во овоj редослед)

8, 9, 13, 3, 4, 2, 10, 14, 12, 11, 7, 6, 5, 15, 1

Page 45: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Заклучок

За да се искористи придобивката на логаритамско време запребарување/вметнување/бришење елементи на структурата

дрво балансирањето е многу битно.

Page 46: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Прашања пред краj?

Благодарам за вниманието.

Page 47: Napredni vidovi drva

Бинарни дрва AVL дрва B— Дрва Red/Black дрва

Прашања пред краj?

Благодарам за вниманието.