Έχουμε αποθηκεύσει μια συλλογή αρχείων σε μια συνδεδεμένη λίστα, όπου κάθε αρχείο έχει μια ετικέτα ταυτοποίησης. Μια εφαρμογή παράγει μια ακολουθία από αιτήματα πρόσβασης στα αρχεία της λίστας. Για να προσπελάσουμε ένα αρχείο πρέπει να το αναζητήσουμε στη λίστα διατρέχοντας τη από την. Καθώς ικανοποιούμε τα αιτήματα μπορούμε να αναδιατάσσουμε τα στοιχεία της λίστας. a b c d e f g Άμεσος αλγόριθμος Εξυπηρετεί ένα αίτημα τη φορά χωρίς να γνωρίζει τα μελλοντικά αιτήματα
Κόστος προσπέλασης και αντιμετάθεσης Εάν το αρχείο που ψάχνουμε βρίσκεται στη θέση τότε το κόστος προσπέλασης του είναι. Στη συνέχεια μπορούμε να μεταφέρουμε το σε οποιαδήποτε θέση χωρίς επιπλέον κόστος. Π.χ. προσπέλαση e: Καθώς αναζητούμε το e από την της λίστας αποθηκεύουμε ένα δείκτη στη θέση που θέλουμε να το μεταφέρουμε a b c d e f g κόστος = 5 a b e c d f g
Κόστος προσπέλασης και αντιμετάθεσης Εάν το αρχείο που ψάχνουμε βρίσκεται στη θέση τότε το κόστος προσπέλασης του είναι. Στη συνέχεια μπορούμε να μεταφέρουμε το σε οποιαδήποτε θέση χωρίς επιπλέον κόστος. Σε οποιαδήποτε χρονική στιγμή μπορούμε να αλλάξουμε τη θέση δύο διαδοχικών αρχείων. Το κόστος μιας τέτοιας αντιμετάθεσης είναι 1. Π.χ. αντιμετάθεση c,d a b c d e f g κόστος = 1 a b d c e f g
Κόστος προσπέλασης και αντιμετάθεσης Εάν το αρχείο που ψάχνουμε βρίσκεται στη θέση τότε το κόστος προσπέλασης του είναι. Στη συνέχεια μπορούμε να μεταφέρουμε το σε οποιαδήποτε θέση χωρίς επιπλέον κόστος. Μπορούμε να θεωρήσουμε ότι η μετακίνηση του x γίνεται με δωρεάν αντιμεταθέσεις διαδοχικών αρχείων μέχρι να φτάσει το x στην τελική του θέση. x Σε οποιαδήποτε χρονική στιγμή μπορούμε να αλλάξουμε τη θέση δύο διαδοχικών αρχείων. Το κόστος μιας τέτοιας αντιμετάθεσης είναι 1. Ονομάζουμε μια τέτοια αντιμετάθεση πληρωμένη.
Κόστος προσπέλασης και αντιμετάθεσης Παράδειγμα a b c d e f g 1 2 4 5 6 Χωρίς να αλλάξουμε τη θέση κανενός αρχείου: κόστος = 1+5+2+4+5+6+5 = 28
Κόστος προσπέλασης και αντιμετάθεσης Παράδειγμα a b c d e f g 1 5 e a b c d f g Μετά την πρώτη προσπέλαση στο e το μεταφέρουμε στην πρώτη θέση : κόστος = 1+5+3+5+1+6+1 = 22 1 2 3 5 6
Μερικοί Γνωστοί Άμεσοι Αλγόριθμοι move-to-front: transpose: Μετά την πρόσβαση στο αρχείο x το τοποθετεί στην της λίστας Μετά την πρόσβαση στο αρχείο x το αντιμεταθέτει με το αρχείο που προηγείται του x στη λίστα frequency-count: Μετρά τον αριθμό προσβάσεων (συχνότητα πρόσβασης) κάθε αρχείου και διατάσσει τα αρχεία σε φθίνουσα σειρά ως προς τη συχνότητα πρόσβασης. Μετά την πρόσβαση στο αρχείο x ο μετρητής του x αυξάνει κατά ένα και το x μετακινείται στην κατάλληλη θέση
Αλγόριθμος move-to-front (MFT) a b c d e f g κόστος = 1
Αλγόριθμος move-to-front (MFT) a b c d e f g κόστος = 1+5
Αλγόριθμος move-to-front (MFT) e a b c d f g κόστος = 1+5
Αλγόριθμος move-to-front (MFT) e a b c d f g κόστος = 1+5+3
Αλγόριθμος move-to-front (MFT) b e a c d f g κόστος = 1+5+3
Αλγόριθμος move-to-front (MFT) b e a c d f g κόστος = 1+5+3+5
Αλγόριθμος move-to-front (MFT) d b e a c f g κόστος = 1+5+3+5
Αλγόριθμος move-to-front (MFT) d b e a c f g κόστος = 1+5+3+5+3
Αλγόριθμος move-to-front (MFT) e d b a c f g κόστος = 1+5+3+5+3
Αλγόριθμος move-to-front (MFT) e d b a c f g κόστος = 1+5+3+5+3+6
Αλγόριθμος move-to-front (MFT) f e d b a c g κόστος = 1+5+3+5+3+6
Αλγόριθμος move-to-front (MFT) f e d b a c g κόστος = 1+5+3+5+3+6+2
Αλγόριθμος move-to-front (MFT) e f d b a c g κόστος = 1+5+3+5+3+6+2 = 25
Λόγος ανταγωνιστικότητας κόστος του αλγορίθμου για την εξυπηρέτηση της ακολουθίας ελάχιστο κόστος εξυπηρέτηση της ακολουθίας αλγόριθμο (κόστος βέλτιστου αλγόριθμου) από οποιοδήποτε Ένας άμεσος αλγόριθμος είναι ανταγωνιστικός εάν υπάρχει σταθερά τέτοια ώστε για κάθε πεπερασμένη ακολουθία εισόδου ισχύει
Λόγος ανταγωνιστικότητας Θα δείξουμε ότι για λίστα με αρχεία και ακολουθία αιτημάτων Παρατηρήσεις : Ο βέλτιστος αλγόριθμος μπορεί να γνωρίζει εξς ολόκληρη την ακολουθία και να έχει προϋπολογίσει τις πράξεις που θα κάνει όταν θα εξυπηρετεί τα αιτήματα Είναι υπολογιστικά δύσκολο (NP-hard) πρόβλημα να βρεθεί η βέλτιστη σειρά πράξεων που πρέπει να κάνει ο.
Λόγος ανταγωνιστικότητας Πρώτα θα δείξουμε ότι για οποιαδήποτε ακολουθία με αιτήματα όπου κόστος του χωρίς τις πληρωμένες αντιμεταθέσεις αριθμός πληρωμένων αντιμεταθέσεων του αριθμός δωρεάν αντιμεταθέσεων του Θα χρησιμοποιήσουμε την ενεργειακή μέθοδο της αντισταθμιστικής ανάλυσης. Επειδή ο βέλτιστος αλγόριθμος μας είναι άγνωστος, χρησιμοποιούμε μια συνάρτηση δυναμικού που συσχετίζει τη λίστα του με τη λίστα του Αρχικά οι δύο λίστες έχουν την ίδια διάταξη αρχείων a b c d e f g a b c d e f g
Συνάρτηση δυναμικού Αντιστροφή : Το αρχείο εμφανίζεται μετά το στη λίστα αλλά το εμφανίζεται πριν το στη λίστα αριθμός αντιστροφών στη λίστα σε σχέση με τη λίστα a b e d c f g a b c d f e g 4 αντιστροφές : (e,c), (e,d), (d,c), (e,f)
Συνάρτηση δυναμικού Αντιστροφή : Το αρχείο εμφανίζεται μετά το στη λίστα αλλά το εμφανίζεται πριν το στη λίστα αριθμός αντιστροφών στη λίστα σε σχέση με τη λίστα δυναμικό μετά το i-οστό αίτημα. Αρχικά Εξετάζουμε το i-οστό αίτημα της ακολουθίας κόστος του για την εξυπηρέτηση του αιτήματος Ορίζουμε το αντισταθμιστικό κόστος Άρα
Εξετάζουμε το i-οστό αίτημα της ακολουθίας κόστος του για την εξυπηρέτηση του αιτήματος Ορίζουμε το αντισταθμιστικό κόστος Έστω x το αρχείο που ζητείται. Έστω ότι βρίσκεται στη θέση k στη λίστα και στη θέση j στη λίστα. Αν το x εμφανίζεται σε p αντιστροφές πριν την μετακίνηση του τότε υπάρχουν k-p-1 αρχεία που προηγούνται του x και στις δύο λίστες x x
Εξετάζουμε το i-οστό αίτημα της ακολουθίας κόστος του για την εξυπηρέτηση του αιτήματος Ορίζουμε το αντισταθμιστικό κόστος Έστω x το αρχείο που ζητείται. Έστω ότι βρίσκεται στη θέση k στη λίστα και στη θέση j στη λίστα. Αν το x εμφανίζεται σε p αντιστροφές πριν την μετακίνηση του τότε υπάρχουν k-p-1 αρχεία που προηγούνται του x και στις δύο λίστες Η μετακίνηση του x δημιουργεί k-p-1 αντιστροφές και καταργεί p. x x
Εξετάζουμε το i-οστό αίτημα της ακολουθίας κόστος του για την εξυπηρέτηση του αιτήματος Ορίζουμε το αντισταθμιστικό κόστος Έστω x το αρχείο που ζητείται. Έστω ότι βρίσκεται στη θέση k στη λίστα και στη θέση j στη λίστα. Αν το x εμφανίζεται σε p αντιστροφές πριν την μετακίνηση του τότε υπάρχουν k-p-1 αρχεία που προηγούνται του x και στις δύο λίστες Η μετακίνηση του x δημιουργεί k-p-1 αντιστροφές και καταργεί p. Άρα το αντισταθμιστικό κόστος είναι
Εξετάζουμε το i-οστό αίτημα της ακολουθίας κόστος του για την εξυπηρέτηση του αιτήματος Ορίζουμε το αντισταθμιστικό κόστος Έστω x το αρχείο που ζητείται. Έστω ότι βρίσκεται στη θέση k στη λίστα και στη θέση j στη λίστα. Άρα το αντισταθμιστικό κόστος είναι To κόστος του για την πρόσβαση στο x είναι ίσο με j. Επιπλέον για τον έχουμε ότι : Κάθε δωρεάν αντιμετάθεση μειώνει το δυναμικό κατά 1. Κάθε πληρωμένη αντιμετάθεση αυξάνει το δυναμικό το πολύ κατά 1.
Εξετάζουμε το i-οστό αίτημα της ακολουθίας κόστος του για την εξυπηρέτηση του αιτήματος Ορίζουμε το αντισταθμιστικό κόστος Έστω x το αρχείο που ζητείται. Έστω ότι βρίσκεται στη θέση k στη λίστα και στη θέση j στη λίστα. Άρα το αντισταθμιστικό κόστος είναι To κόστος του για την πρόσβαση στο x είναι ίσο με j. Επιπλέον για τον έχουμε ότι : Κάθε δωρεάν αντιμετάθεση μειώνει το δυναμικό κατά 1. Κάθε πληρωμένη αντιμετάθεση αυξάνει το δυναμικό το πολύ κατά 1. Επομένως
Λόγος ανταγωνιστικότητας Για οποιαδήποτε ακολουθία με αιτήματα όπου κόστος του χωρίς τις πληρωμένες αντιμεταθέσεις αριθμός πληρωμένων αντιμεταθέσεων του αριθμός δωρεάν αντιμεταθέσεων του Έχουμε άρα Αν η λίστα έχει αρχεία τότε οπότε λαμβάνουμε το παρακάτω Για λίστα με αρχεία και οποιαδήποτε ακολουθία αιτημάτων