ιαφάνειες παρουσίασης #10 (β)

Σχετικά έγγραφα
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

AVL-trees C++ implementation

ιαφάνειες παρουσίασης #11

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M

Διδάσκων: Παναγιώτης Ανδρέου

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Διδάσκων: Κωνσταντίνος Κώστα

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων και Αλγόριθμοι

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Δομές Δεδομένων Ενότητα 5

Ισοζυγισμένα υαδικά έντρα Αναζήτησης

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ

Δομές Δεδομένων & Αλγόριθμοι

Εκτενείς Δομές Δεδομένων

ΗΥ360 Αρχεία και Βάσεις εδοµένων

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Προγραμματισμός Ι (ΗΥ120)

Μάθημα 22: Δυαδικά δέντρα (Binary Trees)

Μη AVL Δέντρα Εισαγωγή κόμβου 4, 6 : 4 12 :

9. Κόκκινα-Μαύρα Δέντρα

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

Δημιουργία Δυαδικών Δέντρων Αναζήτησης

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Συγκρίσιμα Αντικείμενα (comparable)

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διδάσκων: Παναγιώτης Ανδρέου

Ισοζυγισµένο έντρο (AVL Tree)

ιαφάνειες παρουσίασης #5 (β)

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

Δοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης

υαδικό έντρο Αναζήτησης (BSTree)

5 ΔΕΝΤΡΑ (Trees) Σχήµα 5.1 : ενδροειδής αναπαράσταση αρχείων στα Windows. έντρα. \ {root directory} Accessories. Program Files.

ιαφάνειες παρουσίασης #3

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

ΔυαδικάΔΕΝΔΡΑΑναζήτησης

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

ιαφάνειες παρουσίασης #9 (α)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

υαδικά έντρα Αναζήτησης

Οντοκεντρικός Προγραμματισμός

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

Δομές Δεδομένων. Ενότητα 9: Τα ΔΔΑ ως Αναδρομικές Δομές Δεδομένων-Εφαρμογή Δυαδικών Δέντρων: Κωδικοί Huffman. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων και Αλγόριθμοι (Γ εξάμηνο) Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Ηπείρου. Άσκηση εργαστηρίου #6 (Υλοποίηση δυαδικού δένδρου αναζήτησης)

ιαφάνειες παρουσίασης #4

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

υαδικά δέντρα αναζήτησης

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΑΛΑΜΑΤΑΣ ΠΑΡΑΡΤΗΜΑ ΣΠΑΡΤΗΣ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Διδάσκων: Παναγιώτης Ανδρέου

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat

Εκτενείς Δομές Δεδομένων

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα

AVL δέντρα. h L h R. G.M. Adelson_Velkii και E.M. Landis 1962

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.

έντρα ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

ιδάσκοντες: Φ. Αφράτη,. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

ιαφάνειες παρουσίασης #6 (β)

ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

DRAFT ιαφάνειες παρουσιάσεων

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

ιαφάνειες παρουσίασης #3

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα

Διάλεξη 18: B-Δένδρα

Δομές Δεδομένων & Αλγόριθμοι

Δοµές Δεδοµένων. 17η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

Transcript:

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) Π.. 407/80 (bxb@softlab.ntua.gr) Πέτρος Στεφανέας (petros@mail.ntua.gr) ιαφάνειες παρουσίασης #10 (β)! έντρα BST! έντρα AVL!Περιστροφή - Αναδιάταξη!Αλγόριθµοι 1

έντρα δυαδικής αναζήτησης " ενδρικές δοµές δεδοµένων στις οποίες # Ολα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι µικρότερα από την ρίζα # Ολα τα στοιχεία στο δεξί υποδέντρο της ρίζας είναι µεγαλύτερα ή ίσα µε την ρίζα # Το αριστερό και το δεξί υποδέντρο είναι δέντρα δυαδικής αναζήτησης " Binary Search Trees - BSTs 2

έντρα δυαδικής αναζήτησης " Η γενική εικόνα ενός τέτοιου δέντρου >= 3

Παραδείγµατα δέντρων BST " Εγκυρα δέντρα 4

Παραδείγµατα δέντρων BST " Μη-έγκυρα δέντρα 5

ιάσχιση δυαδικών δέντρων # Preorder: 23 18 12 20 44 35 52 # Postorder: 12 20 18 35 52 44 23 # Inorder: 12 18 20 23 35 44 52 6

Ζύγισµα δέντρων BST " Ανάλογα µε τη σειρά άφιξης των στοιχείων και τον τρόπο δηµιουργίας του δέντρου BST, για τα ίδια στοιχεία δεν προκύπτει πάντα το ίδιο δέντρο " Το ύψος του δέντρου σχετίζεται µε το χρόνο αναζήτησης ενός στοιχείου µέσα στο δέντρο 7

Ζύγισµα δέντρων BST " Αναζήτηση µε πολυπλοκότητα # Από Ο(Ν) [χειρότερη περίπτωση] # Μέχρι Ο(Log 2 N) [καλύτερη περίπτωση] 8

Ζύγισµα δέντρων BST " Προκειµένου µια αναζήτηση να διατρέχει όσο το δυνατόν µικρότερο µέρος του δέντρου, αυτό πρέπει να είναι «ζυγισµένο» # «Ζυγισµένο»: το βάθος του αριστερού υποδέντρου δεν διαφέρει περισσότερο από 1 από αυτό του δεξιού (ιδανικά: είναι ίσα) " Αν κατά την προσθήκη νέων στοιχείων στο δέντρο η ζυγαριά «γείρει» δεξιά ή αριστερά, απαιτείται διόρθωση του δέντρου 9

Παραδείγµατα ζυγισµένων δέντρων 1 4 2 3 5 3 2 6 4 1 7 5 4 6 2 6 7 1 3 5 7 10

Ζυγισµένα δέντρα " Η περίπτωση όπου το ύψος του αριστερού υποδέντρου είναι ακριβώς ίσο µε το ύψος του δεξιού, δεν επιτυγχάνεται εύκολα " Αν από την παραπάνω περίπτωση υπήρχαν «µικρές» αποκλίσεις, οι επιδόσεις του δέντρου στην αναζήτηση δεν θα επηρεάζονταν ιδιαίτερα 11

έντρα AVL " Ενα δέντρο AVL (Adelson-Velskii and Landis) είναι ένα δέντρο BST του οποίου το ύψος του αριστερού υποδέντρου διαφέρει από αυτό του δεξιού το πολύ κατά 1 " Το δεξί και αριστερό υποδέντρο ενός δέντρου AVL είναι επίσης δέντρα AVL " Το κενό δέντρο είναι δέντρο AVL Οι ιδιότητες αυτές διατηρούνται µε παρεµβάσεις (αναδιάταξη) καθώς νέα στοιχεία προστίθενται στο δέντρο 12

έντρα AVL 13

έντρα AVL " Ενα δέντρο AVL λέγεται «ψηλό από αριστερά» όταν το ύψος του αριστερού υποδέντρου είναι µεγαλύτερο από αυτό του δεξιού (κατά πόσο;;;) " Αντίστοιχα για το «ψηλό από δεξιά» " Υπάρχουν αρκετοί τρόποι µε τους οποίους η προσθήκη ή η διαγραφή στοιχείων σε ένα δέντρο AVL παραβιάζει τη συνθήκη χαρακτηρισµού του 14

Αναδιάταξη δέντρων AVL " Η χαρακτηριστική ιδιότητα ενός δέντρου AVL µπορεί να παύει να ισχύει µε την προσθήκη νέων στοιχείων " Η επαναφορά της ιδιότητας σε ισχύ, γίνεται µε περιστροφή του δέντρου, ανάλογα µε την περίπτωση αναδιάταξης που συντρέχει 15

Απλή περιστροφή k2 k1 k1 k2 Z h X X Y New Item Y Z New item 16

ιπλή περιστροφή (α) k3 k2 k1 k1 k3 k2 D h A A B C D B C 17

ιπλή περιστροφή (β) k3 k1 k3 k2 D k2 A D B C k1 C A B 18

ιπλή περιστροφή (γ) k2 k3 D k1 C k2 k1 k3 A B A B C D 19

Αναδιάταξη δέντρων AVL " Περιπτώσεις αναδιάταξης # ΑΑ: ένα αριστερό υποδέντρο ενός δέντρου AVL που είναι ψηλό από αριστερά, γίνεται επίσης ψηλό από αριστερά (left of left) # : τα αντίστοιχα για το δεξί υποδέντρο (right of right) # Α: ένα υποδέντρο ενός δέντρου AVL ψηλού από αριστερά, γίνεται ψηλό από δεξιά (right of left) # Α : ένα υποδέντρο ενός δέντρου AVL ψηλού από δεξιά, γίνεται ψηλό από αριστερά (left of right) 20

Περιπτώσεις αναδιάταξης (α) 21

Περιπτώσεις αναδιάταξης (β) 22

Αναδιάταξη σε περίπτωση ΑΑ 23

Αναδιάταξη σε περίπτωση 24

Αναδιάταξη σε περίπτωση Α 25

Αναδιάταξη σε περίπτωση Α 26

Υλοποίηση δέντρων AVL στη C " Μια δοµή δεδοµένων Node key data left right bal End Node <keytype> <datatype> <pointer to Node> <pointer to Node> <LeftH, EvenH, RightH> 27

Εισαγωγή σε δέντρα AVL " H εισαγωγή νέων στοιχείων γίνεται στα φύλλα, όπως στα δέντρα BST " Εντοπίζεται το φύλλο στο οποίο θα γίνει η εισαγωγή και δηµιουργείται νέος κόµβος " Γίνεται οπισθοδρόµηση µέχρι την κορυφή του δέντρου, µε έλεγχο της ισχύος της συνθήκης ισορροπίας AVL σε κάθε βήµα προς τα πίσω, και επαναφορά σε ισορροπία, όπου απαιτείται 28

Εισαγωγή σε δέντρα AVL " ιάγραµµα κλήσης µιας αναδροµικής συνάρτησης εισαγωγής 29

ΑΛΓΟΡΙΘΜΟΣ AVLInsert( ref root <tree pointer>, val newptr <tree pointer>, ref taller <Boolean>) 1 if (root null) 1 root = newptr 2 taller = true 3 return root 2 end if 3 if (newptr->key < root->key) 1 root->left = AVLInsert (root->left, newptr, taller) 2 if (taller) // Left subtree is taller 1 if (root left-high) 1 root = leftbalance (root, taller) 2 elseif (root even-high) 1 root->bal = left-high 3 else //Was right high -- now even high 1 root->bal = even-high 2 taller = false 4 end if 4 else // New data >= root data 30

(Συνέχεια) AVLInsert( ref root <tree pointer>, val newptr <tree pointer>, ref taller <Boolean>)... 4 else // New data >= root data 1 root-> right = AVLInsert (root->right, newptr, taller) 2 if (taller) // Right subtree is taller 1 if (root left-high) 1 root->bal = even-high 2 taller = false 2 elseif (root even-high) // Was balanced -- now right high 1 root->bal = right-high 3 else 1 root = rightbalance (root, taller) 4 end if 3 end if 5 end if 6 return root end AVLInsert 31

ΑΛΓΟΡΙΘΜΟΣ leftbalance (ref root <tree pointer>, ref taller <Boolean>) 1 lefttree = root-> left 2 if (lefttree left-high) // Case 1: Left of left. Single rotation right. 1 rotateright (root) 2 root->bal = even-high 3 lefttree->bal = even-high 4 taller = false 3 else // Case 2: Right of left. Double rotation required. 1 righttree = lefttree->right // adjust balance factors 2 if (righttree->bal left-high) 1 root->bal = right-high 2 lefttree->bal = even-high 3 elseif (righttree->bal = even-high) 1 lefttree->bal = even-high 4 else 32

(Συνέχεια) leftbalance (ref root <tree pointer>, ref taller <Boolean>) 4 else // righttree->bal is right-high 1 root->bal = even-high 2 lefttree->bal = left-high 5 end if 6 righttree->bal = even-high 7 root->left = rotateleft (lefttree) 8 root = rotateright (root) 9 taller = false 4 end if 5 return root end leftbalance 33

Περισσότερα για δέντρα AVL " ιαγραφή στοιχείου # ιαβάστε αντίστοιχο download από τη σελίδα του µαθήµατος " Βιβλιοθήκη συναρτήσεων # Μπορείτε να κατεβάσετε ένα σύνολο έτοιµων συναρτήσεων C για το χειρισµό δέντρων AVL από τη σελίδα web του µαθήµατος 34