Entropie 1 Entropie par octet

Transcription

Entropie 1 Entropie par octet
Univ. Lille 1 - Licence Informatique 2ème année
2014-2015
Codage de l'information
Entropie
Objectifs du TP
calculer l'entropie d'un chier considéré comme une source d'octets ;
puis considéré comme une source de couple d'octets ou seizets ;
estimer la taille des informations contenues dans ces chiers s'ils étaient codés de manière
optimale.
Matériel fourni
un squelette de programme.
1 Entropie par octet
Il s'agit de calculer l'entropie d'un chier considéré comme une source d'octets. La source est
donc dénie par
l'alphabet source S constitué des 256 octets (entiers de 0 à 255) ;
la distribution de probabilités P pour laquelle la probabilité d'un symbole (octet) s est
Pr(S = s) =
ns
,
N
où ns désigne le nombre d'occurences de s dans le chier, et N est la taille (en nombre
d'octets) du chier.
L'entropie d'un chier donne donc le nombre de bits d'information par octet.
Question 1 Quelle est la valeur maximale de l'entropie d'un chier ? Pour quels chiers est-elle
atteinte ?
Question 2 Vériez que l'entropie d'un chier f est donnée par la formule
P255
H(f) = log2 N −
s=0
ns log2 ns
.
N
Question 3 Après l'avoir renommé en entropie.ml, complétez le chier entropie-squelette.ml
pour obtenir un programme calculant l'entropie d'un chier.
En supposant le programme nommé entropie, voici un exemple d'utilisation de ce programme :
> ./ entropie entropie - squelette . ml
1378 octets lus .
Entropie =
4.728597 bits par octet .
Question 4 Appliquez votre programme pour calculer l'entropie de divers chiers :
1. chiers de texte en français (par exemple la fable de La Fontaine la cigale et la fourmi) ;
2. chiers de texte en anglais (par exemple le sonnet 18 de Shakespeare ;
3. chiers de programme en Caml (par exemple entropie.ml) ;
4. chiers image à diérents formats (par exemple codage.bmp et codage.png) ;
1
5. chiers compressés (par exemple entropie.zip obtenu en compressant entropie.ml) ;
6. chiers audios à diérents formats (par exemple un mp3 et un wav) ;
7. etc . . .
2 Entropie par couple d'octets
On veut maintenant calculer l'entropie d'un chier vu comme une source de couple d'octets
ou seizets .
La source est donc dénie par
l'alphabet source S constitué des 256 × 256 = 65536 couples d'octets ;
la distribution de probabilités P pour laquelle la probabilité d'un symbole (couple d'octets)
s est
n
s
,
N
où ns désigne le nombre d'occurences du couple s dans le chier, et N est la taille (en
Pr(S = s) =
nombre de couple d'octets) du chier, c'est-à-dire la taille en octets divisée par deux.
L'entropie d'un chier donne donc le nombre de bits d'information par couple d'octets.
Question 5 En vous inspirant du programme précédent, réalisez un programme nommé entropie2.ml
qui calcule cette entropie.
À titre d'exemple, voici l'achage que pourrait produire votre programme sur le chier entropie-squelette.ml.
> ./ entropie2 entropie - squelette . ml
689 paires d ' octets lue ( s ).
Entropie = 7.374386 bits par seizet .
Question 6 Utilisez votre programme pour calculer l'entropie de divers chiers.
Question 7 Y a-t-il une corrélation entre l'entropie par octet et l'entropie par couple d'octets d'un
chier ?
3 Estimation de la taille d'un chier optimalement codé
Question 8
Donnez un encadrement de la taille (en octets) d'un chier, si on code chacun de ses octets à l'aide
d'un codage optimal. (Utilisez le théorème du codage sans bruit).
Question 9 Modiez le programme entropie.ml pour qu'en plus de l'entropie par octet d'un chier,
il donne le gain en taille si on code les octets de ce chier avec un codage optimal. Par exemple
> ./ entropie entropie - squelette . ml
1378 octets lus .
Entropie =
4.728597 bits par octet .
Un codage optimal des octets reduirait la taille de ce fichier de 40.892532%.
Question 10 Observez les gains apportés par un codage optimal des octets sur divers chiers.
Question 11 Reprenez le même travail, pour les couples d'octets.
2

Documents pareils