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

Σχετικά έγγραφα
Εκτενείς Δομές Δεδομένων

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

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

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

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

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

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

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

AVL-trees C++ implementation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cuckoo Hashing. Αλγόριθμοι και Πολυπλοκότητα. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

ΑΥΤΟΡΓΑΝΟΥΜΕΝΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

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

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

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

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

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

Union Find, Λεξικό. Δημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

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

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

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

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

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

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

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

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

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

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

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

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

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

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

Θέματα υπολογισμού στον πολιτισμό

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

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

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

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

Advanced Data Indexing

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

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

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

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

Κεφ.11: Ευρετήρια και Κατακερματισμός

Κατανεμημένα Συστήματα Ι

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

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

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

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι;

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Transcript:

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

Ειδικά Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Το αριστερό υποδένδρο κάθε κόμβου έχει τιμές μικρότερες από την τιμή του κόμβου. Το δεξιό υποδένδρο κάθε κόμβου έχει τιμές μεγαλύτερες από την τιμή του κόμβου. Χρησιμοποιούνται στην αναζήτηση στοιχείων, όπου ενδέχεται να βελτιώσουν σημαντικά το χρόνο (αντίστοιχα με τη δυαδική αναζήτηση σε ταξινομημένο πίνακα). Η δυαδική αναζήτηση σε ταξινομημένο πίνακα παίρνει Ο(log n) χρόνο και αυτό επιτυγχάνεται και στα ισοζυγισμένα δυαδικά δένδρα αναζήτησης. Με ενδοδιατεταγμένη διαπέραση παίρνουμε τα στοιχεία ταξινομημένα κατά αύξουσα σειρά Δένδρα - Σωροί Πλήρη δυαδικά δένδρα. Στο σωρό ελαχίστων (μεγίστων) η τιμή κάθε κόμβου είναι μικρότερη (μεγαλύτερη) από τις τιμές των παιδιών του. 2

Πράξεις σε φυλλοπροσανατολισμένα SEARCH(x) v<-ρίζα wile (v!=φυλλο) { Εντόπισε υποδέντρο: Η i-1 (v)<x<=h i (v) v<- i-οστός γιος του v } if (πληροφορία(v)=x) ten βρεθηκε else δεν βρέθηκε INSERT(x) min(x,cont(v)) v<-φύλλο που τελειώνει η Searc(x) if (πληροφορία(v)=x) ten μη κάνεις τίποτα αλλιώς αντικατέστησε το v με min(x,cont(v)) max(x,cont(v)) 3

DELETE(x) v<-το φύλλο στο οποίο τελειώνει η Searc(x) if (πληροφορία(v)!=x) ten μη κάνεις τίποτα else u<-o κοντινότερος πρόγονος του v με βαθμό >=2 Σβήσε την i-οστή πλευρά του u και ένα από τα Η i-1 (v),h i (v) if degree(u)=1 ten αντικατέστησε τον δείκτη από τον πατέρα του u προς τον u, με δείκτη στο γιο του u τον 4

Εισαγωγή Δομές που βασίζονται σε συγκρίσεις : Ισοζυγισμένα δέντρα εύρεσης ( δέντρα τα φύλλα των οποίων απέχουν της ίδιας τάξεως μεγέθους, απόσταση απο τη ρίζα) Υψοζυγισμένα δέντρα ( κριτήριο ζύγισης κάθε κόμβου αποτελεί το ύψος των υποδέντρων του) : AVL ( a,b ) TREES B - TREES RED BLACK TREE Βαροζυγισμένα δέντρα (κριτήριο ζύγισης κάθε κόμβου αποτελεί το βάρος των υποδέντρων του) : BB[a] TREES SKIP LISTS INTERPOLATION SEARCH TREES ΒΑΡΟΖΥΓΙΣΜΕΝΑ B - TREES

AVL tree (Adelson-Velsk and Landis) Δυαδικό ισοζυγισμένο δέντρο σε κάθε κόμβο τα ύψη των υποδέντρων του διαφέρουν το πολύ κατά ένα. Υψοζύγιση του u: b(u) = ύψος( R(u) ) ύψος( L(u)), b(u) { +1, 0, - 1 } Το ύψος ενός δένδρου AVL με n στοιχεία είναι Ο( logn ).

F 4 F 0 F 1 F +1 F F 2 Το F έχει Fib(+1) φύλλα F 3

8

Απλή Περιστροφή (1) +2 x 0 +2 A B +1 C +1 Χ 0 Α Β C +1

Απλή Περιστροφή (2) -2 0 x +1 Χ Α -1 Β C +1 A B 0 C

Διπλή Περιστροφή (1) +2 A +2-1 x z -1 B 1 B 2-2 C +1 +2 A +2 B 1 x +1 B 2-2 z +1 C +1 A x 0 B 1 0 z B 2-2 +1 C

Διπλή Περιστροφή (2) A +2 A +1-1 -2 +1 z B 1 B 2 x z C A -1-2 x C B 2 B 1 +2 +1 A x -1 B 1-2 0 z B 2 0 C -2-2

AVL tree Access(x) Ξεκινάμε απο τη ρίζα και ελέγχουμε σε κάθε κόμβο u : αν x <= val(u) συνεχίζουμε αριστερά αν x > val(u) συνεχίζουμε δεξιά ε ως ότου βρούμε το x Ο χρόνος της Access(x) είναι Θ( logn )

AVL tree Insert(x, T) Ο πρώτος κόμβος στο μονοπάτι από τον κόμβο v (που εισήχθη στο δένδρο) προς τη ρίζα, του οποίου το balance ήταν +1 ή 1 (πριν την εισαγωγή) ονομάζεται κρίσιμος κόμβος ( κρίσιμο μονοπάτι αντίστοιχα). Αν ο κόμβος αυτός αποκτά balance +2 ή 2 μετά την εισαγωγή, τότε είναι ο πρώτος κόμβος στο μονοπάτι από τον v στη ρίζα για τον οποίο θα πρέπει να γίνουν κατάλληλες ενέργειες ώστε να διορθωθεί το balance του. Διακρίνουμε περιπτώσεις ανάλογα με το είδος των δύο πρώτων ακμών του μονοπατιού από τον κρίσιμο κόμβο w προς τον εισαχθέντα κόμβο v ( απλή περιστροφή / διπλή περιστροφή)

AVL tree Insert(x, T) Περίπτωση RR (Rigt - Rigt): Και οι δύο ακμές οδηγούν δεξιά. Εκτελούμε μια αριστερή περιστροφή γύρω από τον κρίσιμο κόμβο. Περίπτωση LL (Left - Left): Και οι δύο ακμές οδηγούν αριστερά. Είναι συμμετρική της περίπτωσης RR! Μία δεξιά περιστροφή γύρω από τον κρίσιμο κόμβο αρκεί για να επιλυθεί το πρόβλημα με το balance του!

AVL tree Insert(x, T) Περίπτωση RL ( Rigt - Left): Η πρώτη ακμή οδηγεί δεξιά και η δεύτερη αριστερά. Απαιτούνται δύο περιστροφές, μια δεξιά περιστροφή γύρω από τον επόμενο του κρίσιμου κόμβου στο μονοπάτι του οδηγεί στον v και μια αριστερή περιστροφή γύρω από τον κρίσιμο κόμβο. Περίπτωση LR ( Left - Rigt): Η πρώτη ακμή οδηγεί αριστερά και η δεύτερη δεξιά. Είναι συμμετρική της περιπτώσεως RL. Απαιτούνται δύο περιστροφές, μια αριστερή περιστροφή γύρω από τον επόμενο του κρίσιμου κόμβου στο μονοπάτι που οδηγεί στον v και μια δεξιά περιστροφή γύρω από τον κρίσιμο κόμβο.

+1 ΚΚΕ +2 ΚΚΕ 0-1 +1 0-1 0 +1 0 0

x -+1 A B C Μορφή του υποδένδρου με ρίζα τον ΚΚΕ x, πριν την ένθεση.

Περίπτωση (i) +2 x 0 +2 A B +1 C +1 Χ 0 Α Β C +1

Περίπτωση (ii) +2 A +2-1 x z -1 B 1 B 2-2 C +1 +2 A +2 B 1 x +1 B 2-2 z +1 C +1 A x 0 B 1 0 z B 2-2 +1

AVL tree Delete(x, T)

Αποσβέσεις

Αποσβέσεις -1 ΚΚA ii) -1 iii) 0/ +1 ΚΚA i) 0 ΚΚA +1 +1 0 0-1 0-1 0

Διαγραφή x -+1 A B C Μορφή του υποδένδρου με ρίζα τον ΚΚΕ x, πριν την aπόσβεση στο Α

Περίπτωση (i)-τερματική +2 x -1 +1 A -2 0 B C Χ +1 Α Β -2 C +1

Περίπτωση (ii) μη τερματική +2 x 0 +1 A -2 +1 B C -2 Χ 0 Α Β -2-2 C

Περίπτωση (iii) μη τερματική +1 A +2-2 +1 x z -1 B 1 B 2-3 -2 C -2 +2 A +2 B 1-3 x +2 B 2-2 z 0 C -2 A x -2-1 B 1-3 0 z B 2-2 0 C -2

Περίπτωση (iv) - απορρόφηση 0 x -1 x A B A B

(a,b)-tree Έστω a, b ακέραιοι τέτοιοι ώστε a 2 και b 2a-1. Ένα δέντρο Τ είναι (a, b) αν Όλα τα φύλλα του Τ έχουν το ίδιο βάθος(δηλαδή το δέντρο είναι πλήρως ζυγισμένο) Για κάθε κόμβο u του Τ, ισχύει p(u) b {p(u) = αριθμός των παιδιών του u} Για κάθε κόμβο u του Τ, με εξαίρεση τη ρίζα, ισχύει p(u) a Για τη ρίζα r,ισχύει p(r) 2 Όταν b = 2a 1 τότε το (a,b) tree ονομάζεται B-tree.

Split(v) 1. Διαχωρισμός του v σε δύο τμήματα ένα που περιέχει τα (b+1)/2 αριστερότερα και ένα που περιέχει τα (b+1)/2 δεξιότερα παιδιά 2. Δημιουργία ενός καινούριου κόμβου v αριστερά του v 3. Ta δεξιότερα (b+1)/2 παιδιά τοποθετούνται στον v μαζί με τα κλειδιά k (b+1)/2 +1,,k p(v) 4. Έστω u ο πατέρας του v. Το κλειδί k (b+1)/2 τοποθετείται στον u ανάμεσα στους δείκτες στα υποδέντρα με ρίζες τους κόμβους v και v

Split(v) 4 u 4 9 u v 2 7 9 10 12 v 2 7 10 12 1 3 7 9 10 11 15 1 3 7 9 10 11 15

Sare(v) 4 9 u 4 9 u 4 10 u v 2 7 10 12 v 2 10 12 v 2 9 11 1 3 7 9 10 11 15 1 3 9 10 11 15 1 3 9 10 11 15

Fuse(v) 4 10 4 10 u 10 v u 2 9 11 9 v 11 4 9 11 1 3 9 10 11 15 1 9 10 11 15 1 9 10 11 15

Παράδειγμα (α,b) δέντρου

Δέντρο Δακτυλοδοτούμενης Εύρεσης