8.4. ACCÈS SÉQUENCIELS DANS UNE LISTE 41
Quelques algorithmes online déterministes
— FIFO (First in, First out) : La première page chargée est la première supprimée.
— LFU (Least frequently used) : Calcul la fréquence des pages, supprimer celle de préquence
la plus petite.
— LRU (Least recently accessed) : Même que LFU mais récemment.
Proposition 8.3. Tout algorithme online déterministe est au mieux k-compétitif.
Preuve Pour tout algorithme online k-page déterministe, on peut construire des séquence
dont la prochaine page est exactement celle que veut supprimer l’algorithme. Alors, pour chaque
consultation, il faut faire entrer une nouvelle page. Cependant, l’algorithme optimal offline voit
exactement la dernière pas qui sera consultée, donc il n’aura pas besoin de faire entrer d’autre
page avant de k-tours. L’online est donc au mieux k-compétitif.
La stratégie de construire les séquences qui "font mal" les algorithmes online s’appelle
l’adversaire. On verra dans les exercices que LFU n’est pas compétitif,
Proposition 8.4. LRU et FIFO sont k−compétitifs.
La proposition est évidente car si on paie kpour les deux cas, c’est-à-dire kpages différentes
sont entrées. donc OP T paie au moins 1.
8.4 Accès séquenciels dans une liste
Problème 8.3. Soit Lune liste (simplement) chainée. Minimiser le coût pour traiter une suite
d’accès, sachant qu’on peut réorganiser L.
Analyse L’accès à la clé en position icoûte iopérations. Un échange de clé voisines coûte
1 et l’amène la clé en tête de liste coûte 0.
Théorème 8.1. La recherche de la séquence d’opérations optimale offline est N P-dure.
Algorithmes Il existe quelques algorithmes online :
— Transpose : Chaque fois qu’une clé est demandée, on l’avance d’une place.
— Compteur : Après qu’une clé est demandée, on classe les clés par nombre d’accès dé-
croissants.
— Move-to-front : Chaque fois qu’une clé est demandée, on le met en tête de liste.
En fait, Transpose et Compteur sont non compétitifs.
Proposition 8.5. Move-to-Front est 2-compétitif.
Preuve On considère la fonction potentiel φle nombre d’inversions entre la liste de MTF
et celle d’OPT.
Posons :
OPTi≥k+ 1
Ai=k+m+ 1
avec Eile nombre d’échanges effectués par OPT, kle nombre d’éléments devant ri(l’élément
demandé) dans les 2 listes, let msont ceux qui sont devant ridans l’une mais pas dans l’autre.
Quand Move-To-Front sert rialors minversions a détruit et au plus kinversions construit.