Comment fonctionne la compression « ZIP » ?

 

La compression de fichier a fortement été utilisé lors des communications « Modem » où les vitesses débutait à 1200 bps. Un fichier de 100 Ko pouvait prendre 10 minutes et + pour le téléchargement.

 

Le but de la compression était donc de réduire la taille du fichier, sans endommager le contenu. La méthode, était de trouver des similitudes dans le fichier, et les remplacer par un code. Ensuite, lors de la décompression, remplacer les codes par la bonne information. L’autre but, était d’intégrer plusieurs fichiers dans un même fichier, pour éviter la manipulation de plusieurs fichier (tout comme une disquette, qui est un seul médium de transport, mais peut contenir plusieurs choses).

 

Voici en exemple, la compression d’un texte pour expliquer le résultat de la compression sur un fichier. Nous désirons envoyer un fichier texte contenant le texte suivant :


Je suis propriétaire d’une maison. Ma maison est situé à Longueuil. Ma maison est grande. Je possède une belle télévision dans ma maison. J’ai une autre télévision dans le sous-sol de ma maison. Mon sous-sol est presque fini. Je pense terminé la rénovation du sous-sol de ma maison dans un mois. Je vais changer la télévision de mon sous-sol après la rénovation.



Ce texte a 8 lignes, 362 caractères (incluant les espaces). Chaque caractère pèse 16 bits, donc l’espace disque de ce texte est de 5.7ko

 

Identifions maintenant suite de caractères qui sont répétitive avec de la couleur :



Je suis propriétaire de ma maison. Ma maison est situé à Longueuil. Ma maison est grande.

Je possède une belle télévision dans ma maison. J’ai une autre télévision dans le sous-sol de ma maison. Mon sous-sol est presque fini.

Je pense terminé la rénovation du sous-sol de ma maison dans un mois. Je vais changer la télévision de mon sous-sol après la rénovation.


Regroupons des suites de caractères, pour les remplacer par un code :

                           code                                     pourcentage de réduction 

«  ma maison » = w$1 (incluant 1 espaces)         ** 70 % **

« Ma maison est  » = w$2 (incluant 1 espaces)     ** 78,6 % **

« télévision » = w$3                                          ** 70 % **

« la rénovation » = w$4                                     ** 76,9 % **

« sous-sol » = w$5                                            ** 62,5 % **

«  dans » = w$6 (incluant 1 espaces)                   ** 40 %  **

 

 Maintenant, ont remplace les suites de caractères par le code. Voici le résultat :

 

Je suis propriétaire dew$1. w$2situé à Longueuil. w$2grande. Je possède une belle w$3w$6w$1. J’ai une autre w$3 dans le w$5 dew$1. Mon w$5 est presque fini.

Je pense terminé w$4 du w$5 dew$1w$6 un mois. Je vais changer la w$3 de mon w$5 après w$4.


Dans le fichier final, ont inclus donc ce dictionnaire :

«  ma maison » = w$1

« Ma maison est  » = w$2

« télévision » = w$3

« la rénovation » = w$4

« sous-sol » = w$5

«   dans  » = w$6

 

 

Ce texte a 7 lignes, 247 caractères (incluant les espaces) + 94 caractères pour le dictionnaire de conversion . Chaque caractère pèse 16 bits, donc l’espace disque de ce texte est de 5.4ko. J’ai donc réduit la taille de ce texte d’environ 6 %. Il s'agit ici d'un exemple simple de compression pour réduire une taile de fichier, mais dans la réalité, des calculs mathématiques plus évolué sont utilisé pour réduire la taille des fichiers d'un facteur plus élevé que 6 %.