Codage zeta

Le codage zeta ou codage de Boldi-Vigna est un codage entropique inventé par Paolo Boldi et Sebastiano Vigna en 2003 et utilisé essentiellement en compression de graphes.

Le code zeta produit est un code préfixe et universel.

Principe

Le codage zeta d'un entier naturel N {\displaystyle N} dépend d'un paramètre k {\displaystyle k} et se fait en deux étapes :

  1. le codage de l'exposant de la plus grande puissance de 2 k {\displaystyle 2^{k}} inférieure ou égale à N {\displaystyle N} avec un codage unaire ;
  2. le codage de la différence entre N {\displaystyle N} et cette plus grande puissance avec un codage binaire tronqué.

Mathématiquement, pour coder un entier N , N [ ( 2 k ) h . . ( 2 k ) h + 1 ] {\displaystyle N,N\in \left[(2^{k})^{h}..(2^{k})^{h+1}\right]} , on code d'abord h = log 2 N k {\displaystyle h={\Big \lfloor }{\dfrac {\lfloor \log _{2}N\rfloor }{k}}{\Big \rfloor }} en unaire, puis N ( 2 k ) h {\displaystyle N-(2^{k})^{h}} en binaire tronqué avec un alphabet de taille ( 2 k ) h + 1 ( 2 k ) h {\displaystyle (2^{k})^{h+1}-(2^{k})^{h}}

On appelle ζ k {\displaystyle \zeta _{k}} la fonction associant à un entier naturel son code zeta paramétré par k {\displaystyle k} .

Le codage zeta de paramètre 1 (utilisant la fonction ζ 1 {\displaystyle \zeta _{1}} ) est équivalent au codage gamma et produit exactement les mêmes codes.

Codage des entiers relatifs

Comme pour les codages gamma, delta et omega, il est possible de coder des entiers relatifs avec le codage zeta en utilisant une bijection pour transformer les nombres négatifs ou nul en nombres strictement positifs avant le codage à proprement parler. Après le décodage, l'opération inverse doit être effectuée pour retrouver les entiers relatifs d'origine.

Longueur du code

Partie en code binaire tronqué

Le nombre N ( 2 k ) h {\displaystyle N-(2^{k})^{h}} codé en binaire tronqué nécessite un alphabet de taille ( 2 k ) h + 1 ( 2 k ) h = ( 2 k 1 ) 2 k h {\displaystyle (2^{k})^{h+1}-(2^{k})^{h}=(2^{k}-1)\cdot 2^{kh}} . Il peut être divisé en 2 k 1 {\displaystyle 2^{k}-1} groupes de 2 k h {\displaystyle 2^{kh}} symboles. Si k h {\displaystyle kh} bits de poids faible sont nécessairement écrits, l'indice du premier groupe peut-être tronqué à k 1 {\displaystyle k-1} bits de poids fort. Les 2 k 2 {\displaystyle 2^{k}-2} indices suivants sont exprimés avec k {\displaystyle k} bits de poids fort.

Le nombre N ( 2 k ) h {\displaystyle N-(2^{k})^{h}} appartient au premier groupe si :
N ( 2 k ) h 2 k h < 1 N 2 k h < 2 log 2 N k h = r < 1 {\displaystyle {\frac {N-(2^{k})^{h}}{2^{kh}}}<1\;\Longleftrightarrow \;{\frac {N}{2^{kh}}}<2\;\Longleftrightarrow \;\log _{2}N-kh=r<1} avec r {\displaystyle r} le reste de la division entière log 2 N = k h + r {\displaystyle \log _{2}N=kh+r} .

Partie en code unaire

Le nombre h {\displaystyle h} est codé sur h + 1 {\displaystyle h+1} bits.

En récapitulatif, le nombre N est codé sur L = ( k + 1 ) ( h + 1 ) { 1 si  r < 1 0 sinon {\displaystyle L=(k+1)(h+1)-{\begin{cases}1&{\text{si }}r<1\\0&{\text{sinon}}\end{cases}}} bits, avec h {\displaystyle h} et r {\displaystyle r} définis par la division entière log 2 N = k h + r {\displaystyle \log _{2}N=kh+r} .

Exemples

Représentation des premiers entiers naturels strictement positifs avec un codage zeta
Décimal Binaire Code gamma Code zeta
k = 1
Code zeta
k = 2
Code zeta
k = 3
Code zeta
k = 4
1 00001 1 1 10 100 1000
2 00010 010 010 110 1010 10010
3 00011 011 011 111 1011 10011
4 00100 00100 00100 01000 1100 10100
5 00101 00101 00101 01001 1101 10101
6 00110 00110 00110 01010 1110 10110
7 00111 00111 00111 01011 1111 10111
8 01000 00010000 0001000 011000 0100000 11000

Voir aussi

Bibliographie

  • Paolo Boldi, Sebastiano Vigna, « The WebGraph Framework II: Codes for the World-Wide Web », Proceedings of the Data Compression Conference, pp. 528, .
  • Paolo Boldi, Sebastiano Vigna Codes for the World Wide Web Internet Mathematics Vol. 2, No. 4: 407-429

Articles connexes

v · m
Sans perte
Codage entropique
Dictionnaire
Modélisation de contextes
Techniques hybrides
Autres Codage par plages
Transformations
Formats de fichiers
Avec pertes
Codage par transformation Compression par ondelettes
Autres
Transformations
  • icône décorative Portail de l’informatique