1 / 46

Sinh vieân trình baøy : Nguyễn Tuấn Phi (K30.101.070) Lễ Hữu Quang (K30.101.078)

CAÂY CAÂN BAÈNG. Sinh vieân trình baøy : Nguyễn Tuấn Phi (K30.101.070) Lễ Hữu Quang (K30.101.078) Lôùp toaùn 3B. Caây caân baèng hoaøn toaøn.

darius
Download Presentation

Sinh vieân trình baøy : Nguyễn Tuấn Phi (K30.101.070) Lễ Hữu Quang (K30.101.078)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CAÂY CAÂN BAÈNG Sinh vieân trình baøy : Nguyễn Tuấn Phi (K30.101.070) Lễ Hữu Quang (K30.101.078) Lôùp toaùn 3B

  2. Caây caân baèng hoaøn toaøn • Ñònh nghóa: caây caân baèng hoaøn toaøn laø caây nhò phaân tìm kieámmaø taïi moãi nuùt cuûa noù, soá nuùt cuûa caây con traùi cheânh leäch khoâng quaù moät so vôùi soá nuùt cuûa caây con phaûi.

  3. Nhaän xeùt: • Moät caây raát khoù ñaït ñöôïc traïng thaùi caân baèng hoaøn toaøn vaø cuõng raát deã maát caân baèng vì khi theâm hay huûy caùc nuùt treân caây coù theå laøm caây maát caân baèng (xaùc suaát raát lôùn), chi phí caân baèng laïi caây lôùn vì phaûi thao taùc treân toaøn boä caây. • Neáu caây caân ñoái thì vieäc tìm kieám seõ nhanh.Ñoái vôùi caây caân baèng hoaøn toaøn, trong tröôøng hôïp xaáu nhaát ta chæ phaûi tìm qua log2n phaàn töû (n laø soá nuùt treân caây).

  4. 44 23 88 59 13 37 Ex :Caây nhò phaân caân baèng hoaøn toaøn

  5. Caây nhò phaân caân baèng hoaøn toaøn • Caây CBHT coù n nuùt coù chieàu cao h  log2n. Ñaây chính laø lyù do cho pheùp baûo ñaûm khaû naêng tìm kieám nhanh treân CTDL naøy. • Do Caây CBHT laø moät caáu truùc keùm oån ñònh neân trong thöïc teá khoâng theå söû duïng. Nhöng öu ñieåm cuûa noù laïi raát quan troïng. Vì vaäy, caàn ñöa ra moät CTDL khaùc coù ñaëc tính gioáng Caây CBHT nhöng oån ñònh hôn.

  6. Caây nhò phaân caân baèng hoaøn toaøn • Nhö vaäy, caàn tìm caùch toå chöùc moät caây ñaït traïng thaùi caân baèng yeáu hôn vaø vieäc caân baèng laïi chæ xaûy ra ôû phaïm vi cuïc boä nhöng vaãn phaûi baûo ñaûm chi phí cho thao taùc tìm kieám ñaït ôû möùc cho pheùp.

  7. Caây nhò phaân caân baèng • Ñònh nghóa: Caây nhò phaân tìm kieám caân baèng laø caây maø taïi moãi nuùt cuûa noù ñoä cao cuûa caây con traùi vaø cuûa caây con phaûi cheânh leäch khoâng quaù moät. • Nhaän xeùt: • CCBHT laø caây caân baèng. Ñieàu ngöôïc laïi khoâng ñuùng. • Caây caân baèng laø CTDL oån ñònh hôn haún CCBHT.

  8. Vi phaïm 44 23 88 59 108 13 37 15 30 40 55 71 Ex: Caây AVL(khoâng laø caây CBHT)

  9. Caây AVL(caây caân baèng) • Chæ soá caân baèng cuûa moät nuùt: • Ñònh nghóa: Chæ soá caân baèng cuûa moät nuùt laø hieäu cuûa chieàu cao caây con phaûi vaø caây con traùi cuûa noù. • Ñoái vôùi moät caây caân baèng, chæ soá caân baèng (CSCB) cuûa moãi nuùt chæ coù theå mang moät trong ba giaù trò sau ñaây: • CSCB(p) = 0  Ñoä cao caây traùi (p) = Ñoä cao caây phaûi (p) • CSCB(p) = 1  Ñoä cao caây traùi (p) < Ñoä cao caây phaûi (p) • CSCB(p) =-1  Ñoä cao caây traùi (p) > Ñoä cao caây phaûi (p)

  10. Caây AVL • Chæ soá caân baèng cuûa moät nuùt: • Ñeå tieän trong trình baøy, chuùng ta seõ kyù hieäu nhö sau: p->bal = CSCB(p); • Ñoä cao caây traùi (p) kyù hieäu laø hL • Ñoä cao caây phaûi(p) kyù hieäu laø hR #define LH -1 /* caây con traùi cao hôn */ #define EH 0/* hai caây caân baèng nhau */ #define RH 1 /*caây con phaûi cao hôn */

  11. Caây AVL struct AVLNode { char bal; // Chæ soá caân baèng Data key; AVLNode*pLeft; AVLNode*pRight; }; AVLNode *AVLTree;

  12. Caây AVL • Tröôøng hôïp theâm hay huûy moät phaàn töû treân caây coù theå laøm caây taêng hay giaûm chieàu cao, khi ñoù coù theå phaûi caân baèng laïi caây. • Vieäc caân baèng laïi moät caây seõ phaûi thöïc hieän sao cho chæ aûnh höôûng toái thieåu ñeán caây nhaèm giaûm thieåu chi phí caân baèng. • Caây caân baèng cho pheùp vieäc caân baèng chæ xaûy ra trong giôùi haïn cuïc boä neân ta coù theå thöïc hieän muïc tieâu treân.

  13. Caùc thao taùc ñaëc tröng cuûa caây AVL: • Theâm moät phaàn töû vaøo caây AVL. • Huûy moät phaàn töû treân caây AVL. • Caân baèng laïi moät caây vöøa bò maát caân baèng.

  14. Caùc tröôøng hôïp maát caân baèng • Ta seõ khoâng khaûo saùt tính caân baèng cuûa 1 caây nhò phaân baát kyø maø chæ quan taâm ñeán caùc khaû naêng maát caân baèng xaûy ra khi theâm hoaëc huûy moät nuùt treân caây AVL • Nhö vaäy, khi maát caân baèng, ñoä leäch chieàu cao giöõa 2 caây con seõ laø 2

  15. Caùc tröôøng hôïp maát caân baèng • Coù 6 khaû naêng sau: • Tröôøng hôïp 1 - Caây T leäch veà beân traùi : 3 khaû naêng • Tröôøng hôïp 2 - Caây T leäch veà beân phaûi: 3 khaû naêng

  16. T T1 R L h-1 L1 R1 h-1 h Tröôøng hôïp caây T leäch veà beân traùi P->bal = -2

  17. T T1 R L h-1 L1 R1 h-1 h Tröôøng hôïp caây T leäch veà beân traùi P->bal = -2

  18. T T1 R L h-1 L1 L1 h h Tröôøng hôïp caây T leäch veà beân traùi P->bal = -2

  19. T T L L T1 T1 R R h-1 h-1 L1 R1 L1 R1 h-1 h-1 h h T L T1 R h-1 L1 R1 h h Tröôøng hôïp caây T leäch veà beân phaûi P->balfactor=2

  20. Caân baèng laïi caây nhò phaân • Caùc tröôøng hôïp leäch veà beân phaûi hoaøn toaøn ñoái xöùng vôùi caùc tröôøng hôïp leäch veà beân traùi. • Vì vaäy, chæ caàn khaûo saùt tröôøng hôïp leäch veà beân traùi. • Trong 3 tröôøng hôïp leäch veà beân traùi, tröôøng hôïp T1 leäch phaûi laø phöùc taïp nhaát. Caùc tröôøng hôïp coøn laïi giaûi quyeát raát ñôn giaûn.

  21. moâ taû

  22. q q l ñ quay traùi taïi ñ c ñ a l a b b c Pheùp quay traùi

  23. q q ñ l quay traùi taïi ñ c l a ñ a b b c Pheùp quay phaûi

  24. T1 T T T1 R L h-1 L1 R1 R h h-1 L1 R1 h-1 h-1 h Caân bằng laïi caâây nhò phaân leäch traùi T->pleft=T1->pright T1->pright=T • T/h 1.1: caây T1 leäch veà beân traùi. Ta thöïc hieän pheùp quay traùi P->bal = 0 P->bal = -2 Vaäy caây ñöôïc caân baèng

  25. Caân bằng laïi caâây nhò phaân leäch traùi T1 T T T T1 R L h-1 L1 R1 T1 R L R L1 R1 h h h-1 h h-1 h L1 L1 h h • T/h 1.1: caây T1 khoâng leäch . Ta thöïc hieän pheùp quay traùi . T1->pright=T T->pleft=T1->pright P->bal = -2 P->bal = 1 Vaäy caây ñöôïc caân baèng

  26. T T1 R h-1 L1 T2 h-1 L2 R2 T T1 R L h-1 L1 R1 h-1 h

  27. Laàn 1:quay traùi T T2 R h-1 T T1 R2 L1 L2 T1 R h-1 h-1 L1 T2 h-1 L2 R2

  28. T T2 T2 R h-1 T T1 T1 R2 R2 R L1 L2 L1 L2 h-1 h-1 h-1 Laàn hai: quay phaûi H(L2,R2)<=h-1 Caây ñaõ caân baèng

  29. Theâm một phần tử treân caây AVL • Vieäc theâm moät phaàn töû vaøo caây AVL dieãn ra töông töï nhö treân CNPTK. • Sau khi theâm xong, neáu chieàu cao cuûa caây thay ñoåi, töø vò trí theâm vaøo, ta phaûi laàn ngöôïc leân goác ñeå kieåm tra xem coù nuùt naøo bò maát caân baèng khoâng. Neáu coù, ta phaûi caân baèng laïi ôû nuùt naøy. • Vieäc caân baèng laïi chæ caàn thöïc hieän 1 laàn taïi nôi maát caân baèng.

  30. 30 30 50 10 50 10 60 5 15 40 60 5 15 40 35 45 55 35 45 55 31 Ex :theâm moät phaàn töû Theâm phaàn töû 31 Caây maát caân baèng

  31. 30 30 50 40 10 10 60 5 15 40 50 5 15 35 35 45 55 60 45 31 31 55 Quay phaûi

  32. 40 30 50 40 30 10 60 50 10 5 15 35 45 35 5 60 31 55 45 15 31 55 Quay traùi

  33. caùc khaû naêng maát caân baèng khi theâm moät phaàn töû • Neáu Hl=Hr+1(hl>hr),theâm nuùt môùi vaøo caây beân traùi daãn ñeán khaû naêng chieàu cao cuûa caây beân traùi taêng leân 1. =>hl=hr+2 vaø caây maát caân baèng. • Neáu Hl+1=Hr(hl<hr),theâm nuùt môùi vaøo caây beân phaûi daãn ñeán khaû naêng chieàu cao cuûa caây beân phaûi taêng leân 1. =>hr=hl+2 vaø caây maát caân baèng.

  34. T T T1 T1 R R L L h-1 h-1 L1 R1 L1 R1 h-1 h h-1 h T T1 R L h-1 L1 L1 h h Xem laïi 3 khaû naêng maát caân baèng beân traùi Không xảy ra

  35. T T T1 T1 R R L L h-1 h-1 L1 R1 L1 R1 h-1 h h-1 h Vaäy khi theâm 1 pt thi coù hai khaû naêng maát caân baèng. Khi caân baèng laïi thì caây coù chieàu cao giaûm ñi 1.

  36. Theâm một phần tử treân caây AVL • Haøm insertNode: • traû veà giaù trò –1 khi khoâng ñuû boä nhôù • traû veà giaù trò 0 khi gaëp nuùt cuõ • traû veà giaù trò 1 khi theâm thaønh coâng. • Neáu sau khi theâm, chieàu cao caây bò taêng, giaù trò 2 seõ ñöôïc traû veà

  37. int insertNode(AVLTree &T, DataType X) { int res; if (T) { if (T->key == X) return 0; //đã có if (T->key > X) { res = insertNode(T->pLeft, X); if(res < 2) return res; switch(T->balFactor) { case RH: T->balFactor = EH; return 1; case EH: T->balFactor = LH; return 2; case LH: balanceLeft(T); return 1; } } ...................................................... }

  38. int insertNode(AVLTree &T, DataType X) { ...................................................... else // T->key < X { res = insertNode(T-> pRight, X); if(res < 2) return res; switch(T->balFactor) { case LH: T->balFactor = EH; return 1; case EH: T->balFactor = RH; return 2; case RH: balanceRight(T); return 1; } } ...................................................... }

  39. int insertNode(AVLTree &T, DataType X) { ...................................................... else // T->key < X { res = insertNode(T-> pRight, X); if(res < 2) return res; switch(T->balFactor) { case LH: T->balFactor = EH; return 1; case EH: T->balFactor = RH; return 2; case RH: balanceRight(T); return 1; } } ...................................................... }

  40. Huûy một phần tử treân caây AVL • Cuõng gioáng nhö thao taùc theâm moät nuùt, vieäc huûy moät phaàn töû X ra khoûi caây AVL thöïc hieän gioáng nhö treân CNPTK. • Sau khi huûy, neáu tính caân baèng cuûa caây bò vi phaïm ta seõ thöïc hieän vieäc caân baèng laïi. • Tuy nhieân vieäc caân baèng laïi trong thao taùc huûy seõ phöùc taïp hôn nhieàu do coù theå xaûy ra phaûn öùng daây chuyeàn.

  41. Huûy một phần tử treân caây AVLHaøm delNode • traû veà giaù trò 1 khi huûy thaønh coâng • traû veà giaù trò 0 khi khoâng coù X trong caây. • Neáu sau khi hủy, chieàu cao caây bò giaûm, giaù trò 2 seõ ñöôïc traû veà.

  42. 30 30 50 10 50 10 60 5 15 40 60 5 15 40 35 45 55 35 45 55 31 7 31 Ex:huûy moät phaàn töû P->bal=2 Hủy pt(7) Cây mất cân bằng

  43. 30 40 50 10 50 30 60 5 15 40 60 10 35 45 35 45 55 31 55 5 15 31 Cân bằng lại cây

  44. 30 30 50 20 50 20 70 10 25 40 70 10 40 80 35 45 60 5 80 35 45 60 5 90 90 Ex2 :khi caân baèng xaûy ra phaûn öùng daây chuyeàn. Huyû 25 maátcaân baèng taïi pt(20)

  45. 30 30 50 20 50 10 70 70 10 40 5 40 20 80 80 35 45 60 35 45 60 5 90 90 P->bal=-2 maátcaân baèng taïi pt(30)

  46. 50 30 70 30 50 10 70 80 10 40 60 5 40 20 5 20 35 45 90 80 35 45 60 90 Caây ñaõ caân baèng

More Related