Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΜαρία Γεωργίου Τροποποιήθηκε πριν 6 χρόνια
1
(2,4) Trees 11/15/2018 8:56 PM (2,4) Δέντρα 9 10 14 (2,4) Δέντρα
2
Περίληψη Πολυκατευθυνόμενο δέντρο αναζήτησης (2,4) δέντρο Ορισμός
Αναζήτηση (2,4) δέντρο Εισαγωγή Διαγραφή (2,4) Δέντρα
3
Πολυκατευθυνόμενο δέντρο αναζήτησης
Ένα πολυκατευθυνόμενο δέντρο αναζήτησης είναι ένα διατεταγμένο δέντρο τέτοιο ώστε Κάθε εσωτερικός κόμβος έχει τουλάχιστον δύο παιδιά και περιέχει d -1 κλειδιά-στοιχεία αντικείμενα (ki, oi), όπου d είναι ο αριθμός των παιδιών Για κόμβο με παιδιά v1 v2 … vd που περιέχουν κλειδιά k1 k2 … kd-1 τα κλειδιά στο υποδέντρο του v1 είναι λιγότερα από k1 τα κλειδιά στο υποδέντρο του vi είναι μεταξύ ki-1 και ki (i = 2, …, d - 1) τα κλειδιά στο υποδέντρο του vd είναι μεγαλύτερα από kd-1 Τα φύλλα δεν περιέχουν αντικείμενα 15 30 (2,4) Δέντρα
4
Πολυκατευθυνόμενη Εν Σειρά Διάσχιση
Μπορούμε να επεκτείνουμε την έννοια της εν σειρά διάσχισης από τα δυαδικά δέντρα στα πολυκατευθυνόμενα Επισκεπτόμαστε το αντικείμενο (ki, oi) του κόμβου v ανάμεσα στις αναδρομικές διασχίσεις των υποδέντρων του v που είναι ρίζα των παιδιών vi και vi + 1 Μια εν σειρά διάσχιση πολυκατευθυνόμενου δέντρου επισκέπτεται τα κλειδιά σε αύξουσα σειρά 8 12 15 2 4 6 10 14 18 30 1 3 5 7 9 11 13 16 19 15 17 (2,4) Δέντρα
5
Πολυκατευθυνόμενη Αναζήτηση
Παρόμοια με την αναζήτηση σε δυαδικό δέντρο αναζήτησης Για κάθε εσωτερικό κόμβο με παιδιά v1 v2 … vd και κλειδιά k1 k2 … kd-1 k = ki (i = 1, …, d - 1): η αναζήτηση τερματίζει επιτυχώς k < k1: συνεχίζουμε την αναζήτηση στο παιδί v1 ki-1 < k < ki (i = 2, …, d - 1): συνεχίζουμε την αναζήτηση στο παιδί vi k > kd-1: συνεχίζουμε την αναζήτηση στο παιδί vd Η αναζήτηση τερματίζει ανεπιτυχώς όταν φτάσει σε εξωτερικό κόμβο Παράδειγμα: αναζήτηση για το 30 15 30 (2,4) Δέντρα
6
(2,4) Δέντρο Ένα (2,4) δέντρο (καλείται επίσης 2-4 δέντρο ή δέντρο) είναι ένα πολυκατευθυνόμενο δέντρο αναζήτησης με τις παρακάτω ιδιότητες Μέγεθος κόμβου: κάθε εσωτερικός κόμβος έχει το πολύ 4 παιδιά Βάθος: όλοι οι εξωτερικοί κόμβοι έχουν το ίδιο βάθος Ανάλογα με το πλήθος των παιδιών, ένας εσωτερικός κόμβος ενός (2,4) δέντρου λέγεται 2-node, 3-node ή 4-node 2 8 12 18 (2,4) Δέντρα
7
Ύψος ενός (2,4) Δέντρου Θεώρημα: ένα (2,4) δέντρο που περιέχει n αντικείμενα έχει ύψος O(log n) Απόδειξη: Έστω h το ύψος ενός (2,4) δέντρου με n αντικείμενα Αφού υπάρχουν τουλάχιστον 2i αντικείμενα σε βάθος i = 0, … , h - 1 και καθόλου αντικείμενα σε βάθος h, έχουμε n … + 2h-1 = 2h - 1 Άρα, h log (n + 1) Η αναζήτηση σε ένα (2,4) δέντρο με n αντικείμενα παίρνει O(log n) χρόνο βάθος αντικείμενα 1 1 2 h-1 2h-1 h (2,4) Δέντρα
8
Εισαγωγή Εισάγουμε νέο αντικείμενο (k, o) στον γονέα v του φύλλου που φτάσαμε ψάχνοντας για το k Διατηρούμε την ιδιότητα του βάθους αλλά Μπορεί να προκληθεί overflow (π.χ., ο κόμβος v μπορεί να γίνει ένας 5-node) Παράδειγμα: η εισαγωγή του κλειδιού 30 προκαλεί overflow v 2 8 12 18 v 2 8 12 18 (2,4) Δέντρα
9
Overflow και Split Αντιμετωπίζουμε ένα overflow σε έναν 5-node v με μία split διεργασία: έστω v1 … v5 τα παιδιά του v και k1 … k4 τα κλειδιά του v ο κόμβος v αντικαθίσταται από τους κόμβους v' και v" v' είναι ένας 3-node με κλειδιά k1 k2 και παιδιά v1 v2 v3 v" είναι ένας 2-node με κλειδί k4 και παιδιά v4 v5 το κλειδί k3 εισάγεται στο γονέα u του v (μια νέα ρίζα μπορεί να δημιουργηθεί) Το overflow μπορεί να μεταφερθεί στον κόμβο γονέα u u u v v' v" 12 18 12 18 27 30 35 v1 v2 v3 v4 v5 v1 v2 v3 v4 v5 (2,4) Δέντρα
10
Ανάλυση της Εισαγωγής Έστω T ένα (2,4) δέντρο με n στοιχεία
Το δέντρο T έχει O(log n) ύψος Το βήμα 1 παίρνει O(log n) χρόνο γιατί επισκεπτόμαστε O(log n) κόμβους Το βήμα 2 παίρνει O(1) χρόνο Το βήμα 3 παίρνει O(log n) χρόνο γιατί κάθε split παίρνει O(1) χρόνο και πραγματοποιούμε O(log n) splits Άρα, μια εισαγωγή σε ένα (2,4) δέντρο παίρνει O(log n) χρόνο Algorithm insertItem(k, o) 1. Ψάχνουμε για το κλειδί k για να εντοπίσουμε τον κόμβο εισαγωγής v 2. Προσθέτουμε το νέο στοιχείο (k, o) στον κόμβο v 3. while overflow(v) if isRoot(v) δημιούργησε νέα άδεια ρίζα πάνω από το v v split(v) (2,4) Δέντρα
11
Διαγραφή Επικεντρώνουμε τη διαδικασία της διαγραφής στην περίπτωση που ένα στοιχείο είναι σε κόμβο με παιδιά φύλλα Αλλιώς, αντικαθιστούμε το στοιχείο με το εν σειρά του διάδοχο (ή αντίστοιχα με το εν σειρά προκάτοχό του) και διαγράφουμε το δεύτερο στοιχείο Παράδειγμα: για τη διαγραφή του κλειδιού 24, το αντικαθιστούμε με το 27 (εν σειρά διάδοχος) 2 8 12 18 2 8 12 18 (2,4) Δέντρα
12
Underflow και Fusion u u w v v'
Η διαγραφή ενός στοιχείου από κόμβο v μπορεί να προκαλέσει underflow, όπου ο κόμβος v γίνεται ένας 1-node με ένα παιδί και χωρίς κλειδιά Για την αντιμετώπιση ενός underflow στον κόμβο v με γονέα u, θεωρούμε δύο πρειπτώσεις Περίπτωση 1: τα γειτονικά αδέρφια του v είναι 2-nodes Διεργασία Fusion: ενώνουμε το v με ένα γειτονικό αδερφό w και μετακινούμε ένα στοιχείο από το u στον ενωμένο κόμβο v' Μετά την fusion, το underflow μπορεί να μεταφερθεί στον γονέα u u u 9 14 9 w v v' 10 10 14 (2,4) Δέντρα
13
Underflow και Transfer
Για την αντιμετώπιση ενός underflow σε κόμβο v με γονέα u, θεωρούμε δύο περιπτώσεις Περίπτωση 1: ένας γειτονικός αδερφός w του v είναι ένας 3-node ή 4-node Διεργασία Transfer: 1. μετακινούμε ένα παιδί του w στο v Περίπτωση 2: ένας γειτονικός αδερφός w του v είναι ένας 2-node ή 1-node 1. μετακινούμε ένα στοιχείο του u στο v 2. μετακινούμε ένα στοιχείο του w στο u Μετά την μεταφορά, δεν παρουσιάζεται underflow u u 4 9 4 8 w v w v 2 6 8 2 6 9 (2,4) Δέντρα
14
Ανάλυση της Διαγραφής Έστω T ένα (2,4) δέντρο με n στοιχεία
Το δέντρο T έχει O(log n) ύψος Κατά την διαγραφή Επισκεπτόμαστε O(log n) κόμβους για να εντοπίσουμε τον κόμβο απ’όπου θα διαγραφεί το στοιχείο Αντιμετωπίσουμε ένα underflow με μια σειρά από O(log n) fusions, ακολουθούμενες το πολύ από ένα transfer Κάθε fusion και transfer παίρνει O(1) χρόνο Άρα, η διαγραφή ενός στοιχείου από ένα (2,4) δέντρο παίρνει O(log n) χρόνο (2,4) Δέντρα
15
Παράδειγμα Εισάγονται τα παρακάτω στοιχεία σε ένα δέντρο (2,4) με την ακόλουθη σειρά: 6,9, 14,17, 5, 7, 16, 20, 18, 19, 4, 11. Στην συνέχεια διαγράφονται τα στοιχεία: 6, 9, 14, 4, 5, 20, 17. Να δείξετε το αποτέλεσμα μετά από κάθε εισαγωγή / διαγραφή (2,4) Δέντρα
16
Εισαγωγή 6, 9, 14, 17
17
Εισαγωγή 5, 7, 16
18
Εισαγωγή 20
19
Εισαγωγή 18
20
Εισαγωγή 19
21
Εισαγωγή 4
22
Εισαγωγή 11
23
Διαγραφή 6
24
Διαγραφή 9
25
Διαγραφή 14
26
Διαγραφή 4
27
Διαγραφή 5
28
Διαγραφή 20
29
Διαγραφή 17
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.