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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ισορροπηµένα Δέντρα Κεφάλαιο 13. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Δέντρα Δυαδικής Αναζήτησης Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16. Ε. Μαρκάκης Επίκουρος Καθηγητής

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

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

Δοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Πίνακες Συµβόλων Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

Λίστες παράλειψης (skip lists)

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

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

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

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

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

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

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 8-1

Δοµές Δεδοµένων. 13η Διάλεξη Πίνακες Συµβόλων. Ε. Μαρκάκης

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

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

Δοµές Δεδοµένων. 10η Διάλεξη Ταξινόµηση. E. Μαρκάκης

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

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

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

Ουρά Προτεραιότητας (priority queue)

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

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

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

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

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

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

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

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

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

Δοµές Δεδοµένων. 12η Διάλεξη Διάσχιση Δέντρων και Ουρές Προτεραιότητας. Ε. Μαρκάκης

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Κατακερµατισµός Κεφάλαιο 14. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

Αλγόριθµοι και Πολυπλοκότητα

Δοµές Δεδοµένων. 5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθµων. Ε. Μαρκάκης

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

Insert(K,I,S) Delete(K,S)

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

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

Διάλεξη 14: Δέντρα IV - B-Δένδρα

AVL-trees C++ implementation

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

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

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

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

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

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

Δοµές Δεδοµένων. 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης. Βασίζεται στις διαφάνειες των R. Sedgewick K.

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

Αναδρομικοί Αλγόριθμοι

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

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

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

Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών. Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου / 18

Αλγόριθμοι Αναζήτησης

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

ΗΥ240 - Παναγιώτα Φατούρου 2

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Κεφάλαιο 1. Ε. Μαρκάκης Επικ. Καθηγητής

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 3 (3.3, 3.4, 3.7) Ε. Μαρκάκης Επικ. Καθηγητής

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

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

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 3. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Εφαρµογές των Δέντρων Δυαδικής Αναζήτησης

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

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

Transcript:

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

Περίληψη Επανάληψη των Τυχαιοποιηµένων ΔΔΑ, Στρεβλών ΔΔΑ, Δέντρων 2-3-4 Δέντρα κόκκινου-µαύρου Λίστες Παράλειψης Χαρακτηριστικά επιδόσεων - συµπεράσµατα Δοµές Δεδοµένων 18-2

Εισαγωγή Μειονεκτήµατα δέντρων Δυαδικής Αναζήτησης (ΔΔΑ) Κακή επίδοση χειρότερης περίπτωσης Παράδειγµα: εισαγωγή ήδη ταξινοµηµένων κλειδιών Λύση: διατήρηση των δέντρων σε ισορροπηµένη µορφή Όλοι οι εξωτερικοί κόµβοι στο ίδιο ή σε δύο διαδοχικά επίπεδα Προτεινόµενες δοµές: Τυχαιοποιηµένα ΔΔΑ Στρεβλά ΔΔΑ Δέντρα 2-3-4 Δέντρα κόκκινου-µαύρου Πρόβληµα: διατήρηση ισορροπίας µετά από αλλαγές Δοµές Δεδοµένων 18-3

Εισαγωγή Διατήρηση ΔΔΑ σε ισορροπηµένη µορφή Η περιοδική ανακατασκευή µπορεί να έχει µεγάλο κόστος Χρειαζόµαστε µεθόδους τοπικής ανακατασκευής Προσεγγίσεις αποφυγής χειρότερης περίπτωσης Τυχαιοποίηση (Randomization): στατιστική αποφυγή της χειρότερης περίπτωσης Εισάγουµε κάποια τυχαία απόφαση στον αλγόριθµο Παράδειγµα: τυχαιοποιηµένα ΔΔΑ Απόσβεση (Amortization): εκτέλεση επιπλέον εργασίας ορισµένες φορές Το κόστος αποσβένεται µετά από πολλές λειτουργίες Παράδειγµα: στρεβλά ΔΔΑ Βελτιστοποίηση (optimization): εγγυήσεις επίδοσης σε κάθε λειτουργία Χρήση πρόσθετων δοµικών πληροφοριών µέσα στα ΔΔΑ Παράδειγµα: δέντρα 2-3-4, δέντρα κόκκινου-µαύρου Δοµές Δεδοµένων 18-4

Τυχαιοποιηµένα ΔΔΑ Απλή παραλλαγή των ΔΔΑ Έστω ένα ΔΔΑ µε N κόµβους Με πιθανότητα 1/(N+1), το επόµενο στοιχείο εισάγεται στη ρίζα Αυτή είναι και η πιθανότητα να είναι η ρίζα ενός τυχαίου ΔΔΑ Διαφορετικά αναδροµή στο αντίστοιχο υποδέντρο Επιδόσεις Κατασκευή: περίπου 2NlnN συγκρίσεις Αναζήτηση: περίπου 2lnN συγκρίσεις Αµελητέα πιθανότητα το δένδρο να είναι µη ισορροπηµένο Μειονεκτήµατα τυχαιοποιηµένων ΔΔΑ Οι καλές γεννήτριες τυχαίων αριθµών είναι αργές Χρήση γρήγορων αλλά όχι τόσο τυχαίων γεννητριών Απαιτείται πεδίο πλήθους κόµβων σε κάθε κόµβο Μπορεί όµως να χρησιµοποιείται και για άλλους λόγους Δοµές Δεδοµένων 18-5

Στρεβλά ΔΔΑ (Splay Trees) Παραλλαγή των ΔΔΑ µε εισαγωγή στη ρίζα Λαµβάνουµε υπόψη δύο διαδοχικές περιστροφές Αν είναι προς αντίθετες κατευθύνσεις, καµία αλλαγή Αν είναι προς την ίδια κατεύθυνση, διαφοροποιούµαστε Κάνουµε πρώτα την περιστροφή στη ρίζα και µετά στο παιδί Τι κερδίζουµε µε τη στρεβλή εισαγωγή; Σε κάθε εισαγωγή µικραίνει η διαδροµή εισαγωγής Το µήκος της διαδροµής µειώνεται στο µισό (µπορεί βέβαια να αυξάνεται το µήκος άλλων διαδροµών) Βελτίωση απόδοσης στρεβλών ΔΔΑ Μπορούµε να κάνουµε εξισορρόπηση και στις αναζητήσεις Ιδιαίτερα αποδοτική για ανοµοιόµορφες προσπελάσεις Τα κλειδιά που χρησιµοποιούνται συχνά πλησιάζουν τη ρίζα Δοµές Δεδοµένων 18-6

Καθοδικά δέντρα 2-3-4 Μπορούµε να εγγυηθούµε ότι όλες οι λειτουργίες εισαγωγής και αναζήτησης θα γίνονται πάντα σε χρόνο logn? Για να γίνει αυτό χρειαζόµαστε µεγαλύτερη ευελιξία στις δοµές που χρησιµοποιούµε Τα δέντρα 2-3-4 έχουν τρία είδη κόµβων 2-κόµβοι: 1 κλειδί και 2 σύνδεσµοι (όπως στα ΔΔΑ) 3-κόµβοι: 2 κλειδιά και 3 σύνδεσµοι, π.χ. αν έχει κλειδιά τα 15, 30 Πρώτος σύνδεσµος σε υποδέντρο µε κλειδιά < 15 Δεύτερος σύνδεσµος σε υποδέντρο µε κλειδιά στο [15, 30] Τρίτος κόµβος σε υποδέντρο µε κλειδιά > 30 4-κόµβοι: 3 κλειδιά και 4 σύνδεσµοι (σε αναλογία µε τους 3-κόµβους) Δοµές Δεδοµένων 18-7

Καθοδικά δέντρα 2-3-4 Ισορροπηµένο δένδρο 2-3-4 Όλοι οι null σύνδεσµοι ισαπέχουν από τη ρίζα Η αναζήτηση είναι γενίκευση αυτής των ΔΔΑ Η εισαγωγή είναι λίγο πιο περίπλοκη Για 2-κόµβους και 3-κόµβους αρκεί αναζήτηση και µετά εισαγωγή όπως στα ΔΔΑ 2-κόµβοι µετατρέπονται σε 3-κόµβους και 3-κόµβοι µετατρέπονται σε 4-κόµβους Για 4-κόµβους δεν αρκεί (θέλουµε να διατηρήσουµε την ισορροπία) Τι κάνουµε όταν θέλουµε εισαγωγή σε 4-κόµβο; Δοµές Δεδοµένων 18-8

Καθοδικά δέντρα 2-3-4 Ανοδική εισαγωγή Εντοπίζουµε τον κόµβο στο τελευταίο επίπεδο Αν είναι 4-κόµβος τον σπάµε στα δύο Το µεσαίο κλειδί πηγαίνει στον πατέρα Το νέο κλειδί εισάγεται στο κατάλληλο παιδί Συνεχίζουµε αναδροµικά στον πατέρα Δοµές Δεδοµένων 18-9

Καθοδικά δέντρα 2-3-4 Μπορεί όµως να είναι και ο γονέας 4-κόµβος, καθώς και ο γονέας του γονέα, κ.ο.κ. Η ανοδική εισαγωγή τότε θα είναι πολύ αργή (µπορεί να αλλάξει όλο το δέντρο) Καθοδική εισαγωγή Όποτε βρίσκουµε έναν 4-κόµβο τον σπάµε Αυτό γίνεται σε όλα τα επίπεδα κατεβαίνοντας Εξασφαλίζουµε ότι ένας 4-κόµβος δεν είναι παιδί 4-κόµβου Εισάγουµε το µεσαίο κλειδί στον πατέρα Αν η ρίζα γίνει 4-κόµβος τη διασπάµε άµεσα Δεν περιµένουµε την επόµενη εισαγωγή Εισάγουµε το νέο κλειδί στο τελευταίο επίπεδο Δοµές Δεδοµένων 18-10

Καθοδικά δέντρα 2-3-4 Απόδοση καθοδικών δέντρων 2-3-4 Αναζήτηση: το πολύ lοgn+1 διασχίσεις κόµβων Όλοι οι κόµβοι ισαπέχουν από τη ρίζα Μόνο η διάσπαση της ρίζας αυξάνει το ύψος Όλοι οι κόµβοι είναι τουλάχιστον 2-κόµβοι Εισαγωγή: το πολύ lοgn+1 διαιρέσεις κόµβων Διαιρέσεις σε όλη τη διαδροµή Τα ανοδικά δέντρα θέλουν περισσότερες διαιρέσεις Είναι όµως πιο απλά στην υλοποίηση Υλοποίηση δέντρων 2-3-4 Η χρήση 3 ειδών κόµβων έχει αρκετό κόστος Μπορεί η επιβάρυνση να υπερβαίνει την ωφέλεια Εναλλακτική υλοποίηση: δέντρα κόκκινου-µαύρου Δοµές Δεδοµένων 18-11

Δέντρα κόκκινου-µαύρου Δέντρα Κόκκινου-Μαύρου (ΔΚΜ) Αναπαράσταση δέντρων 2-3-4 ως ΔΔΑ Οι 3- και 4-κόµβοι µετατρέπονται σε 2-κόµβους Οι µεταξύ τους σύνδεσµοι είναι κόκκινοι Οι υπόλοιποι σύνδεσµοι είναι µαύροι Παράσταση 4-κόµβων Τρεις 2-κόµβοι που συνδέονται µε κόκκινους συνδέσµους Μεσαίο κλειδί στον πάνω κόµβο Παράσταση 3-κόµβων Δύο 2-κόµβοι που συνδέονται µε κόκκινους συνδέσµους Ο κόκκινος σύνδεσµος µπορεί να είναι δεξιά ή αριστερά Ένα bit ανά κόµβο για το χρώµα του συνδέσµου Ορίζει το χρώµα του συνδέσµου µε τον πατέρα του Δοµές Δεδοµένων 18-12

Δέντρα κόκκινου-µαύρου Αναζήτηση: ακριβώς ίδια µε αυτή των ΔΔΑ Εισαγωγή: βασίζεται σε αυτή των δέντρων 2-3-4 Τα δέντρα κόκκινου-µαύρου συνδυάζουν την απλή µέθοδο αναζήτησης των ΔΔΑ µε την απλή µέθοδο εισαγωγής-εξισορρόπησης των δέντρων 2-3-4 Χρειάζονται όµως ένα επιπλέον πεδίο για το χρώµα Δοµές Δεδοµένων 18-13

Δέντρα κόκκινου-µαύρου Εισαγωγή σε ΔΚΜ Χρησιµοποιούµε τον αλγόριθµο για τα δέντρα 2-3-4 Μετατρέπουµε τα είδη κόµβων σε χρώµατα συνδέσµων Περιπτώσεις διάσπασης 4-κόµβων Ο πατέρας είναι 2-κόµβος Απλή αλλαγή χρωµάτων για να γίνει 3-κόµβος Γίνεται κόκκινος ο σύνδεσµος από τον 2-κόµβο προς το παιδί Ο πατέρας είναι 3-κόµβος µε «σωστό» προσανατολισµό Ο κόκκινος σύνδεσµος του 3-κόµβου είναι από την άλλη µεριά Απλή αλλαγή χρωµάτων για να γίνει 4-κόµβος (όπως και πριν) Δοµές Δεδοµένων 18-14

Δέντρα κόκκινου-µαύρου Περιπτώσεις διάσπασης 4-κόµβων Ο πατέρας είναι 3-κόµβος µε «λάθος» προσανατολισµό Η διαίρεση αφήνει 2 κόκκινους συνδέσµους στη σειρά Η διαίρεση γίνεται µε απλή αλλαγή χρωµάτων Το δένδρο δεν αντιστοιχεί πια σε δένδρο 2-3-4 Περιστροφή για αποκατάσταση της µορφής Ίδια κατεύθυνση συνδέσµων: απλή περιστροφή Διαφορετική κατεύθυνση συνδέσµων: διπλή περιστροφή Δοµές Δεδοµένων 18-15

Δέντρα κόκκινου-µαύρου Υλοποίηση εισαγωγής σε ΔΚΜ Στην κάθοδο αλλάζουµε τα χρώµατα Διασπούµε τους 4-κόµβους Στην άνοδο εκτελούµε τις περιστροφές Το sw δείχνει αν ο τρέχον κόµβος είναι δεξί παιδί Ο σύνδεσµος προς τη ρίζα θεωρείται µαύρος και αριστερός Οι νέοι κόµβοι έχουν κόκκινο σύνδεσµο private static final boolean R = true; private static final boolean B = false; private boolean red(node x) { if (x == null) return false; return x.cbit; } void insert(item x) { head = insertr(head, x, B); head.cbit = B; } Δοµές Δεδοµένων 18-16

Δέντρα κόκκινου-µαύρου Υλοποίηση εισαγωγής σε ΔΚΜ Περίπτωση εισαγωγής στο αριστερό υποδένδρο Διαδοχικοί ανάποδοι κόκκινοι σύνδεσµοι: περιστροφή Διαδοχικοί ίδιοι κόκκινοι σύνδεσµοι: (ξανα)κάνουµε περιστροφή private Node insertr(node h, ITEM x, boolean sw) { if (h == null) { return new Node(x, R); } if (red(h.l) && red(h.r)) { h.cbit = R; h.l.cbit = B; h.r.cbit = B; } if (less(x.key(), h.item.key())) { h.l = insertr(h.l, x, false); if (red(h) && red(h.l) && sw) h = rotr(h); if (red(h.l) && red(h.l.l)) { else { h = rotr(h); h.cbit = B; h.r.cbit = R; } } Δοµές Δεδοµένων 18-17

Δέντρα κόκκινου-µαύρου Υλοποίηση εισαγωγής σε ΔΚΜ Περίπτωση εισαγωγής στο δεξί υποδένδρο Συµµετρική µε την προηγούµενη Η πρώτη περιστροφή ανάγει τη µία περίπτωση στην άλλη else { h.r = insertr(h.r, x, true); if (red(h) && red(h.r) &&!sw) h = rotl(h); if (red(h.r) && red(h.r.r)) { return h; } h = rotl(h); h.cbit = B; h.l.cbit = R; } } Απόδοση αναζήτησης σε ΔΚΜ Χειρότερη περίπτωση: το πολύ 2lοgN+2 συγκρίσεις Μέση περίπτωση: 1,002lοgN συγκρίσεις Υποθέτουµε τυχαία κλειδιά κατά την κατασκευή Δοµές Δεδοµένων 18-18

Λίστες παράλειψης (skip lists) Ταξινοµηµένη λίστα Χρήση πρόσθετων συνδέσµων για να παραλείπουµε µεγάλα τµήµατα της λίστας κατά την αναζήτηση Κάθε κόµβος µπορεί να έχει µεταβλητό πλήθος συνδέσµων Κάθε σύνδεσµος µπορεί να παραλείπει µεταβλητό πλήθος κοµβων Δοµές Δεδοµένων 18-19

Λίστες παράλειψης (skip lists) Αναζήτηση: ξεκινάµε από το πιο πάνω επίπεδο µέχρι να βρούµε σύνδεσµο που δείχνει σε κόµβο µε µεγαλύτερο κλειδί από αυτό που ψάχνουµε Πηγαίνουµε στο επόµενο επίπεδο συνδέσµων και επαναλαµβάνουµε τη διαδικασία Διατήρηση πίνακα συνδέσµων σε κάθε κόµβο (µπορούµε και τυχαιοποιηµένα να αποφασίσουµε τον αριθµό των συνδέσµων σε κάθε κόµβο χωριστά) Δοµές Δεδοµένων 18-20

Λίστες παράλειψης (skip lists) Οι λίστες παράλειψης είναι µία εναλλακτική αναπαράσταση των ισορροποηµένων δέντρων Οι αλγόριθµοι για δέντρα 2-3-4 µπορούν να υλοποιηθούν µε λίστες παράλειψης αντί για δέντρα κόκκινου-µαύρου Αντιστοίχιση: για κάθε κόµβο πλήθος συνδέσµων = ύψος του κόµβου στο δέντρο Σύνδεση κόµβων οριζόντια (ανά επίπεδο) Λίγο πιο πολύπλοκος κώδικας Δοµές Δεδοµένων 18-21

Χαρακτηριστικά Επιδόσεων Ισορροπηµένων Δέντρων Τυχαιοποιηµένα ΔΔΑ: πιο εύκολη υλοποίηση, πρέπει να έχουµε καλή γεννήτρια τυχαίων αριθµών Στρεβλά ΔΔΑ: άµεση επέκταση του αλγορίθµου εισαγωγής στη ρίζα Δέντρα κόκκινου-µαύρου: καλύτερες εγγυήσεις για γρήγορη αναζήτηση Λίστες παράλειψης: κατάλληλες για πλήρες φάσµα λειτουργιών πίνακα συµβόλων, πιο αργές οι εισαγωγές και αναζητήσεις Δοµές Δεδοµένων 18-22

Χαρακτηριστικά Επιδόσεων Ισορροπηµένων Δέντρων Πειραµατικά δεδοµένα Κατασκευή δέντρου Ν ΔΔΑ Τυχ. ΔΔΑ Splay ΔΔΑ R-B Skip Lists 12500 90 197 267 92 145 25000 167 492 215 181 385 50000 381 1105 1125 430 892 100000 1004 2656 1148 1190 3257 200000 2628 6341 2784 2936 7493 Δοµές Δεδοµένων 18-23

Χαρακτηριστικά Επιδόσεων Ισορροπηµένων Δέντρων Πειραµατικά δεδοµένα Αναζητήσεις Ν ΔΔΑ Τυχ. ΔΔΑ Splay ΔΔΑ R-B Skip Lists 12500 75 86 80 60 145 25000 175 212 195 158 355 50000 420 505 433 359 878 100000 1047 1357 1113 861 2094 200000 2553 2893 2649 2114 5109 Δοµές Δεδοµένων 18-24