Codage zeta

Restez toujours informé : suivez-nous sur Google (☆)

Introduction

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 dépend d'un paramètre k et se fait en deux étapes :

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

Mathématiquement, pour coder un entier , on code d'abord en unaire, puis N − (2) en binaire tronqué avec un alphabet de taille (2) − (2)

On appelle ζk la fonction associant à un entier naturel son code zeta paramétré par k.

Le codage zeta de paramètre 1 (utilisant la fonction ζ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.

Exemples

DécimalBinaireCode gammaCode zeta

k = 1
Code zeta

k = 2
Code zeta

k = 3
Code zeta

k = 4
100001000 00 000 000
20001010 010 00 100 0100 0010
30001110 110 10 110 0110 0011
400100110 00110 0010 0000 1000 0100
500101110 01110 0110 0010 1010 0101
600110110 10110 1010 0100 1100 0110
700111110 11110 1110 0110 1110 0111
8010001110 0001110 00010 100010 000000 1000