Napredni vidovi drva

Post on 24-Jul-2015

1.636 views 6 download

Transcript of Napredni vidovi drva

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

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

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

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

18.12.2007 / ПРК

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

Преглед

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

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

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

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

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

Преглед

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

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

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

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

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

Бинарно дрво

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Преглед

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Преглед

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

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

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

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

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

AVL дрво

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

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

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

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

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

©(log n)

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

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

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

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

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

AVL дрвослика

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

Преглед

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

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

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

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

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

Вметнување

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

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

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

Ротирање

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

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

Бришење

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

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

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

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

Пребарување

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

Бинарни дрва 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

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

Преглед

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

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

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

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

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

B— Дрво

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

Rudolf Bayer и Ed McCreight — 1972

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

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

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

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

B— Дрвослика

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

Преглед

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

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

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

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

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

Вметнување

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

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

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

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

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

Бришење

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

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

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

Пребарување

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

Бинарни дрва 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

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

Преглед

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

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

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

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

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

Red/Black дрво

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

Rudolph Bayer — 1972

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

Бинарни дрва 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азли.

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

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

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

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

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

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

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

Преглед

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

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

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

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

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

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

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

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

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

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

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

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

Бинарни дрва 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

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

Заклучок

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

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

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

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

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

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

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

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