Αντισταθμιστική ανάλυση Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Παράδειγμα: Θυμηθείτε το πρόβλημα της εύρεσης-ένωσης Είχαμε δει τη δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» ένωση(3,6) εύρεση(2)
Αντισταθμιστική ανάλυση Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Παράδειγμα: Θυμηθείτε το πρόβλημα της εύρεσης-ένωσης Είχαμε δει τη δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» Χρόνος χειρότερης περίπτωσης για μία πράξη εύρεσης ή ένωσης = ύψος
Αντισταθμιστική ανάλυση Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Παράδειγμα: Θυμηθείτε το πρόβλημα της εύρεσης-ένωσης Είχαμε δει τη δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» Χρόνος χειρότερης περίπτωσης για μία πράξη εύρεσης ή ένωσης = Συνολικός χρόνος εκτέλεσης m πράξεων εύρεσης-ένωσης = Μέσος χρόνος εκτέλεσης για μία πράξη εύρεσης ή ένωσης = Αλλά :
Συνάρτηση Ackerman Η συνάρτηση Ackerman ορίζεται ως εξής Η συνάρτηση είναι αντίστροφη της αυξάνει με πάρα πολύ αργό ρυθμό! Π.χ. για
Αντισταθμιστική ανάλυση Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Έστω το κόστος μίας πράξης στη χειρότερη περίπτωση Τότε ο συνολικός χρόνος για πράξεις είναι
Αντισταθμιστική ανάλυση → Το κόστος μίας πράξης στη χειρότερη περίπτωση μπορεί να είναι πολύ μεγάλο. → Κάθε πράξη μπορεί να έχει διαφορετικό κόστος ανάλογα με την στιγμή που εκτελείται. → Αλλά το μέσο κόστος ανά πράξη σε οποιαδήποτε ακολουθία πράξεων μπορεί να είναι αρκετά μικρότερο. Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Έστω το κόστος μίας πράξης στη χειρότερη περίπτωση Ωστόσο σε κάποιες περιπτώσεις: Τότε ο συνολικός χρόνος για πράξεις είναι
Αντισταθμιστική ανάλυση → Το κόστος μίας πράξης στη χειρότερη περίπτωση μπορεί να είναι πολύ μεγάλο. → Κάθε πράξη μπορεί να έχει διαφορετικό κόστος ανάλογα με την στιγμή που εκτελείται. → Αλλά το μέσο κόστος ανά πράξη σε οποιαδήποτε ακολουθία πράξεων μπορεί να είναι αρκετά μικρότερο. Κατά τη διάρκεια εκτέλεσης του Α η Δ πραγματοποιεί μία ακολουθία από πράξεις. Θεωρήστε έναν αλγόριθμο Α που χρησιμοποιεί μια δομή δεδομένων Δ : Έστω το κόστος μίας πράξης στη χειρότερη περίπτωση Ωστόσο σε κάποιες περιπτώσεις: Αντισταθμιστική ανάλυση: λαμβάνουμε το μέσο κόστος εκτέλεσης μίας πράξης όταν εκτελούμε μία ακολουθία πράξεων χειρότερης περίπτωσης Τότε ο συνολικός χρόνος για πράξεις είναι
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Διαχείριση στοίβας x push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Διαχείριση στοίβας pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S
Αντισταθμιστική ανάλυση multipop(S,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της k=2 Απλά παραδείγματα: Διαχείριση στοίβας pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S
Αντισταθμιστική ανάλυση χρόνος Απλά παραδείγματα: Διαχείριση στοίβας multipop(S,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S
Αντισταθμιστική ανάλυση χρόνος Ποιος είναι ο συνολικός χρόνος για μία ακολουθία από Ν πράξεις; ; Απλά παραδείγματα: Διαχείριση στοίβας multipop(S,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S
Πιο προσεκτική ανάλυση : Αντισταθμιστική ανάλυση χρόνος Συνολικός χρόνοςανά πράξη Απλά παραδείγματα: Διαχείριση στοίβας multipop(S,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S Ποιος είναι ο συνολικός χρόνος για μία ακολουθία από Ν πράξεις; ;
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει επαύξηση Κόστος επαύξησης = αριθμός των bits που αλλάζουν κόστος = 1
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει επαύξηση Κόστος επαύξησης = αριθμός των bits που αλλάζουν κόστος = 5
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει επαύξηση Κόστος επαύξησης = αριθμός των bits που αλλάζουν κόστος = 8 χειρότερη περίπτωση!
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν = στη χειρότερη περίπτωση Συνολικό κόστος για N επαυξήσεις =
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν = στη χειρότερη περίπτωση Συνολικό κόστος για N επαυξήσεις = Βελτιωμένη ανάλυση : συνολικό κόστος = Δηλαδή αντισταθμιστικό κόστος ανά πράξη = (κατά μέσο όρο σταθερό κόστος ανά επαύξηση)
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Κόστος επαύξησης = αριθμός των bits που αλλάζουν = στη χειρότερη περίπτωση Συνολικό κόστος για N επαυξήσεις = Βελτιωμένη ανάλυση : συνολικό κόστος = Δηλαδή αντισταθμιστικό κόστος ανά πράξη = (κατά μέσο όρο σταθερό κόστος ανά επαύξηση) Ξεκινώντας με μηδενισμένο μετρητή
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει ο ψηφίο από το τέλος: αλλάζει με κάθε επαύξηση
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει 2 ο ψηφίο από το τέλος: αλλάζει με κάθε δεύτερη επαύξηση
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει 3 ο ψηφίο από το τέλος: αλλάζει με κάθε τέταρτη επαύξηση
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει 4 ο ψηφίο από το τέλος: αλλάζει με κάθε όγδοη επαύξηση
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Γενικά το i-οστό ψηφίο από το τέλος αλλάζει μετά από επαυξήσεις. Σε ακολουθία N πράξεων το i-οστό ψηφίο από το τέλος αλλάζει συνολικά φορές Σύνολο αλλαγών για όλα τα ψηφία =
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Γενικά το i-οστό ψηφίο από το τέλος αλλάζει μετά από επαυξήσεις. Σε ακολουθία N πράξεων το i-οστό ψηφίο από το τέλος αλλάζει συνολικά φορές Σύνολο αλλαγών για όλα τα ψηφία =
Αντισταθμιστική ανάλυση Απλά παραδείγματα: Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Γενικά το i-οστό ψηφίο από το τέλος αλλάζει μετά από επαυξήσεις. Σε ακολουθία N πράξεων το i-οστό ψηφίο από το τέλος αλλάζει συνολικά φορές Σύνολο αλλαγών για όλα τα ψηφία = Αντισταθμιστικό κόστος ανά πράξη =
Αντισταθμιστική ανάλυση Μέθοδοι Αντισταθμιστικής Ανάλυσης • Αθροιστική μέθοδος • Χρεωπιστωτική μέθοδος • Ενεργειακή μέθοδος
Αντισταθμιστική ανάλυση Μέθοδοι Αντισταθμιστικής Ανάλυσης • Αθροιστική μέθοδος • Χρεωπιστωτική μέθοδος • Ενεργειακή μέθοδος Σε αντίθεση με την αθροιστική μέθοδο η χρεωπιστωτική και η ενεργειακή μέθοδος μπορούν να αποδώσουν διαφορετικό αντισταθμιστικό κόστος σε διαφορετικούς τύπους πράξεων.
Αντισταθμιστική ανάλυση Χρεωπιστωτική μέθοδος (Η μέθοδος του τραπεζίτη) → Αποδίδουμε σε κάθε πράξη ένα αριθμό από πιστώσεις. → Οι πιστώσεις χρησιμοποιούνται για να αποπληρωθούν οι πράξεις: → Αν οι πιστώσεις που αποδώσαμε στις πράξεις αρκούν για να αποπληρώσουν - Όταν μια πράξη κοστίζει λιγότερο από την αντίστοιχη πίστωση τότε το υπόλοιπο αποθηκεύεται σε κάποια αντικείμενα της δομής. - Όταν μια πράξη κοστίζει περισσότερο από την αντίστοιχη πίστωση τότε η υπολειπόμενη χρέωση καλύπτεται από αποθηκευμένες πιστώσεις. οποιαδήποτε ακολουθία πράξεων τότε το αντισταθμιστικό κόστος μιας πράξης είναι ίσο με τον αριθμό των πιστώσεων που της αποδώσαμε.
Αντισταθμιστική ανάλυση Χρεωπιστωτική μέθοδος (Η μέθοδος του τραπεζίτη) Παράδειγμα: Διαχείριση στοίβας κόστος multipop(S,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S
Αντισταθμιστική ανάλυση Χρεωπιστωτική μέθοδος (Η μέθοδος του τραπεζίτη) κόστος Παράδειγμα: Διαχείριση στοίβας πίστωση Πρέπει να δείξουμε ότι οι πιστώσεις αρκούν για να αποπληρώσουν οποιαδήποτε ακολουθία πράξεων. multipop(S,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S
Αντισταθμιστική ανάλυση Χρεωπιστωτική μέθοδος (Η μέθοδος του τραπεζίτη) κόστος Παράδειγμα: Διαχείριση στοίβας πίστωση x push(S,x) 11 Από τις δύο πιστώσεις η μία πληρώνει την τοποθέτηση και η άλλη αποθηκεύεται στο x multipop(S,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S
Αντισταθμιστική ανάλυση Χρεωπιστωτική μέθοδος (Η μέθοδος του τραπεζίτη) κόστος Παράδειγμα: Διαχείριση στοίβας πίστωση pop/multipop Κάθε αντικείμενο στην S κρατά μία μονάδα πίστωσης. Έτσι αποπληρώνεται η απομάκρυνση του αντικειμένου. 1 multipop(S,k) : αφαιρεί από τη στοίβα S τα k πρώτα στοιχεία στην κορυφή της pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S
Αντισταθμιστική ανάλυση Χρεωπιστωτική μέθοδος (Η μέθοδος του τραπεζίτη) Παράδειγμα: Επαύξηση δυαδικού μετρητή αλλαγή bit από 0 σε 1 αλλαγή bit από 1 σε 0 κόστοςπίστωση
Αντισταθμιστική ανάλυση Χρεωπιστωτική μέθοδος (Η μέθοδος του τραπεζίτη) Παράδειγμα: Επαύξηση δυαδικού μετρητή αλλαγή bit από 0 σε 1 αλλαγή bit από 1 σε 0 κόστοςπίστωση επαύξηση 1 Κάθε bit με τιμή 1 έχει μία μονάδα πίστωσης 1
Αντισταθμιστική ανάλυση Χρεωπιστωτική μέθοδος (Η μέθοδος του τραπεζίτη) Παράδειγμα: Επαύξηση δυαδικού μετρητή αλλαγή bit από 0 σε 1 αλλαγή bit από 1 σε 0 κόστοςπίστωση Κάθε bit με τιμή 1 έχει μία μονάδα πίστωσης
Αντισταθμιστική ανάλυση Χρεωπιστωτική μέθοδος (Η μέθοδος του τραπεζίτη) Παράδειγμα: Επαύξηση δυαδικού μετρητή αλλαγή bit από 0 σε 1 αλλαγή bit από 1 σε 0 κόστοςπίστωση επαύξηση Κάθε bit με τιμή 1 έχει μία μονάδα πίστωσης
Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) → Αποδίδουμε στη δομή δεδομένων ένα δυναμικό («δυναμική ενέργεια»). δυναμικό δομής δεδομένων D όπου → Έστω η αρχική δομή δεδομένων και η δομή μετά την i-οστη πράξη. Επίσης, έστω το κόστος της i-οστής πράξης. Αντισταθμιστικό κόστος i-οστής πράξης : Συνολικό αντισταθμιστικό κόστος για N πράξεις : → Θέλουμε έτσι ώστε
Δηλαδή το κόστος μιας ακριβής πράξης αποπληρώνεται από τη διαφορά δυναμικού Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) Αντισταθμιστικό κόστος i-οστής πράξης : Ερμηνεία : • αν η δομή συγκεντρώνει δυναμικό και • αν τότε η δομή χάνει δυναμικό και
Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) Συνολικό αντισταθμιστικό κόστος για N πράξεις : Θέλουμε έτσι ώστε Προσοχή: Επειδή μπορεί να μη γνωρίζουμε το πλήθος των πράξεων Ν απαιτούμε να ισχύει για κάθε i=1,2,…,N
Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) Παράδειγμα: Διαχείριση στοίβας Επιλέγουμε αριθμός αντικειμένων στη στοίβα S Για αρχικά κενή στοίβα έχουμε για κάθε i=1,2,…,N Επομένως το συνολικό αντισταθμιστικό κόστος αποτελεί άνω φράγμα του συνολικού πραγματικού κόστους. για κάθε i=1,2,…,N
Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) Παράδειγμα: Διαχείριση στοίβας Επιλέγουμε αριθμός αντικειμένων στη στοίβα S push(S,x) : τοποθετεί το x στην κορυφή της στοίβας S Μένει να υπολογίσουμε το αντισταθμιστικό κόστος για κάθε τύπο πράξης Έστω ότι η i-οστή πράξη είναι τύπου push : Έχουμε και, επομένως
Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) Παράδειγμα: Διαχείριση στοίβας Επιλέγουμε αριθμός αντικειμένων στη στοίβα S Μένει να υπολογίσουμε το αντισταθμιστικό κόστος για κάθε τύπο πράξης Έστω ότι η i-οστή πράξη είναι τύπου pop : Έχουμε και, επομένως pop(S) : αφαιρεί από τη στοίβα S το στοιχείο στην κορυφή της
Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) Παράδειγμα: Διαχείριση στοίβας Επιλέγουμε αριθμός αντικειμένων στη στοίβα S Μένει να υπολογίσουμε το αντισταθμιστικό κόστος για κάθε τύπο πράξης Έστω ότι η i-οστή πράξη είναι τύπου multipop : Έχουμε και,, επομένως multipop(S,k) : αφαιρεί από τη στοίβα S τα πρώτα k στοιχεία στην κορυφή της
Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) Παράδειγμα: Επαύξηση δυαδικού μετρητή Επιλέγουμε αριθμός bit με τιμή 1 Για αρχικά μηδενισμένο μετρητή έχουμε για κάθε i=1,2,…,N Επομένως το συνολικό αντισταθμιστικό κόστος αποτελεί άνω φράγμα του συνολικού πραγματικού κόστους. για κάθε i=1,2,…,N
Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) Παράδειγμα: Επαύξηση δυαδικού μετρητή Επιλέγουμε αριθμός bit με τιμή 1 Μένει να υπολογίσουμε το αντισταθμιστικό κόστος Έστω και Επίσης, έστω ότι η i-οστή πράξη μηδενίζει bit. Έχουμε και, επομένως
Αντισταθμιστική ανάλυση Ενεργειακή μέθοδος (Η μέθοδος του φυσικού) Παράδειγμα: Επαύξηση δυαδικού μετρητή Επιλέγουμε αριθμός bit με τιμή 1 Aν έχουμε και Επομένως αν πραγματοποιήσουμε επαυξήσεις τότε το συνολικό πραγματικό κόστος είναι ανεξάρτητα από την αρχική τιμή