έντρα 2-3-4 ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη
Σημερινό Μάθημα 2-3-4 έντρα Ισοζυγισμένα δέντρα αναζήτησης έντρα αναζήτησης πολλαπλών δρόμων Π Α (Multi-way Search Trees) έντρα αναζήτησης με πολλά παιδιά ανά κόμβο (γενίκευση των Α) Λόγω των πολλών παιδιών ανά κόμβο, έχουν μικρότερο ύψος από Α Επομένως, λιγότερα βήματα και χρόνο αναζήτησης Καταλληλότερα για δομές εξωτερικής αποθήκευσης Κόκκινα-μαύρα δέντρα αναζήτησης Μια άλλη περίπτωση ισοζυγισμένων δυαδικών δέντρων αναζήτησης (ομοιότητες με AVL)
έντρα 2-3-4 υαδικό δέντρο αναζήτησης ( Α) Κάθε κόμβος έχει ένα στοιχείο και το πολύ δύο παιδιά έντρο αναζήτησης πολλαπλών δρόμων (Π Α) Περισσότερα στοιχεία και παιδιά ανά κόμβο Τα Π Α δεν είναι εν γένει ισοζυγισμένα (όπως τα Α) Τα έντρα 2-3-4 Πολυκατευθυνόμενα δέντρα που μπορούν να έχουν ως τέσσερα παιδιά και τρία στοιχεία ανά κόμβο Όλοι οι κόμβοι-φύλλα έχουν το ίδιο βάθος στο δέντρο Είναι ισοζυγισμένα δέντρα
έντρα 2-3-4 Τα 2, 3 και 4 αναφέρονται στον αριθμό των συνδέσεων με κόμβους παιδιά που μπορεί να περιέχονται σε ένα δεδομένο κόμβο Για μη τερματικούς κόμβους τρεις περιπτώσεις είναι πιθανές: Κόμβος με ένα στοιχείο έχει πάντα δύο παιδιά Κόμβος με δύο στοιχεία έχει πάντα τρία παιδιά Κόμβος με τρία στοιχεία έχει πάντα τέσσερα παιδιά Γενικά ισχύει Αριθμός συνδέσεων με παιδιά = αριθμός στοιχείων + 1
25 2-κόμβος 12 33 37 40 62 3-κόμβος 27 33 51 55 59 83 50 75 95 4-κόμβος 30 35 55 78 100 105
Οργάνωση δέντρου 2-3-4 Α Β C Κόμβοι με κλειδιά μικρότερα από Α Κόμβοι με κλειδιά μεταξύ Α και Β Κόμβοι με κλειδιά μεταξύ Β και C Κόμβοι με κλειδιά μεγαλύτερα από C
Αναζήτηση σε 2-3-4 δέντρο 50 64>50 Αναζήτηση 64 30 60 70 80 60<64<70 10 20 40 51 62 64 66 75 83 86
Εισαγωγή σε 2-3-4 δέντρο 25 55 11 42 74 5 9 13 23 30 44 47 63 67 72 97 Εισαγωγή 18 25 55 11 42 74 5 9 13 18 23 30 44 47 63 67 72 97
Εισαγωγή με διαίρεση κόμβου Η εισαγωγή νέου στοιχείου γίνεται πάντα σε κόμβο φύλλο Εάν βρεθεί ένας πλήρης κόμβος στη διαδρομή ως το σημείο εισαγωγής Ο κόμβος αυτός θα διαιρεθεί Έστω Α, Β, C τα στοιχεία στον κόμβο που πρόκειται να διαιρεθεί ημιουργία νέου κόμβου. Είναι αδερφός του κόμβου που διαιρείται και τοποθετείται στα δεξιά του Στοιχείο C Νέος κόμβος Στοιχείο Β γονέας του κόμβου που διαιρείται Στοιχείο Α παραμένει ως έχει Τα δύο πιο δεξιά παιδιά αποσυνδέονται από τον κόμβο που διαιρείται και συνδέεται με το νέο κόμβο
62 29 83 92 104 Α Β C 19 47 74 87 89 97 112 Εισαγωγή 99 29 62 92 B 83 A 104 C Νέος κόμβος 19 47 74 87 89 97 99 112
ιαίρεση ρίζας 26 49 72 Α Β C Εισάγεται το 41 9 13 31 35 52 61 82 49 B 26 72 Α C 9 13 31 35 41 52 61 82
Απόδοση δέντρων 2-3-4 Υπάρχουν μέχρι 4 παιδιά ανά κόμβο Αν κάθε κόμβος ήταν πλήρης, το ύψος του δέντρου θα ήταν ανάλογο του log 4 N Συνήθως δεν είναι πλήρεις, οπότε το ύψος ενός δέντρου 2-3-4 είναι ανάμεσα σε log 2 (N+1) και log 2 (N+1)/2
Απόδοση δέντρων 2-3-4 Υπάρχουν μέχρι 4 παιδιά ανά κόμβο Αν κάθε κόμβος ήταν πλήρης, το ύψος του δέντρου θα ήταν ανάλογο του log 4 N εδομένου ότι όλοι οι κόμβοι είναι πλήρεις, το ύψος του 2-3-4 δέντρου θα είναι περίπου το μισό ενός ισοζυγισμένου δυαδικού δέντρου Συνήθως δεν είναι πλήρεις, οπότε το ύψος ενός δέντρου 2-3-4 είναι ανάμεσα σε log 2 (N+1) και log 2 (N+1)/2 Το μειωμένο ύψος του δέντρου 2-3-4 μειώνει κατά τι τους χρόνους αναζήτησης σε σχέση με τα ισοζυγισμένα δυαδικά δέντρα
Απόδοση δέντρων 2-3-4 (συνέχεια...) Ο χρόνος αναζήτησης αυξάνει στα 2-3-4 καθώς υπάρχουν περισσότερα στοιχεία προς εξέταση σε κάθε κόμβο Τα στοιχεία στον κόμβο εξετάζονται με γραμμική αναζήτηση Οι χρόνοι αναζήτησης αυξάνονται κατά μία ποσότητα ανάλογη του Μ (μέσου όρου στοιχείων ανά κόμβο) Χρόνος αναζήτησης ανάλογος του Μ*log 4 Ν Ο αυξανόμενος αριθμός στοιχείων ανά κόμβο τείνει να καταργήσει την επίδραση του μειωμένου ύψους του δέντρου Χρόνοι αναζήτησης για ένα δέντρο 2-3-4 και για ένα ισοζυγισμένο δυαδικό είναι περίπου ίσοι τάξης Ο(logN).
Πολλαπλών δρόμων δέντρα αναζήτησης
Πολλαπλών-δρόμων δέντρα αναζήτησης (Π Α) Γενίκευση των Α Κατάλληλα για δίσκο Π Α τάξης n: Κάθε κόμβος έχει n ή λιγότερα υποδέντρα S 1 S 2.S m, m n Κάθε κόμβος έχει n-1 ή λιγότερα κλειδιά K 1 Κ 2 Κ m-1 :m-1 κλειδιά σε αύξουσα σειρά K(S i ) Κ i K(S i+1 ), K(S m-1 ) < K(S m )
Π Α για δίσκο Οι κόμβοι αντιστοιχούν σε σελίδες δίσκου Πλεονεκτήματα: Ύψος δέντρου είναι χαμηλό για μεγάλο n Λιγότερες προσπελάσεις στο δίσκο Μειονεκτήματα: Χαμηλότερη χρησιμοποίηση χώρου εάν δεν είναι γεμάτοι οι κόμβοι Τα Π Α γενικά δεν είναι ισοζυγισμένα!
Λειτουργίες Π Α Αναζήτηση: Επιστρέφει δείκτη στον κόμβο που περιέχει το κλειδί και τη θέση του κλειδιού στο κόμβο Εισαγωγή νέου κλειδιού εάν δεν υπάρχει ήδη στο δέντρο ιαγραφή υπάρχοντος κλειδιού
Σημαντικά θέματα ιατήρησε το Π Α ισοζυγισμένο μετά από εισαγωγές ή διαγραφές Ισοζυγισμένα Π Α: B-δέντρα, B+-δέντρα Μειωμένος αριθμός προσπελάσεων του δίσκου Αποθήκευση δεδομένων: δύο εναλλακτικές Εσωτερικοί κόμβοι: λιγότερα υποδέντρα, κόμβοι είκτες από τους κόμβους σε σελίδες δεδομένων
Αναζήτηση σε Π Α
Εισαγωγή σε Π Α Αναζήτηση & εισαγωγή κλειδιού εάν δεν υπάρχει Το δέντρο μεγαλώνει στα φύλλα => το δέντρο γίνεται μη ισοζυγισμένο => όχι ίσος αριθμός από προσπελάσεις του δίσκου για κάθε κλειδί Το σχήμα του δέντρου εξαρτάται από την ακολουθία των εισαγωγών Χαμηλή χρήση χώρου αποθήκευσης, πολλοί μη-πλήρεις κόμβοι
Εισαγωγή: 70 75 82 77 71 73 84 86 87 85
ιαγραφές σε Π Α Βρες και διέγραψε ένα κλειδί από έναν κόμβο ιαγραφή κλειδιού εάν έχει κενό αριστερό ή δεξί υποδέντρο Εάν είναι το μόνο κλειδί σε έναν κόμβο: ελευθέρωσε τον κόμβο Εάν το κλειδί έχει και αριστερά και δεξιά υποδέντρα => βρες τους απογόνους του, βάλε το διάδοχο στη θέση του κλειδιού και διέγραψε τον απόγονο Το δέντρο γίνεται μη ισοζυγισμένο