La codificació unitària, o el sistema numeral unari, és una codificació d'entropia que representa un nombre natural, n, amb n unitats seguides d'un zero (si el terme nombre natural s'entén com un enter no negatiu) o amb n−1 unitats seguides d'un zero (si el terme nombre natural s'entén com un enter estrictament positiu). La longitud del codi d'un nombre unari seria, per tant, n+1 amb aquesta primera definició, o n amb aquesta segona definició. El codi unari quan és vertical es comporta com el mercuri en un termòmetre que es fa més alt o més curt a mesura que n es fa més gran o més petit, i per això de vegades s'anomena codi de termòmetre. Una representació alternativa utilitza n o n−1 zero seguit d'un u, intercanviant efectivament els uns i els zeros, sense pèrdua de generalitat. Per exemple, els primers deu codis unaris són: Codi unariAlternativan (no negatiu)n (estrictament positiu)01011001121100012311100001341111000001451111100000015611111100000001671111111000000001781111111100000000018911111111100000000001910 La codificació unitària és òptimament eficient codificació per a la següent distribució de probabilitat discreta

per .

En la codificació símbol per símbol, és òptima per a qualsevol distribució geomètrica

per a la qual k ≥ φ = 1.61803398879..., la proporció àuria, o, més generalment, per a qualsevol distribució discreta per a la qual

per Tot i que és la codificació símbol per símbol òptima per a aquestes distribucions de probabilitat, la codificació Golomb aconsegueix una millor capacitat de compressió per a la distribució geomètrica perquè no considera els símbols d'entrada de manera independent, sinó que agrupa les entrades implícitament. Per la mateixa raó, la codificació aritmètica funciona millor per a distribucions de probabilitat generals, com en l'últim cas anterior.

La codificació unitària és tant un codi sense prefix com un codi autosincronitzant.

Codi unari en ús avui dia Exemples d'usos de codi unari inclouen:

En el codi Golomb Rice, la codificació unària s'utilitza per codificar la part quocient de la paraula de codi Golomb. En UTF-8, la codificació unitària s'utilitza al byte inicial d'una seqüència de diversos bytes per indicar el nombre de bytes de la seqüència, de manera que la longitud de la seqüència es pugui determinar sense examinar els bytes de continuació. Les xarxes neuronals entrenades instantàniament utilitzen codificació unitària per a una representació eficient de les dades.

Codificació unària en xarxes biològiques La codificació unitària s'utilitza en els circuits neuronals responsables de la producció del cant dels ocells. El nucli del cervell dels ocells cantaires que juga un paper tant en l'aprenentatge com en la producció del cant dels ocells és el HVC (centre vocal alt). Els senyals de comandament per a diferents notes del cant dels ocells emanen de diferents punts del HVC. Aquesta codificació funciona com a codificació espacial, que és una estratègia eficient per als circuits biològics a causa de la seva simplicitat i robustesa inherents.

Codis unaris de longitud d'execució estàndard Totes les dades binàries es defineixen per la capacitat de representar nombres unaris en longituds de sèrie alternes d'1 i 0. Això s'ajusta a la definició estàndard d'unari, és a dir, N dígits del mateix nombre 1 o 0. Totes les longituds de sèrie, per definició, tenen almenys un dígit i, per tant, representen nombres enters estrictament positius . nCodi RLCodi següent1102110031110004111100005111110000061111110000007111111100000008111111110000000091111111110000000001011111111110000000000...

Codis unaris sense prefixos descodificables de manera única A continuació es mostra un exemple de codis unaris descodificables de manera única que no és un codi de prefix i no és descodificable instantàniament (cal anticipació per descodificar) nCodi unariAlternativa1102100131000114100001115100000111161000000111117100000001111118100000000111111191000000000111111111010000000000111111111...

Codis unaris simètrics Els següents codis unaris simètrics es poden llegir i descodificar instantàniament en qualsevol direcció: Codi unariAlternativan (no negatiu)n (estrictament positiu)10010011120101012301101001340111010001450111101000015601111101000001670111111010000001780111111101000000018901111111101000000001910...

Codis unaris canònics Per a valors unaris on es coneix el màxim, es poden utilitzar codis unaris canònics que són de naturalesa una mica numèrica i diferents dels codis basats en caràcters. La n numèrica més gran és '0' o '-1' ( ) i el nombre màxim de dígits, i després per a cada pas es redueix el nombre de dígits en un i s'augmenta/disminueix el resultat en una '1' numèrica. nCodi unariAlternativa11020110300111040001111050000111110600000111111070000001111111080000000111111110900000000111111111010000000000111111111

Codificació unitària generalitzada Subhash Kak va presentar una versió generalitzada de la codificació unària per representar nombres de manera molt més eficient que la codificació unària estàndard. Aquí teniu un exemple de codificació unària generalitzada per a nombres enters del 0 al 15 que només requereix 7 bits (on es trien arbitràriament tres bits en lloc d'un sol en unari estàndard per mostrar el nombre). Cal tenir en compte que la representació és cíclica, on s'utilitzen marcadors per representar nombres enters més alts en cicles més alts. nCodi unariUnària generalitzada00000000011000001112110000111031110001110041111001110005111110111000061111110001011171111111001011108111111110101110091111111110011100110111111111101110010111111111111100100111121111111111111010011101311111111111111000111011411111111111111001110101511111111111111101110100

Referències

Categoria:Codificació Categoria:Compressió de dades