Unäre Kodierung - Unary coding

Unären Codierung oder das Unärsystem und manchmal auch als Thermometer - Code , ist eine Entropiecodierung dass A für natürliche Zahl , n , mit n Einsen gefolgt von einer Null (wenn natürliche Zahl , wie verstanden wird nicht negative ganze Zahl oder mit) n  - 1 Einsen gefolgt von einer Null (wenn die natürliche Zahl als streng positive ganze Zahl verstanden wird ). Zum Beispiel wird 5 als 111110 oder 11110 dargestellt. Einige Darstellungen verwenden n oder n  − 1 Nullen gefolgt von einer Eins. Die Einsen und Nullen sind ohne Beschränkung der Allgemeinheit austauschbar . Unäre Codierung ist sowohl ein präfixfreier Code als auch ein selbstsynchronisierender Code .

n (nicht negativ) n (streng positiv) Unärer Code Alternative
0 1 0 1
1 2 10 01
2 3 110 001
3 4 1110 0001
4 5 11110 00001
5 6 111110 000001
6 7 1111110 0000001
7 8 11111110 00000001
8 9 111111110 000000001
9 10 111111110 0000000001

Unäre Codierung ist eine optimal effiziente Codierung für die folgende diskrete Wahrscheinlichkeitsverteilung

für .

Bei der Symbol-für-Symbol-Codierung ist es optimal für jede geometrische Verteilung

für die k ≥ φ = 1,61803398879… der Goldene Schnitt ist , oder allgemeiner für jede diskrete Verteilung, für die

für . Obwohl es die optimale Symbol-für-Symbol-Codierung für solche Wahrscheinlichkeitsverteilungen ist, erreicht die Golomb-Codierung eine bessere Kompressionsfähigkeit für die geometrische Verteilung, da sie Eingabesymbole nicht unabhängig betrachtet, sondern die Eingaben eher implizit gruppiert. Aus dem gleichen Grund schneidet die arithmetische Codierung für allgemeine Wahrscheinlichkeitsverteilungen besser ab, wie im letzten Fall oben.

Heute verwendeter unärer Code

Beispiele für die Verwendung von unärem Code sind:

  • Im Golomb-Reis-Code wird eine unäre Codierung verwendet, um den Quotiententeil des Golomb-Codeworts zu codieren.
  • In UTF-8 wird eine unäre Codierung im führenden Byte einer Multi-Byte-Sequenz verwendet, um die Anzahl der Bytes in der Sequenz anzugeben, so dass die Länge der Sequenz ohne Prüfung der Fortsetzungsbytes bestimmt werden kann.
  • Sofort trainierte neuronale Netze verwenden unäre Codierung für eine effiziente Datendarstellung.

Unäre Kodierung in biologischen Netzwerken

Unäre Kodierung wird in den neuronalen Schaltkreisen verwendet, die für die Vogelgesangproduktion verantwortlich sind. Der Kern im Gehirn der Singvögel, der sowohl beim Lernen als auch bei der Erzeugung von Vogelgesang eine Rolle spielt, ist das HVC ( High Vocal Center ). Die Befehlssignale für verschiedene Töne im Vogelgesang gehen von verschiedenen Stellen im HVC aus. Diese Codierung funktioniert als Raumcodierung, die aufgrund ihrer inhärenten Einfachheit und Robustheit eine effiziente Strategie für biologische Schaltkreise ist.

Generalisierte unäre Kodierung

Eine verallgemeinerte Version der unären Kodierung wurde von Subhash Kak präsentiert , um Zahlen viel effizienter darzustellen als die standardmäßige unäre Kodierung. Hier ist ein Beispiel für eine verallgemeinerte unäre Codierung für ganze Zahlen von 1 bis 15, die nur 7 Bits erfordert (wobei drei Bits willkürlich anstelle eines einzelnen im Standard-Unär ausgewählt werden, um die Zahl anzuzeigen). Beachten Sie, dass die Darstellung zyklisch ist, wobei Marker verwendet werden, um höhere ganze Zahlen in höheren Zyklen darzustellen.

n Unärer Code Verallgemeinert unär
0 0 0000000
1 10 0000111
2 110 0001110
3 1110 0011100
4 11110 0111000
5 111110 1110000
6 1111110 0010111
7 11111110 0101110
8 111111110 1011100
9 111111110 0111001
10 11111111110 1110010
11 111111111110 0100111
12 111111111111110 1001110
13 11111111111110 0011101
14 111111111111110 0111010
fünfzehn 111111111111111110 1110100

Die verallgemeinerte unäre Codierung erfordert, dass der darzustellende Zahlenbereich im Voraus spezifiziert wird, da dieser Bereich die Anzahl der benötigten Bits bestimmt.

Siehe auch

Anmerkungen

Verweise