Esistono diversi modi per interpretare la domanda. Quello che penso che potresti chiederti è che hai una sequenza di lettere in un alfabeto dove . Si desidera memorizzare questo nel minor numero possibile di bit. Supponiamo che le lettere dell'alfabeto siano distribuite uniformemente.nΣ| Σ | = 80
La quantità teorica di spazio richiesta per memorizzare questo èbit. Usando la codifica aritmetica, puoi farlo in tempo lineare, usando bit di spazio intermedio. (Ricorda, questo è il logaritmo del numero di simboli, in bit! Se la dimensione della sequenza si adatta a una parola macchina, la memoria intermedia richiesta è al massimo un numero costante di parole macchina.)nlog2| Σ |O ( logn )
Quindi va abbastanza bene. E se vogliamo un accesso casuale?
Si scopre che può essere fatto. La prima tecnica per farlo è stata scoperta circa quattro anni fa. Possiamo memorizzare la sequenza inbit, in modo tale che leggere o scrivere qualsiasi voce richieda tempo. Se ci pensate, questo è un risultato notevole, perché significa che un computer che funziona con qualsiasi radix è, in un certo senso, equivalente a un binario.nlog2| Σ |O ( 1 )
Ecco l'articolo: Yevgeniy Dodis, Mihai Pătraşcu e Mikkel Thorup, un'alternativa alla codifica aritmetica con decodificabilità locale , STOC 2010.
A proposito, ricorda il nome Mihai Pătraşcu. Era ed è la cosa più vicina a un moderno Évariste Galois. Morì molto giovane, di un tumore al cervello all'età di 29 anni. Ma nella sua breve carriera di informatico, il suo lavoro ha rivoluzionato il campo dell'analisi degli algoritmi in modi che impiegheranno decenni a comprendere appieno.