Dans cet article, nous analyserons l'impact de Codage de Rice sur la société moderne. Codage de Rice est un sujet qui a gagné en pertinence ces dernières années, générant des débats et des controverses dans différents domaines. Tout au long de l'histoire, Codage de Rice a joué un rôle crucial dans l'évolution de l'humanité, influençant les aspects politiques, sociaux, économiques et culturels. Au cours de cet article, nous explorerons différentes perspectives sur Codage de Rice, abordant son importance dans le contexte actuel et son potentiel pour façonner l'avenir. De plus, nous examinerons les implications éthiques et morales que présente Codage de Rice, ainsi que ses conséquences possibles à long terme.
Le codage de Rice, codage de Golomb-Rice ou GPO2 (pour Golomb-power-of-2) est un codage entropique inventé par Robert F. Rice et James R. Plaunt en 1971 et utilisé essentiellement en compression de données.
Le code produit est un code préfixe.
Le codage de Rice d'un entier naturel dépend d'un paramètre et se fait en deux étapes :
Le codage de Rice de paramètre est strictement équivalent à un codage de Golomb de paramètre .
Mathématiquement, pour coder un entier , on code d'abord en unaire, puis en binaire.
La division par peut être implémentée par un décalage de bits vers la droite, et la seconde étape revient à répliquer les bits de poids faible de la valeur à coder. Ces opérations simples font que le codage de Rice est particulièrement adapté pour une implémentation rapide.
La longueur du code d'un entier en bits est : .
Le codage de Rice est adapté pour des données dans lesquelles les valeurs les plus faibles sont plus probables que les autres (mais où les autres peuvent malgré tout apparaitre).
Il est particulièrement apprécié en informatique car son implémentation est simple et rapide.
Le choix du paramètre utilisé lors du codage de Rice détermine le taux de compression qu'il est possible d'obtenir.
Le paramètre optimal pour coder valeurs sur un intervalle de taille est exprimé par :
Décimal | Binaire | Code de Rice k = 0 (Golomb, k = 1 ou unaire) |
Code de Rice k = 1 (Golomb, k = 2) |
Code de Rice k = 2 (Golomb, k = 4) |
Code de Rice k = 3 (Golomb, k = 8) |
Code de Rice k = 4 (Golomb, k = 16) |
---|---|---|---|---|---|---|
0 | 0000 | 0 | 0 0 | 0 00 | 0 000 | 0 0000 |
1 | 0001 | 10 | 0 1 | 0 01 | 0 001 | 0 0001 |
2 | 0010 | 110 | 10 0 | 0 10 | 0 010 | 0 0010 |
3 | 0011 | 1110 | 10 1 | 0 11 | 0 011 | 0 0011 |
4 | 0100 | 11110 | 110 0 | 10 00 | 0 100 | 0 0100 |
5 | 0101 | 111110 | 110 1 | 10 01 | 0 101 | 0 0101 |
6 | 0110 | 1111110 | 1110 0 | 10 10 | 0 110 | 0 0110 |
7 | 0111 | 11111110 | 1110 1 | 10 11 | 0 111 | 0 0111 |
8 | 1000 | 111111110 | 11110 0 | 110 00 | 10 000 | 0 1000 |
9 | 1001 | 1111111110 | 11110 1 | 110 01 | 10 001 | 0 1001 |
10 | 1010 | 11111111110 | 111110 0 | 110 10 | 10 010 | 0 1010 |
Le codage de Rice fait partie des codages entropiques les plus utilisés, lorsque les données à compresser présentent une distribution géométrique (ou approchante) et que la vitesse de l'algorithme est un critère important.
On le retrouve notamment dans de nombreux algorithmes de compression multimédia : audio (FLAC, Monkey's Audio, MPEG-4 ALS, ALAC...), vidéo, image... et dans certains algorithmes de compression d'index[1] (pour les moteurs de recherche).