Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Codage binaire tronqué — Wikipédia
Codage binaire tronqué — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

Le codage binaire tronqué (aussi appelé « economy code » ou « code phase-in » dans les compresseurs de la famille LZ) est un codage entropique utilisé essentiellement en compression de données et s'appuyant sur la base 2[1],[2]

Il est plus généralement utilisé pour coder de façon efficace en termes de longueur, un alphabet dont la taille n'est pas une puissance de 2, mais dont les symboles sont distribués selon une loi aléatoire uniforme.

Le code résultant est équivalent au code de Huffman canonique qui est obtenu en considérant que les différents symboles de l'alphabet sont équiprobables.

Principe

[modifier | modifier le code]

Contrairement au codage binaire de taille fixe, le codage binaire tronqué utilise un code préfixe à longueur variable. La longueur de ce code est toujours inférieure ou égale à celle du code binaire optimal équivalent, qui est de ⌈ log 2 ⁡ N ⌉ {\displaystyle \lceil \log _{2}N\rceil } {\displaystyle \lceil \log _{2}N\rceil } où N {\displaystyle N} {\displaystyle N} est la taille de l'alphabet à coder.

Pour un alphabet de taille N = 2 k + b {\displaystyle N=2^{k}+b} {\displaystyle N=2^{k}+b}, le codage binaire tronqué sépare l'ensemble des valeurs à coder en deux groupes : les N − 2 b = 2 k − b = 2 k + 1 − N {\displaystyle N-2b=2^{k}-b=2^{k+1}-N} {\displaystyle N-2b=2^{k}-b=2^{k+1}-N} premières valeurs d'une part, et les 2 b {\displaystyle 2b} {\displaystyle 2b} valeurs restantes d'autre part. Les premières valeurs sont codées sur k = ⌊ log 2 ⁡ N ⌋ {\displaystyle k=\lfloor \log _{2}N\rfloor } {\displaystyle k=\lfloor \log _{2}N\rfloor } bits, tandis que les secondes sont codées sur k + 1 = ⌈ log 2 ⁡ N ⌉ {\displaystyle k+1=\lceil \log _{2}N\rceil } {\displaystyle k+1=\lceil \log _{2}N\rceil } bits.

Les codes utilisés pour coder ces dernières valeurs sont les 2 b {\displaystyle 2b} {\displaystyle 2b} derniers codes de longueur k + 1 {\displaystyle k+1} {\displaystyle k+1} ; il n'y a donc pas de continuité entre les valeurs codées sur k {\displaystyle k} {\displaystyle k} bits et celles codées sur k + 1 {\displaystyle k+1} {\displaystyle k+1} bits. C'est cette façon de coder qui fait du code binaire tronqué un code préfixe.

Gains en termes d'espace par rapport au codage binaire

[modifier | modifier le code]

Dans le pire des cas, un code binaire tronqué est de la même longueur que le code binaire équivalent. Lorsque la taille de l'alphabet est une puissance de 2, ce pire cas est systématique, et les codes produits sont identiques. On peut ainsi voir le codage binaire comme un cas particulier de codage binaire tronqué, avec un alphabet dont la taille est une puissance de 2.

Dans tous les autres cas, le gain est de 1 bit pour chaque valeur parmi les 2 ⌈ log 2 ⁡ N ⌉ − N {\displaystyle 2^{\lceil \log _{2}N\rceil }-N} {\displaystyle 2^{\lceil \log _{2}N\rceil }-N} premières de l'alphabet, et il est nul pour toutes les autres valeurs.

Le gain global G {\displaystyle G} {\displaystyle G} pour coder une source de longueur l {\displaystyle l} {\displaystyle l} sur un alphabet A {\displaystyle A} {\displaystyle A} de taille N {\displaystyle N} {\displaystyle N} peut être exprimé par :

G = l × ∑ i = 0 N − 1 p ( A i ) δ i {\displaystyle G=l\times \sum _{i=0}^{N-1}p(A_{i})\delta _{i}} {\displaystyle G=l\times \sum _{i=0}^{N-1}p(A_{i})\delta _{i}}

Où p ( x ) {\displaystyle p(x)} {\displaystyle p(x)} est la probabilité d'apparition de la valeur x {\displaystyle x} {\displaystyle x} et { δ x = 1 , x < 2 ⌈ log 2 ⁡ N ⌉ − N δ x = 0 , x ≥ 2 ⌈ log 2 ⁡ N ⌉ − N {\displaystyle {\begin{cases}{\begin{aligned}&\delta _{x}=1,x<2^{\lceil \log _{2}N\rceil }-N\\&\delta _{x}=0,x\geq 2^{\lceil \log _{2}N\rceil }-N\end{aligned}}\end{cases}}} {\displaystyle {\begin{cases}{\begin{aligned}&\delta _{x}=1,x<2^{\lceil \log _{2}N\rceil }-N\\&\delta _{x}=0,x\geq 2^{\lceil \log _{2}N\rceil }-N\end{aligned}}\end{cases}}}

Lorsque la distribution des valeurs est connue et non uniforme, il est intéressant de réorganiser l'alphabet pour que les valeurs ayant la plus forte probabilité d'apparition soient au début de celui-ci.

Exemples

[modifier | modifier le code]

Codage d'un alphabet de taille 5

[modifier | modifier le code]

Le code binaire optimal pour un alphabet de taille 5 est de longueur ⌈ log 2 ⁡ 5 ⌉ = 3 {\displaystyle \lceil \log _{2}5\rceil =3} {\displaystyle \lceil \log _{2}5\rceil =3}.

On peut donc coder sur 2 bits les 2 3 − 5 = 3 {\displaystyle 2^{3}-5=3} {\displaystyle 2^{3}-5=3} premières valeurs, et sur 3 bits les valeurs restantes.

Représentation des premiers entiers naturels en binaire optimal et en binaire tronqué
Décimal Binaire optimal
(sur 3 bits)
Binaire tronqué
0 000 00
1 001 01
2 010 10
3 011 110
4 100 111

Dans le cas d'une distribution uniforme, le codage binaire tronqué sur un alphabet de taille 5 offre un gain moyen de 0,6 bits par caractère, soit 20 %.

Codage d'un alphabet de taille 7

[modifier | modifier le code]

Le code binaire optimal pour un alphabet de taille 7 est de longueur ⌈ log 2 ⁡ 7 ⌉ = 3 {\displaystyle \lceil \log _{2}7\rceil =3} {\displaystyle \lceil \log _{2}7\rceil =3}.

On peut donc coder sur 2 bits la 2 3 − 7 = 1 {\displaystyle 2^{3}-7=1} {\displaystyle 2^{3}-7=1} première valeur, et sur 3 bits les valeurs restantes.

Représentation des premiers entiers naturels en binaire optimal et en binaire tronqué
Décimal Binaire optimal
(sur 3 bits)
Binaire tronqué
0 000 00
1 001 010
2 010 011
3 011 100
4 100 101
5 101 110
6 110 111

Dans le cas d'une distribution uniforme, le codage binaire tronqué sur un alphabet de taille 7 offre un gain moyen de 0,14 bits par caractère, soit 4,76 %.

Utilisations

[modifier | modifier le code]

Le codage binaire tronqué est utilisé pour coder un alphabet dont la taille n'est pas une puissance de 2, lorsque la longueur du code est critique. Dans le cas général (lorsque la vitesse est plus importante que la longueur du code), le codage binaire est préféré car il est plus simple et plus rapide à manipuler (notamment car sa taille fixe permet un indiçage immédiat).

Le codage binaire tronqué est en particulier utilisé pour le codage de la position lors d'un codage de Golomb ou d'un codage zeta.

Variation

[modifier | modifier le code]

Une version modifiée tire profit de la loi des grands nombres. Dans beaucoup d'applications, il y a plus de grands nombres que de petits nombres et il devient préférable d'économiser un bit pour les nombres élevés au lieu des nombres proches de zéro. On encode alors le nombre N {\displaystyle N} {\displaystyle N}-n au lieu de n.

Références

[modifier | modifier le code]
  1. ↑ Eastman, Willard L, et al. (août 1984) Apparatus and Method for Compressing Data Signals and Restoring the Compressed Data Signals, brevet américain 4,464,650.
  2. ↑ Acharya, Tinku et Já Já, Joseph F. (octobre 1996), An on-line variable-length binary encoding of text, Information Sciences, vol 94 no 1-4, p. 1-22.

Voir aussi

[modifier | modifier le code]
  • Section "5.3.4.2: Codes phase-in" dans http://stevenpigeon.org/Publications/publications/phd.pdf : Steven Pigeon — Contributions à la compression de données — Thèse de doctorat, Université de Montréal, Déc 2001


Articles connexes

[modifier | modifier le code]
  • Codage entropique
  • Compression de données
v · m
Techniques de compression de données
Sans perte
Codage entropique
  • Unaire
  • Binaire tronqué
  • Gamma
  • Delta
  • Omega
  • Zeta
  • Fibonacci
  • Levenshtein
  • Even-Rodeh
  • Stout
  • Golomb
  • Rice
  • Exp-Golomb
  • Shannon-Fano
  • Huffman
  • Shannon-Fano-Elias (en)
  • Arithmétique
  • Par intervalle
Dictionnaire
  • LZ77 et LZ78
  • LZSS
  • Lempel-Ziv-Welch
  • Lempel-Ziv-Oberhumer
Modélisation de contextes
  • Modélisation de Markov dynamique (DMC)
  • Prédiction par reconnaissance partielle (PPM)
  • Pondération de contextes (CM)
  • Pondération de contextes arborescents (en) (CTW)
Techniques hybrides
  • Implode
  • Deflate
  • LZP
  • LZMA
  • ROLZ
Autres Codage par plages
Transformations
  • Codage différentiel (Delta)
  • Transformée en étoile
  • Move-to-front (MTF)
  • Transformée de Burrows-Wheeler (BWT)
  • Transformée par substitution de mots (WRT)
  • BCJ2
Formats de fichiers
  • 7z
  • ACE
  • ARC
  • ARJ
  • B1 (en)
  • bzip2
  • CAB
  • gzip
  • LHA / LZH
  • RAR
  • UHA
  • XZ
  • Z
  • Zip
Avec pertes
Codage par transformation Compression par ondelettes
Autres
  • Modulation par impulsions et codage différentiel adaptatif (ADPCM)
  • Compression fractale
Transformations
  • Transformée de Karhunen-Loève (KLT)
  • Transformée en cosinus discrète (DCT)
  • Transformation de Fourier discrète (DFT)
  • Transformée en ondelettes discrète (DWT)
  • icône décorative Portail de l'informatique théorique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Codage_binaire_tronqué&oldid=217956062 ».
Catégories :
  • Codage entropique
  • Code préfixe
Catégories cachées :
  • Article contenant un appel à traduction en anglais
  • Portail:Informatique théorique/Articles liés
  • Portail:Informatique/Articles liés
  • Portail:Mathématiques/Articles liés
  • Portail:Sciences/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id