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

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

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

Αντισταθμιστική ανάλυση

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

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

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

Κεφάλαιο 13 Αντισταθμιστική Ανάλυση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

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

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

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

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

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

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

Συνδετικότητα γραφήματος (graph connectivity)

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

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

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

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

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

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

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

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

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

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

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

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

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

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

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

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

Δυναμική Διατήρηση Γραμμικής Διάταξης

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

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

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

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

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

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

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

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

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

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

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

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

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

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

ΛΥΣΗ ΤΗΣ ΔΕΥΤΕΡΗΣ ΑΣΚΗΣΗΣ Όλγα Γκουντούνα

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών. Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου / 18

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

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

έντρα ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

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

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

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

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

ιδάσκοντες: Φ. Αφράτη,. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Transcript:

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

Περιστροφές x αριστερή περιστροφή από το x y α β y γ δεξιά περιστροφή από το y α x β γ link rotl(link x) { link y = x->r; x->r = y->l; y->l = x; return y; } αριστερή περιστροφή Η περιστροφή παίρνει χρόνο Ο(1) link rotr(link y) { link x = y->l; y->l = x->r; x->r = y; return x; } δεξιά περιστροφή

Περιστροφές 17 14 21 10 16 19 23 7 12 15 20 3 17 δεξιά περιστροφή από το 14 10 21 7 14 19 23 3 12 16 20 15

Ισορροπημένα Δένδρα Μερικοί τύποι ισορροπημένων δένδρων Τυχαιοποιημένα δένδρα Αρθρωτά δένδρα (splay trees) (*) Δένδρα AVL Κοκκινόμαυρα δένδρα (a,b) δένδρα Όλα τα παραπάνω χρησιμοποιούν περιστροφές για να παραμείνουν ισορροπημένα (*) Τα αρθρωτά δένδρα είναι ισορροπημένα κατά «αντισταθμιστική» έννοια

Εκτελεί όλες τις πράξεις στη ρίζα του δένδρου. Χρησιμοποιεί ζεύγη περιστροφών καθώς μετακινεί ένα κλειδί στη ρίζα (λειτουργία splay) για να φέρει το δένδρο σε μεγαλύτερη ισορροπία. DEMO : http://aleph0.clarku.edu/~achou/cs102/examples/bst_animation/splaytree-example.html

Εισαγωγή 1,2,3,4,5,6,7,8 8 7 6 5 4 3 2 1

splay(1) 8 8 8 7 7 7 6 6 6 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

splay(1) (συνέχεια) 8 8 7 1 6 6 1 4 2 4 5 7 2 5 3 3

splay(1) (συνέχεια) 8 1 1 8 6 6 4 7 4 7 2 5 2 5 3 3

Εκτελεί όλες τις πράξεις στη ρίζα του δένδρου. Χρησιμοποιεί ζεύγη περιστροφών καθώς μετακινεί ένα κλειδί στη ρίζα (λειτουργία splay) για να φέρει το δένδρο σε μεγαλύτερη ισορροπία. splay(x) Περίπτωση zig-zig: από τον παππού του x ακολουθούμε δύο αριστερούς ή δύο δεξιούς συνδέσμους για να πάμε στο x z x x y C D A B y z A B C D

Εκτελεί όλες τις πράξεις στη ρίζα του δένδρου. Χρησιμοποιεί ζεύγη περιστροφών καθώς μετακινεί ένα κλειδί στη ρίζα (λειτουργία splay) για να φέρει το δένδρο σε μεγαλύτερη ισορροπία. splay(x) Περίπτωση zig-zig: από τον παππού του x ακολουθούμε δύο αριστερούς ή δύο δεξιούς συνδέσμους για να πάμε στο x. Προσοχή στη σειρά των περιστροφών! 1 z 2 y x x y C D A x z B C D A B y z A B C D

Εκτελεί όλες τις πράξεις στη ρίζα του δένδρου. Χρησιμοποιεί ζεύγη περιστροφών καθώς μετακινεί ένα κλειδί στη ρίζα (λειτουργία splay) για να φέρει το δένδρο σε μεγαλύτερη ισορροπία. splay(x) Περίπτωση zig-zag: από τον παππού του x ακολουθούμε πρώτα έναν αριστερό και μετά ένα δεξιό σύνδεσμο ή πρώτα έναν δεξιό και μετά ένα αριστερό σύνδεσμο για να πάμε στο x z x A y x D A y B C z D B C

Εκτελεί όλες τις πράξεις στη ρίζα του δένδρου. Χρησιμοποιεί ζεύγη περιστροφών καθώς μετακινεί ένα κλειδί στη ρίζα (λειτουργία splay) για να φέρει το δένδρο σε μεγαλύτερη ισορροπία. splay(x) Περίπτωση zig-zag: από τον παππού του x ακολουθούμε πρώτα έναν αριστερό και μετά ένα δεξιό σύνδεσμο ή πρώτα έναν δεξιό και μετά ένα αριστερό σύνδεσμο για να πάμε στο x z 2 z x A y x 1 D y x C D A y B C z D B C A B

Εκτελεί όλες τις πράξεις στη ρίζα του δένδρου. Χρησιμοποιεί ζεύγη περιστροφών καθώς μετακινεί ένα κλειδί στη ρίζα (λειτουργία splay) για να φέρει το δένδρο σε μεγαλύτερη ισορροπία. splay(x) Αν ο πατέρας του x είναι η ρίζα τότε εκτελούμε μια απλή περιστροφή y x x C A y A B B C

splay(19) 10 5 12 3 7 15 8 16 22 zig-zag 18 25 19

splay(19) (συνέχεια) 10 5 12 3 7 15 8 16 μετά το zig-zag 18 19 22 23

splay(19) (συνέχεια) 10 5 12 3 7 15 8 16 19 18 22 23

splay(19) (συνέχεια) 10 5 12 3 7 8 15 16 zig-zig 19 18 22 23

splay(19) (συνέχεια) 10 5 12 3 7 19 8 μετά το zig-zig 15 16 22 18 23

splay(19) (συνέχεια) 10 5 12 3 7 19 8 16 22 15 18 23

splay(19) (συνέχεια) 5 10 12 zig-zig 3 7 19 8 16 22 15 18 23

splay(19) (συνέχεια) 19 μετά το zig-zig 12 22 10 16 23 5 15 18 3 7 8

splay(19) (συνέχεια) 19 12 22 10 16 23 5 15 18 3 7 8

Όλες οι λειτουργίες (αναζήτηση, εισαγωγή, διαγραφή) βασίζονται στη splay Αναζήτηση στοιχείου με κλειδί Βρίσκουμε τον τελευταίο μη κενό κόμβο x στο μονοπάτι αναζήτησης του από τη ρίζα όπως στην αναζήτηση σε απλό δυαδικό δένδρο. (Αν το κλειδί είναι αποθηκευμένο στο δένδρο τότε ο x έχει κλειδί.) Εκτελούμε splay(x) Επιστρέφουμε το στοιχείο της ρίζας

Αναζήτηση 4 19 12 22 10 16 23 2 4 splay 15 18

Αναζήτηση 4 4 2 12 10 19 22 16 23 15 18

Όλες οι λειτουργίες (αναζήτηση, εισαγωγή, διαγραφή) βασίζονται στη splay Εισαγωγή στοιχείου με κλειδί Εκτελούμε τα βήματα της εισαγωγής όπως στο απλό δυαδικό δένδρο. Έστω x ο νέος κόμβος που αποθηκεύει το στοιχείο με κλειδί Εκτελούμε splay(x)

Εισαγωγή 4 19 12 22 10 16 23 2 15 18

Εισαγωγή 4 19 12 22 10 16 23 2 4 splay 15 18

Εισαγωγή 4 4 2 12 10 19 22 16 23 15 18

Όλες οι λειτουργίες (αναζήτηση, εισαγωγή, διαγραφή) βασίζονται στη splay Διαγραφή κόμβου x Εκτελούμε τα βήματα της εισαγωγής όπως στο απλό δυαδικό δένδρο. Έστω z ο κόμβος που διαγράφεται. (Αν ο x έχει κενό παιδί τότε z=x, διαφορετικά o z είναι ο διάδοχος του x.) Έστω w ο γονέας του z. Εκτελούμε splay(w)

Διαγραφή x x 19 12 22 10 w 16 23 2 z 15 18

Διαγραφή x 19 15 22 10 w 16 23 2 z 15 18

Διαγραφή x 19 15 22 10 w 16 23 2 18

Διαγραφή x 19 15 22 10 w 16 splay(w) 23 2 18

Διαγραφή x w 16 15 19 10 18 22 2 23

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

Αντισταθμιστική ανάλυση Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Παράδειγμα: Θυμηθείτε το πρόβλημα της εύρεσης-ένωσης Είχαμε δει τη δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» 1 4 4 2 3 6 5 7 ένωση(3,6) 1 6 5 7 8 2 3 8 4 4 1 6 5 7 εύρεση(2) 2 1 6 5 7 2 3 8 3 8

Αντισταθμιστική ανάλυση Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Παράδειγμα: Θυμηθείτε το πρόβλημα της εύρεσης-ένωσης Είχαμε δει τη δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» Χρόνος χειρότερης περίπτωσης για μία πράξη εύρεσης ή ένωσης = 1 2 3 5 9 4 6 7 10 11 13 ύψος 8 12 14 15 16

Αντισταθμιστική ανάλυση Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Παράδειγμα: Θυμηθείτε το πρόβλημα της εύρεσης-ένωσης Είχαμε δει τη δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» Χρόνος χειρότερης περίπτωσης για μία πράξη εύρεσης ή ένωσης = Αλλά : Συνολικός χρόνος εκτέλεσης m πράξεων εύρεσης-ένωσης = Μέσος χρόνος εκτέλεσης για μία πράξη εύρεσης ή ένωσης =

Αντισταθμιστική ανάλυση Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Έστω το κόστος μίας πράξης στη χειρότερη περίπτωση Τότε ο συνολικός χρόνος για m πράξεις είναι

Αντισταθμιστική ανάλυση Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Έστω το κόστος μίας πράξης στη χειρότερη περίπτωση Τότε ο συνολικός χρόνος για m πράξεις είναι Ωστόσο σε κάποιες περιπτώσεις: Κάθε πράξη μπορεί να έχει διαφορετικό κόστος ανάλογα με την στιγμή που εκτελείται. Το κόστος μίας πράξης στη χειρότερη περίπτωση μπορεί να είναι πολύ μεγάλο. Αλλά το μέσο κόστος ανά πράξη σε οποιαδήποτε ακολουθία πράξεων μπορεί να είναι αρκετά μικρότερο.

Αντισταθμιστική ανάλυση Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Έστω το κόστος μίας πράξης στη χειρότερη περίπτωση Τότε ο συνολικός χρόνος για m πράξεις είναι Ωστόσο σε κάποιες περιπτώσεις: Κάθε πράξη μπορεί να έχει διαφορετικό κόστος ανάλογα με την στιγμή που εκτελείται. Το κόστος μίας πράξης στη χειρότερη περίπτωση μπορεί να είναι πολύ μεγάλο. Αλλά το μέσο κόστος ανά πράξη σε οποιαδήποτε ακολουθία πράξεων μπορεί να είναι αρκετά μικρότερο. Αντισταθμιστική ανάλυση: λαμβάνουμε το μέσο κόστος εκτέλεσης μίας πράξης όταν εκτελούμε μία ακολουθία πράξεων χειρότερης περίπτωσης

Αντισταθμιστική ανάλυση Διαχείριση στοίβας x push(s,x) : τοποθετεί το x στην κορυφή της στοίβας S

Αντισταθμιστική ανάλυση Διαχείριση στοίβας push(s,x) : τοποθετεί το x στην κορυφή της στοίβας S pop(s) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της

Αντισταθμιστική ανάλυση Διαχείριση στοίβας push(s,x) : τοποθετεί το x στην κορυφή της στοίβας S pop(s) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της multipop(s,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της k=2

Αντισταθμιστική ανάλυση Διαχείριση στοίβας χρόνος push(s,x) : τοποθετεί το x στην κορυφή της στοίβας S pop(s) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της multipop(s,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της

Αντισταθμιστική ανάλυση Διαχείριση στοίβας χρόνος push(s,x) : τοποθετεί το x στην κορυφή της στοίβας S pop(s) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της multipop(s,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της Ποιος είναι ο συνολικός χρόνος για μία ακολουθία από Ν πράξεις; ;

Αντισταθμιστική ανάλυση Διαχείριση στοίβας χρόνος push(s,x) : τοποθετεί το x στην κορυφή της στοίβας S pop(s) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της multipop(s,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της Ποιος είναι ο συνολικός χρόνος για μία ακολουθία από Ν πράξεις; ; Πιο προσεκτική ανάλυση : Συνολικός χρόνος ανά πράξη

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν 0 0 0 0 0 0 0 0 επαύξηση κόστος = 1 0 0 0 0 0 0 0 1

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν 0 0 1 0 1 1 1 1 επαύξηση κόστος = 5 0 0 1 1 0 0 0 0

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν 1 1 1 1 1 1 1 1 επαύξηση 0 0 0 0 0 0 0 0 κόστος = 8 χειρότερη περίπτωση!

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν = στη χειρότερη περίπτωση Συνολικό κόστος για N επαυξήσεις =

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν = στη χειρότερη περίπτωση Συνολικό κόστος για N επαυξήσεις = Βελτιωμένη ανάλυση : συνολικό κόστος = Δηλαδή αντισταθμιστικό κόστος ανά πράξη = (κατά μέσο όρο σταθερό κόστος ανά επαύξηση)

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν = στη χειρότερη περίπτωση Συνολικό κόστος για N επαυξήσεις = Βελτιωμένη ανάλυση : συνολικό κόστος = Δηλαδή αντισταθμιστικό κόστος ανά πράξη = (κατά μέσο όρο σταθερό κόστος ανά επαύξηση) Ξεκινώντας με μηδενισμένο μετρητή

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 ο ψηφίο από το τέλος: αλλάζει με κάθε επαύξηση

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 2 ο ψηφίο από το τέλος: αλλάζει με κάθε δεύτερη επαύξηση

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 3 ο ψηφίο από το τέλος: αλλάζει με κάθε τέταρτη επαύξηση

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 4 ο ψηφίο από το τέλος: αλλάζει με κάθε όγδοη επαύξηση

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Γενικά το i-οστό ψηφίο από το τέλος αλλάζει μετά από επαυξήσεις. Σε ακολουθία N πράξεων το i-οστό ψηφίο από το τέλος αλλάζει συνολικά φορές Σύνολο αλλαγών για όλα τα ψηφία =

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Γενικά το i-οστό ψηφίο από το τέλος αλλάζει μετά από επαυξήσεις. Σε ακολουθία N πράξεων το i-οστό ψηφίο από το τέλος αλλάζει συνολικά φορές Σύνολο αλλαγών για όλα τα ψηφία =

Αντισταθμιστική ανάλυση Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Γενικά το i-οστό ψηφίο από το τέλος αλλάζει μετά από επαυξήσεις. Σε ακολουθία N πράξεων το i-οστό ψηφίο από το τέλος αλλάζει συνολικά φορές Σύνολο αλλαγών για όλα τα ψηφία = Αντισταθμιστικό κόστος ανά πράξη =

Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος Αποδίδουμε στη δομή δεδομένων ένα δυναμικό («δυναμική ενέργεια»). όπου δυναμικό δομής δεδομένων D Έστω η αρχική δομή δεδομένων και η δομή μετά την i-οστη πράξη. Επίσης, έστω το κόστος της i-οστής πράξης. Αντισταθμιστικό κόστος i-οστής πράξης : Συνολικό αντισταθμιστικό κόστος για N πράξεις : Θέλουμε έτσι ώστε

Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος Αντισταθμιστικό κόστος i-οστής πράξης : Ερμηνεία : αν αν η δομή συγκεντρώνει δυναμικό και τότε η δομή χάνει δυναμικό και Δηλαδή το κόστος μιας ακριβής πράξης αποπληρώνεται από τη διαφορά δυναμικού

Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος Συνολικό αντισταθμιστικό κόστος για N πράξεις : Θέλουμε έτσι ώστε Προσοχή: Επειδή μπορεί να μη γνωρίζουμε το πλήθος των πράξεων Ν απαιτούμε να ισχύει για κάθε i=1,2,,n

Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος Παράδειγμα: Διαχείριση στοίβας Επιλέγουμε αριθμός αντικειμένων στη στοίβα S Για αρχικά κενή στοίβα έχουμε για κάθε i=1,2,,n για κάθε i=1,2,,n Επομένως το συνολικό αντισταθμιστικό κόστος αποτελεί άνω φράγμα του συνολικού πραγματικού κόστους.

Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος Παράδειγμα: Διαχείριση στοίβας Επιλέγουμε αριθμός αντικειμένων στη στοίβα S Μένει να υπολογίσουμε το αντισταθμιστικό κόστος για κάθε τύπο πράξης Έστω ότι η i-οστή πράξη είναι τύπου push : push(s,x) : τοποθετεί το x στην κορυφή της στοίβας S Έχουμε και, επομένως

Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος Παράδειγμα: Διαχείριση στοίβας Επιλέγουμε αριθμός αντικειμένων στη στοίβα S Μένει να υπολογίσουμε το αντισταθμιστικό κόστος για κάθε τύπο πράξης Έστω ότι η i-οστή πράξη είναι τύπου pop : pop(s) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της Έχουμε και, επομένως

Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος Παράδειγμα: Διαχείριση στοίβας Επιλέγουμε αριθμός αντικειμένων στη στοίβα S Μένει να υπολογίσουμε το αντισταθμιστικό κόστος για κάθε τύπο πράξης Έστω ότι η i-οστή πράξη είναι τύπου multipop : multipop(s,k) : αφαιρεί από τη στοίβα S τα πρώτα k στοιχεία στην κορυφή της Έχουμε και,, επομένως

Ιδιότητα: Σε ένα αρθρωτό δένδρο με αντισταθμιστικό χρόνο κόμβους η λειτουργία splay εκτελείται σε

Ιδιότητα: Σε ένα αρθρωτό δένδρο με αντισταθμιστικό χρόνο κόμβους η λειτουργία splay εκτελείται σε Θα χρησιμοποιήσουμε την ενεργειακή μέθοδο. Έστω απογόνων του κόμβου στο αρθρωτό δένδρο. το πλήθος των Ορίζουμε την «τάξη» του ως e d i b f j a c g h

Ιδιότητα: Σε ένα αρθρωτό δένδρο με αντισταθμιστικό χρόνο κόμβους η λειτουργία splay εκτελείται σε Θα χρησιμοποιήσουμε την ενεργειακή μέθοδο. Έστω απογόνων του κόμβου στο αρθρωτό δένδρο. το πλήθος των Ορίζουμε την «τάξη» του ως e 3 2 d i 2 1 b 1 f j 0 0 a c 0 g 1 h 0

Ιδιότητα: Σε ένα αρθρωτό δένδρο με αντισταθμιστικό χρόνο κόμβους η λειτουργία splay εκτελείται σε Θα χρησιμοποιήσουμε την ενεργειακή μέθοδο. Έστω απογόνων του κόμβου στο αρθρωτό δένδρο. το πλήθος των Ορίζουμε την «τάξη» του ως Δυναμικό δένδρου e 3 2 d i 2 1 b 1 f j 0 0 a c 0 g 1 h 0

Ιδιότητα: Σε ένα αρθρωτό δένδρο με αντισταθμιστικό χρόνο κόμβους η λειτουργία splay εκτελείται σε Θα χρησιμοποιήσουμε την ενεργειακή μέθοδο. Έστω απογόνων του κόμβου στο αρθρωτό δένδρο. το πλήθος των Ορίζουμε την «τάξη» του ως Δυναμικό δένδρου : Αναλύουμε την επίδραση του κάθε βήματος περιστροφών στο δυναμικό του δένδρου Παρατηρούμε ότι σε κάθε περίπτωση αλλάζει η τάξη δύο ή τριών κόμβων ( και ) z z y x y C D A y x D A x B C A B B C

Ιδιότητα: Σε ένα αρθρωτό δένδρο με αντισταθμιστικό χρόνο κόμβους η λειτουργία splay εκτελείται σε Θα χρησιμοποιήσουμε την ενεργειακή μέθοδο. Έστω απογόνων του κόμβου στο αρθρωτό δένδρο. το πλήθος των Ορίζουμε την «τάξη» του ως Δυναμικό δένδρου : Ας αναλύσουμε την περίπτωση zig-zig x y C z D A x B y z A B C D Έστω και οι τιμές μετά τη διπλή περιστροφή Ισχύουν και

Ιδιότητα: Σε ένα αρθρωτό δένδρο με κόμβους η λειτουργία splay εκτελείται σε αντισταθμιστικό χρόνο Ας αναλύσουμε την περίπτωση zig-zig y x z D A C x y B z A B C D Ισχύουν και

Ιδιότητα: Σε ένα αρθρωτό δένδρο με κόμβους η λειτουργία splay εκτελείται σε αντισταθμιστικό χρόνο Ας αναλύσουμε την περίπτωση zig-zig y x z D A C x y B z A B C D Ισχύουν και Επιπλέον

Ιδιότητα: Σε ένα αρθρωτό δένδρο με κόμβους η λειτουργία splay εκτελείται σε αντισταθμιστικό χρόνο Ας αναλύσουμε την περίπτωση zig-zig y x z D A C x y B z A B C D Ισχύουν και Επιπλέον

Ιδιότητα: Σε ένα αρθρωτό δένδρο με κόμβους η λειτουργία splay εκτελείται σε αντισταθμιστικό χρόνο Ας αναλύσουμε την περίπτωση zig-zig y x z D A C x y B z A B C D Ισχύουν και

Ιδιότητα: Σε ένα αρθρωτό δένδρο με κόμβους η λειτουργία splay εκτελείται σε αντισταθμιστικό χρόνο Ας αναλύσουμε την περίπτωση zig-zig y x z D A C x y B z A B C D Άρα Πραγματικό κόστος περιστροφών Αντισταθμιστικό κόστος περιστροφών

Ιδιότητα: Σε ένα αρθρωτό δένδρο με κόμβους η λειτουργία splay εκτελείται σε αντισταθμιστικό χρόνο z x Ομοίως αναλύεται η περίπτωση zig-zag A y x D A y B C z D B C Άρα Πραγματικό κόστος περιστροφών Αντισταθμιστικό κόστος περιστροφών

Ιδιότητα: Σε ένα αρθρωτό δένδρο με κόμβους η λειτουργία splay εκτελείται σε αντισταθμιστικό χρόνο y x Τερματική περίπτωση x C A y A B B C Ισχύουν και

Ιδιότητα: Σε ένα αρθρωτό δένδρο με κόμβους η λειτουργία splay εκτελείται σε αντισταθμιστικό χρόνο y x Τερματική περίπτωση x C A y A B B C Ισχύουν και

Ιδιότητα: Σε ένα αρθρωτό δένδρο με κόμβους η λειτουργία splay εκτελείται σε αντισταθμιστικό χρόνο y x Τερματική περίπτωση x C A y A B B C Άρα Πραγματικό κόστος περιστροφών Αντισταθμιστικό κόστος περιστροφών

Ιδιότητα: Σε ένα αρθρωτό δένδρο με αντισταθμιστικό χρόνο κόμβους η λειτουργία splay εκτελείται σε Έστω λοιπόν ότι η λειτουργιά splay πραγματοποιείται σε βήματα Έστω και οι τιμές μετά τo i-οστό βήμα Το συνολικό αντισταθμιστικό κόστος είναι