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.