Es gibt verschiedene Möglichkeiten, die Frage zu interpretieren. Was ich denke , dass Sie fragen könnten, ist, dass Sie eine Folge von Buchstaben in einem Alphabet wo . Sie möchten dies in möglichst wenigen Bits speichern. Wir gehen davon aus, dass die Buchstaben im Alphabet gleichmäßig verteilt sind.Σ | Σ | = 80nΣ|Σ|=80
Der informationstheoretische Speicherplatz, der zum Speichern benötigt wird, istBits. Mit der arithmetischen Codierung können Sie dies in linearer Zeit tun, indem Sie Bits des Zwischenraums verwenden. (Denken Sie daran, das ist der Logarithmus der Anzahl der Symbole in Bits! Wenn die Größe der Sequenz in ein Maschinenwort passt, ist als Zwischenspeicher höchstens eine konstante Anzahl von Maschinenwörtern erforderlich.)nlog2|Σ|O(logn)
Das ist also ziemlich gut. Aber was ist, wenn wir einen wahlfreien Zugriff wünschen?
Es stellt sich heraus, dass es möglich ist. Die erste Technik dazu wurde erst vor etwa vier Jahren entdeckt. Wir können die Sequenz in speichern Bits, so dass das Lesen oder Schreiben eines Eintrags Zeit benötigt. Wenn Sie darüber nachdenken, ist dies ein bemerkenswertes Ergebnis, da dies bedeutet, dass ein Computer, der mit einem beliebigen Radix arbeitet, in gewissem Sinne einem binären Computer entspricht.O ( 1 )nlog2|Σ|O(1)
Hier ist das Papier: Jewgenij Dodis, Mihai Pătraşcu und Mikkel Thorup, Eine Alternative zur arithmetischen Codierung mit lokaler Dekodierbarkeit , STOC 2010.
Denken Sie übrigens an den Namen Mihai Pătraşcu. Er war und ist das, was wir einem modernen Évariste Galois am nächsten kommen. Er starb sehr jung an einem Gehirntumor im Alter von 29 Jahren. In seiner kurzen Karriere als Informatiker revolutionierte seine Arbeit jedoch das Gebiet der Analyse von Algorithmen auf eine Weise, deren Verständnis Jahrzehnte dauern wird.