Il existe plusieurs façons d'interpréter la question. Je pense que vous demandez peut-être que vous avez une séquence den lettres dans un alphabet Σ où | Σ | = 80. Vous souhaitez stocker cela dans le moins de bits possible. Nous supposerons que les lettres de l'alphabet sont uniformément réparties.
La quantité d'espace théorique nécessaire pour stocker ceci est nJournal2| Σ |morceaux. En utilisant le codage arithmétique, vous pouvez le faire en temps linéaire, en utilisantO ( logn )bits d'espace intermédiaire. (N'oubliez pas, c'est le logarithme du nombre de symboles, en bits! Si la taille de la séquence tient dans un mot machine, le stockage intermédiaire requis est au maximum un nombre constant de mots machine.)
C'est donc plutôt bien. Mais qu'en est-il si nous voulons un accès aléatoire?
Il s'avère que cela peut être fait. La première technique à le faire n'a été découverte qu'il y a environ quatre ans. Nous pouvons stocker la séquence dansnJournal2| Σ |bits, de sorte que la lecture ou l'écriture d' une entréeO ( 1 )temps. Si vous y réfléchissez, c'est un résultat remarquable, car cela signifie qu'un ordinateur qui fonctionne avec n'importe quel radix est, dans un sens, équivalent à un binaire.
Voici l'article: Yevgeniy Dodis, Mihai Pătraşcu et Mikkel Thorup, An Alternative to Arithmetic Coding with Local Decodability , STOC 2010.
Soit dit en passant, rappelez-vous le nom de Mihai Pătraşcu. Il était et est la chose la plus proche que nous ayons d'un Évariste Galois moderne. Il est décédé très jeune, d'une tumeur au cerveau à l'âge de 29 ans. Mais au cours de sa courte carrière d'informaticien, son travail a révolutionné le domaine de l'analyse des algorithmes d'une manière qui prendra des décennies à comprendre pleinement.