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



Σχετικά έγγραφα
ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

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

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

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

αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών

ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

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

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

Ενότητα 7 Ουρές Προτεραιότητας

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

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

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

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

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

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

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

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

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

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

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

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

Ουρές προτεραιότητας

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

Ενότητα 7 Ουρές Προτεραιότητας

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

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

Red-Black Δέντρα. Red-Black Δέντρα

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

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

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

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

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

Red-black δέντρα (Κεφ. 5)

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

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

3 Αναδροµή και Επαγωγή

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

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

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

Red- black δέντρα Εκτενείς Δομές Δεδομένων (Κεφ. 5)

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

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

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

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

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

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

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

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

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

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

Διαχρονικές δομές δεδομένων

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

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

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

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

PROJECT ΣΤΟ ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟ ΟΥΣ

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

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

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

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

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

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

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

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

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

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

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

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

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

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

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

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

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

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

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

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

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

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

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

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

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

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

Προγραμματιστική Εργασία Μέρος Β. Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης

Δέντρα (Trees) - Ιεραρχική Δομή

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Transcript:

Κόκκινα-Μαύρα ένδρα (Red-Black Trees) Ένα κόκκινο-µαύρο δένδρο είναι ένα δυαδικό δένδρο αναζήτησης στο οποίο οι κόµβοι µπορούν να χαρακτηρίζονται από ένα εκ των δύο χρωµάτων: µαύρο-κόκκινο. Το χρώµα της ρίζας είναι πάντα µαύρο. Αν κάποιο παιδί κάποιου κόµβου δεν υπάρχει, ο αντίστοιχος δείκτης είναι NIL. Θα θεωρήσουµε αυτούς τους δείκτες NIL ως δείκτες σε εξωτερικούς NIL κόµβους (φύλλα) του δυαδικού δένδρου και τους κανονικούς κόµβους που αποθηκεύουν κλειδιά ως εσωτερικούς κόµβους του δένδρου. Ένα κόκκινο-µαύρο δένδρο πληροί τις ακόλουθες ιδιότητες: Κάθε κόµβος έχει είτε κόκκινο είτε µαύρο χρώµα. Κάθε NIL κόµβος έχει µαύρο χρώµα. Κάθε απλή διαδροµή από έναν κόµβο σε έναν NIL κόµβο που είναι απόγονός του περιέχει το ίδιο πλήθος µαύρων κόµβων. Αν ένας κόµβος έχει κόκκινο χρώµα, τότε και τα δύο παιδιά του έχουν µαύρο χρώµα. Φατούρου Παναγιώτα 130

Μέγεθος Κόκκινων-Μαύρων ένδρων Πρόταση: Ένα κόκκινο µαύρο δένδρο µε n εσωτερικούς κόµβους έχει ύψος το πολύ 2log(n+1). ιαίσθηση: Τουλάχιστον οι µισοί κόµβοι σε κάθε µονοπάτι από τη ρίζα σε φύλλο είναι µαύροι. Γιατί; Απόδειξη Ορίζουµε το µαύρο ύψος ενός κόµβου v, bh(v), να είναι ο αριθµός των µαύρων κόµβων σε κάθε µονοπάτι από τον κόµβο v σε οποιοδήποτε φύλλο, χωρίς να συµπεριλαµβάνουµε τον v. Αποδεικνύουµε ότι το υπο-δένδρο µε ρίζα κάποιο κόµβο v περιέχει τουλάχιστον 2 bh(v) -1 εσωτερικούς κόµβους µε επαγωγή ως προς το ύψος του v. Στη βάση επαγωγής, αν ο v έχει ύψος 0 τότε είναι φύλλο (ο κόµβος φρουρός), οπότε ο αριθµός των εσωτερικών κόµβων στο υποδένδρο που εκφύεται από τον v είναι 0 όπως απαιτείται. οθέντος ενός κόµβου v, υποθέτουµε ότι ο ισχυρισµός ισχύει για όλους τους απογόνους του v και τον αποδεικνύουµε για τον v. Έστω h το ύψος του δένδρου και r η ρίζα. Είναι bh(r) h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα? Φατούρου Παναγιώτα 131

Εισαγωγή σε Κόκκινο-Μαύρο ένδρο Πως κάνουµε εισαγωγή ενός κόµβου x σε κόκκινο- µαύρο δένδρο? Τι πρόβληµα δηµιουργείται? Αλγόριθµος Εισαγωγή όπως σε δυαδικό δένδρο αναζήτησης. Το µονοπάτι αποθηκεύεται σε στοίβα. Ο νέος κόµβος που εισάγεται χαρακτηρίζεται κόκκινος. Εξετάζουµε αν οι ιδιότητες χρωµατισµού εξακολουθούν να ισχύουν. Αν ναι τερµατίζουµε, διαφορετικά διορθώνουµε. Ο πατρικός κόµβος πρέπει να είναι κόκκινος. Γιατί; Ο κόµβος δεν µπορεί να είναι η ρίζα. Ο παππούς πρέπει να είναι µαύρος. Γιατί? Φατούρου Παναγιώτα 132

Εισαγωγή σε Κόκκινο-Μαύρο ένδρο Αλγόριθµος (συνέχεια) Υποθέτουµε ότι ο πατέρας του x είναι αριστερό παιδί. ιακρίνουµε περιπτώσεις: 1. Περίπτωση 1: Αν ο θείος (αδελφικός κόµβος πατέρα) είναι κόκκινος, αλλάζουµε το χρώµα του πατέρα και του θείου σε µαύρο και το χρώµα του παππού σε κόκκινο. Επαναλαµβάνουµε. Φατούρου Παναγιώτα 133

Εισαγωγή σε Κόκκινο-Μαύρο ένδρο Αλγόριθµος (συνέχεια) 2. Περίπτωση 2: Ο θείος είναι µαύρος και ο x είναι δεξί παιδί του πατέρα του. Ανάγουµε την περίπτωση αυτή στην περίπτωση 3 µε την εκτέλεση µιας αριστερής περιστροφής. 3. Περίπτωση 3: Ο x είναι αριστερό παιδί του πατέρα του. Το χρώµα του πατέρα του x αλλάζει σε µαύρο και του παππού σε κόκκινο. Εκτελείται µια δεξιά περιστροφή. Ποια είναι η πολυπλοκότητα της RB-Insert()? Φατούρου Παναγιώτα 134

Εισαγωγή σε Κόκκινο-Μαύρο ένδρο: Παράδειγµα Φατούρου Παναγιώτα 135

ιαγραφή από κόκκινο-µαύρο δένδρο Η διαγραφή γίνεται µε παρόµοιο τρόπο όπως σε δυαδικό δένδρο αναζήτησης και στη συνέχεια ελέγχεται αν οι ιδιότητες χρωµατισµού ισχύουν ή όχι και γίνονται κατάλληλες ενέργειες. Έστω y ο κόµβος που θα διαγραφεί από το δένδρο. Αν y κόκκινος, δεν υπάρχει πρόβληµα. Γιατί? Αν y µαύρος, η διαγραφή του δηµιουργεί (τουλάχιστον) ένα µονοπάτι µε µαύρο ύψος µικρότερο κατά ένα. Υποθέτουµε ότι η µαύρη ιδιότητα του v µεταφέρεται στο παιδί του, το οποίο τώρα γίνεται διπλά µαύρο (που είναι µη επιτρεπτό). Πρέπει να µεταφέρουµε το extra µαύρο προς τα πάνω στο δένδρο µέχρι είτε: να φθάσουµε στη ρίζα, ή να βρούµε έναν κόκκινο κόµβο που τον µετονοµάζουµε σε µαύρο και τερµατίζουµε, ή να µπορούν να εκτελεστούν κατάλληλες περιστροφές και επαναχρωµατισµοί κάποιων κόµβων ώστε να λυθεί το πρόβληµα. Φατούρου Παναγιώτα 136

ιαγραφή από κόκκινο-µαύρο δένδρο - Περιπτώσεις Θεωρώ ότι το δένδρο υλοποιείται µε κόµβο φρουρό. Έτσι, όλοι οι null δείκτες δείχνουν στον κόµβο φρουρό. Έστω x το παιδί του κόµβου που διαγράφεται. Φατούρου Παναγιώτα 137

ιαγραφή από κόκκινο-µαύρο δένδρο - Περιπτώσεις Έστω w ο αδελφικός κόµβος & p ο πατέρας του x. Ο w δεν µπορεί να είναι ο κόµβος φρουρός. Γιατί; Υποθέτουµε ότι ο x είναι αριστερό παιδί του πατρικού του κόµβου. Η περίπτωση που ο x είναι δεξιό παιδί του πατρικού κόµβου είναι συµµετρική. ιακρίνουµε περιπτώσεις ως προς το χρώµα του w. 1. Ο w είναι κόκκινος. Αλλάζουµε το χρώµα του w σε µαύρο και του p σε κόκκινο και εκτελούµε µια αριστερή περιστροφή γύρω από τον πατέρα του x (περίπτωση α. σχήµατος). Έτσι, µεταπίπτουµε στην περίπτωση 2. 2. Ο w είναι µαύρος κόµβος. a. Και τα δύο παιδιά του w είναι µαύρα. Αλλάζουµε το χρώµα του w σε κόκκινο, του x σε µαύρο (από διπλά µαύρο) και µεταφέρουµε το µαύρο που αφαιρέσαµε από τους w, x στον p. Αν ο p ήταν κόκκινος γίνεται µαύρος και ο αλγόριθµος τερµατίζει. ιαφορετικά, ο p γίνεται διπλά µαύρος και ο αλγόριθµος επαναλαµβάνεται µε x = p. b. Το w->lc είναι κόκκινο και το w->rc µαύρο. Αλλάζω το χρώµα του w σε κόκκινο και του w- >lc σε µαύρο και εκτελώ µια περιστροφή γύρω από το w Μεταπίπτουµε στην περίπτωση 2c. c. Το w->rc είναι κόκκινο. Αλλάζω το χρώµα του w->rc σε µαύρο, του w σε ότι ήταν το χρώµα του p και του p σε µαύρο και εκτελώ µια περιστροφή γύρω από το p. Ο αλγόριθµος τερµατίζει. Φατούρου Παναγιώτα 138

ιαγραφή από κόκκινο-µαύρο δένδρο - Περιπτώσεις Ποια είναι η πολυπλοκότητα της RB-Delete()? Φατούρου Παναγιώτα 139