> elias | gamma | universal <
// Elias Gamma – universeller Code für positive Ganzzahlen ohne Parameter
Universeller Code
Funktioniert für jede positive Ganzzahl ohne zusätzliche Parameter.
Präfixfrei
Kein Code ist Präfix eines anderen – eindeutiges Dekodieren ist garantiert.
Asymptotisch optimal
Nähert sich der optimalen Kompression für bestimmte Verteilungen an.
>> Technische Infos
Wie Elias Gamma funktioniert:
Elias Gamma codiert eine positive Ganzzahl n so: 1) Bestimme N = ⌊log₂(n)⌋, 2) schreibe N Nullen als unären Code, 3) hänge die Binärdarstellung von n an (mit N+1 Bits). Das Ergebnis ist ein Code der Länge (2N+1) Bits.
Kodierungsbeispiele:
n=1: log₂(1)=0 Code: 1 (keine Nullen + "1") n=2: log₂(2)=1 Code: 010 (eine Null + "10") n=5: log₂(5)=2 Code: 00101 (zwei Nullen + "101") n=10: log₂(10)=3 Code: 0001010 (drei Nullen + "1010") Längenformel: 2⌊log₂(n)⌋ + 1
Warum Elias Gamma verwenden?:
- >Keine Parameter notwendig
- >Einfache Implementierung
- >Gut für kleine Ganzzahlen
- >Universeller Code mit wohldefinierten Eigenschaften
- >Wichtig in Informations- und Kompressionstheorie
>> Häufig gestellte Fragen
Was ist Elias-Gamma-Codierung?
Elias Gamma ist ein universeller Code für positive Ganzzahlen, entwickelt von Peter Elias. Jedes n wird mit der Bitlänge in unärer Form und anschließend der Binärdarstellung codiert. Er heißt „universell“, weil er ohne Kenntnis der Verteilung der Daten funktioniert.
Wann ist Elias Gamma effizient?
Elias Gamma ist besonders effizient für Ganzzahlen, die einer Potenzgesetz-Verteilung folgen (P(n) ∝ n^-2). Der Code benötigt ungefähr 2log₂(n)+1 Bits und eignet sich damit gut für kleine Werte, ist aber weniger effizient für sehr große Zahlen.
Gamma vs. Delta vs. Omega?
Elias Gamma verwendet 2log₂(n)+1 Bits. Delta verringert dies auf log₂(n)+2log₂(log₂(n)+1)+1 Bits, und Omega bringt weitere Vorteile für sehr große Zahlen. Gamma ist am einfachsten, Delta besser für mittlere Werte und Omega für große n.
Wo werden Elias-Codes eingesetzt?
Elias-Codes werden in der Informationstheorie, in der Forschung zur Datenkompression und in spezialisierten Kompressionsalgorithmen eingesetzt. Sie sind theoretisch wichtig als universelle Codes, werden aber in der Praxis seltener verwendet als z.B. Huffman- oder arithmetische Codierung.