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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Δένδρα van Emde Boas TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μελετάμε την περίπτωση όπου αποθηκεύουμε.
Advertisements

Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
Διακριτά Μαθηματικά ΙI Δυαδικά Δέντρα Αναζήτησης
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Δυναμικός Κατακερματισμός.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A εισαγωγή αναζήτησηεπιλογή διατεταγμένος πίνακας.
Ψηφιακά Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
Αλγόριθμοι και Πολυπλοκότητα
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Έλεγχος της.
Τυχαιοκρατικοί Αλγόριθμοι TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA Πιθανότητες και Αλγόριθμοι Ανάλυση μέσης.
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
Σχεδίαση αλγορίθμων (2ο μέρος)
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
Ψηφιακά Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
1 Έλεγχος ροής και συμφόρησης (flow and congestion control) flow control Ο όρος έλεγχος ροής (flow control) χρησιμοποιείται συχνά για να περιγράψει τους.
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Δυναμικά Σύνολα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Δυναμικό σύνολο Tα στοιχεία του μεταβάλλονται.
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες:
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη C Ακέραιοι.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα B-Δένδρα.
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ §3.7 ΤΑΞΙΝΟΜΗΣΗ
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Δομές Δεδομένων και Αρχεία Ενότητα 10: Κυκλικά και Διπλά Συνδεδεμένη Λίστα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.
Δομές Δεδομένων 13η Διάλεξη Πίνακες Συμβόλων Ε. Μαρκάκης.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
Δυναμικός Κατακερματισμός
Δομές Δεδομένων 2η Διάλεξη Αλγόριθμοι Ένωσης-Εύρεσης (Union-Find)
Επίλυση Προβλημάτων με Αναζήτηση
Προβλήματα Ικανοποίησης Περιορισμών
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
18η Διάλεξη Ισορροπημένα δέντρα Ε. Μαρκάκης
9η Διάλεξη Ταξινόμηση Ε. Μαρκάκης
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
12η Διάλεξη Διάσχιση Δέντρων και Ουρές Προτεραιότητας Ε. Μαρκάκης
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε χρόνο εκτέλεσης
Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης
Ουρά Προτεραιότητας (priority queue)
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης
15η Διάλεξη Δέντρα Δυαδικής Αναζήτησης και Κατακερματισμός Ε. Μαρκάκης
14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης
(2,4) Trees 11/15/2018 8:56 PM (2,4) Δέντρα (2,4) Δέντρα.
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Δυναμικός Κατακερματισμός
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Μεταγράφημα παρουσίασης:

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

Περίληψη Εισαγωγή Τυχαιοποιημένα ΔΔΑ (Randomized Binary Search trees) Στρεβλά ΔΔΑ (Splay trees) Καθοδικά δέντρα 2-3-4 (Top-Down 2-3-4 trees) Δομές Δεδομένων

Εισαγωγή Μειονεκτήματα δέντρων Δυαδικής Αναζήτησης (ΔΔΑ) Κακή επίδοση χειρότερης περίπτωσης Εμφανίζεται σε αρκετές πρακτικές περιπτώσεις Παράδειγμα: εισαγωγή ήδη ταξινομημένων κλειδιών Λύση: διατήρηση των δέντρων σε ισορροπημένη μορφή Όλοι οι εξωτερικοί κόμβοι στο ίδιο ή σε δύο διαδοχικά επίπεδα Πρόβλημα: διατήρηση ισορροπίας μετά από αλλαγές Περιοδική πλήρης ανακατασκευή private Node balanceR(Node h) { if ((h == null) || (h.N == 1)) return h; h = partR(h, h.N/2); h.l = balanceR(h.l); h.r = balanceR(h.r); fixN(h.l); fixN(h.r); fixN(h); return h; } Δομές Δεδομένων

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

Τυχαιοποιημένα ΔΔΑ Απλή παραλλαγή των ΔΔΑ Έστω ένα ΔΔΑ με N κόμβους Αυτή είναι η πιθανότητα να είναι η ρίζα ενός τυχαίου ΔΔΑ Αναδρομική εισαγωγή σε υποδέντρο με τον ίδιο τρόπο private Node insertR(Node h, ITEM x) { if (h == null) return new Node(x); if (Math.random()*h.N < 1.0) return insertT(h, x); if (less(x.key(), h.item.key())) h.l = insertR(h.l, x); else h.r = insertR(h.r, x); h.N++; return h; } void insert(ITEM x) { head = insertR(head, x); } Δομές Δεδομένων

Τυχαιοποιημένα ΔΔΑ Απόδοση τυχαιοποιημένων ΔΔΑ Είναι ισοδύναμα με ΔΔΑ όπου N κλειδιά εισάγονται τυχαία Παρά το ότι τα κλειδιά δεν εισάγονται τυχαία Κατασκευή: περίπου 2NlnN συγκρίσεις Αναζήτηση: περίπου 2lnN συγκρίσεις Ιδιότητες τυχαιοποιημένων ΔΔΑ Το ΔΔΑ που προκύπτει εξαρτάται από τους τυχαίους αριθμούς Αμελητέα πιθανότητα το δέντρο να είναι μη ισορροπημένο Παράδειγμα: ΔΔΑ που προκύπτει από κλειδιά σε αύξουσα σειρά Δομές Δεδομένων

Τυχαιοποιημένα ΔΔΑ Μειονεκτήματα τυχαιοποιημένων ΔΔΑ Οι καλές γεννήτριες τυχαίων αριθμών είναι αργές Χρήση γρήγορων αλλά όχι τόσο τυχαίων γεννητριών Απαιτείται πεδίο πλήθους κόμβων σε κάθε κόμβο Μπορεί όμως να χρησιμοποιείται και για άλλους λόγους Αφαίρεση: παρόμοια με τα απλά ΔΔΑ Όταν ενώνουμε τα υποδέντρα παίρνουμε μια τυχαία απόφαση private Node joinLR(Node a, Node b) { int N = a.N + b.N; if (a == null) return b; if (b == null) return a; if (Math.random()*N < 1.0*a.N) { a.r = joinLR(a.r, b); return a; } else { b.l = joinLR(a, b.l); return b; } } Δομές Δεδομένων

Τυχαιοποιημένα ΔΔΑ Υλοποίηση ένωσης: παρόμοια με τα απλά ΔΔΑ Τυχαία απόφαση για το ποια ρίζα θα μείνει στην κορυφή private Node joinR(Node a, Node b) { if (b == null) return a; if (a == null) return b; insertT(b, a.item); b.l = joinR(a.l, b.l); b.r = joinR(a.r, b.r); return b; } public void join(ST b) { int N = head.N; if (Math.random()*(N+b.count()) < 1.0*N) head = joinR(head, b.head); else head = joinR(b.head, head); } Δομές Δεδομένων

Στρεβλά ΔΔΑ Παραλλαγή των ΔΔΑ με εισαγωγή στη ρίζα Λαμβάνουμε υπόψη δύο διαδοχικές περιστροφές Αν είναι προς αντίθετες κατευθύνσεις, καμία αλλαγή Αν είναι προς την ίδια κατεύθυνση, διαφοροποιούμαστε Κάνουμε πρώτα την περιστροφή στη ρίζα και μετά στο παιδί Δομές Δεδομένων

Στρεβλά ΔΔΑ Υλοποίηση στρεβλής εισαγωγής Διαφοροποιείται μόνο σε ζεύγη όμοιων περιστροφών Εξετάζουμε πάντα δύο επίπεδα private Node splay(Node h, ITEM x) { if (h == null) return new Node(x); if (less(x.key(), h.item.key())) { if (h.l == null) { h.l = new Node(x); return rotR(h); } if (less(x.key(), h.l.item.key())) { h.l.l = splay(h.l.l, x); h = rotR(h); } else { h.l.r = splay(h.l.r, x); h.l = rotL(h.l);} return rotR(h); } else {… Δομές Δεδομένων

Στρεβλά ΔΔΑ Υλοποίηση στρεβλής εισαγωγής else { if (h.r == null) { h.r = new Node(x); return rotL(h); } if (less(h.r.item.key(), x.key())) { h.r.r = splay(h.r.r, x); h = rotL(h); } h.r.l = splay(h.r.l, x); h.r = rotR(h.r);} return rotL(h); } } void insert(ITEM x) { head = splay(head, x); } Τι κερδίζουμε με τη στρεβλή εισαγωγή; Σε κάθε εισαγωγή μικραίνει η διαδρομή εισαγωγής Το μήκος της διαδρομής μειώνεται στο μισό Μπορεί βέβαια να αυξάνεται το μήκος άλλων διαδρομών Δομές Δεδομένων

Στρεβλά ΔΔΑ Απόδοση στρεβλών ΔΔΑ Βελτίωση απόδοσης στρεβλών ΔΔΑ N εισαγωγές σε άδειο ΔΔΑ: O(NlοgN) N εισαγωγές / αναζητήσεις σε ΔΔΑ M κόμβων: O((N+M)lοg(N+M)) Γενική περίπτωση, εξειδικεύεται στο O(NlοgN) όταν M=0 Μέσο κόστος όλων των λειτουργιών Κάποιες λειτουργίες μπορεί να είναι πολύ αργές Το κόστος τους αποσβένεται σε πολλές λειτουργίες Αυτή είναι η χειρότερη, όχι η μέση περίπτωση! Τα κόστη είναι μέσα κόστη στη χειρότερη περίπτωση Βελτίωση απόδοσης στρεβλών ΔΔΑ Μπορούμε να κάνουμε εξισορρόπηση και στις αναζητήσεις Ιδιαίτερα αποδοτική για ανομοιόμορφες προσπελάσεις Τα κλειδιά που χρησιμοποιούνται συχνά πλησιάζουν τη ρίζα Δομές Δεδομένων

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

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

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