Hier ist eine konkrete Codierung, die jedes Symbol im Durchschnitt in weniger als 1 Bit darstellen kann:
Teilen Sie zuerst die Eingabezeichenfolge in aufeinanderfolgende Zeichenpaare auf (z. B. AAAAAAAABC wird zu AA | AA | AA | AA | BC). Dann codiere AA als 0, AB als 100, AC als 101, BA als 110, CA als 1110, BB als 111100, BC als 111101, CB als 111110, CC als 111111.
Ich habe nicht gesagt, was passiert, wenn es eine ungerade gibt Anzahl der Symbole, aber Sie können nur das letzte Symbol mit einer beliebigen Codierung codieren. Es ist eigentlich egal, wann die Eingabe lang ist.
Dies ist ein Huffman-Code für die Verteilung unabhängiger Symbolpaare und entspricht der Wahl von n = 2 in Yuvals Antwort. Größeres n würde zu noch besseren Codes führen (Annäherung an die Shannon-Entropie im Grenzbereich, wie er erwähnte).
Die durchschnittliche Anzahl von Bits pro Symbolpaar für die obige Codierung beträgt
810⋅ 810⋅ 1 + 3 ⋅ 810⋅ 110⋅ 3 + 110⋅810⋅ 4 + 4 ⋅ 110⋅110⋅ 6 = 1,92
dh1,92 / 2 = 0,96Bits pro Symbol, nicht so weit von der Shannon-Entropie entfernt, wie dies für eine solch einfache Codierung der Fall ist.