1

Ma question est simple et sa réponse plus compliquée !
Juste dans le souci d'en savoir toujours et toujours plus, ce coup ci je pose la question suivante :
Comment peut-on bien réduire la taille d'un programme ou d'un fichier sans qu'en retour une seule donnée sois altérée ? J'aimerai savoir un petit peu comment fait ziplib ou equivalent pour compresser les données.
:D

2

desole mais comment on cree un nouveau sujet de discution?

3

lol! "new sujet de discuction

tu vas tout en bas et tu verras!

4

On peut compresser en reperant des repitions (repetion du meme octet, ou meme chaine qui se repete), ou en codant les octets les plus frequents sur moins de bits (Huffman), et il encore y avoir d'autres techniques, mais c'est tout ce que je connais ...

5

Ben apprends deja la methode de huffman. C pas si mal.
C en fait une technique de codage (et pas de compression !) des données.
T'as certaines probabilite pour des mots, et tu codes les mots les - frequents par - de bits.

Mais on peut aussi utiliser les sources de markov (ie. non pas code l'apparition d'un mot, mais l'apparition d'un mot sachant son suivant).

Mais tout ca ca augmente la base de donnees, et faut trouver des compromis.

(Je parle codage, pas compression).

6

mais si tu veux conprésser sor3, je te conseille runc, shrnklib, et il sera tout petit !!

@+

7

PpHd : Toutes les méthodes de compression non-destructives ne sont que des manières optimisées de coder l'information binaire...

Coder de manière à diminuer la taille = compresser...
Je me trompe... Y'a peut-être une nuance que je ne saisis pas ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

8

Huffman > Algorithme qui prend en compte la fréquence d'un octet : il faut faire un arbre binaire avec tous les caractères et leur frequence, on tri l'arbre, et sa structure donne un codage de longeur variable pour chaque caractère. Ce qui est cool, c'est qui plus un octet est présenté , plus le nombre de bit qui le code sera petit. Mais dans le fichier compressé il faut passer la table du codage des caractères.

LZW > c'est la éthode avec dictionnaire, ou au lieu de réécrir une chaine récurrente dans un fichier, on fait référence a un index dans un dictionnaire. L'avantage est que le dico se reconstruit automatiquement a la décompression, c'est pas la peine de le fournir avec le fichier compréssé.

> ziplib utilise huffman, mais le vrai format zip utilise un dérivé du LZW ( le lzw a de très gros copyrights très chers, c'est très performant, mais seuls quelques rares trucs l'utilisent, comme le GIF), lz77 ou lz78 je crois. RAR aussi utilise ca, mais en optimisant certains trucs...

Ibrahim

9

en bref c'est hyper compliqué quoi !
:D

10

en fait avec un bon bouquin ou une bonne doc, ca va a peu près

11

Le format WinZip a une couche de compression qui utilise Shanon-Fano. C'est un comme Huffman, en fait la différence est dans la façon de construire l'arbre binaire.


"LZW (...) L'avantage est que le dico se reconstruit automatiquement a la décompression, c'est pas la peine de le fournir avec le fichier compréssé."

Petite correction : la méthode que tu décrit pour Huffman est dite "semi adaptative". Mais il existe un algo d'Huffman dit "adaptatif", qui :
1- est beaucoup plus performant que le "semi adaptatif",
2- ne nécessite pas l'enregistrement de la table d'occurences dans le compressé.
[edit]Edité par Thibaut le 15-06-2001 à 19:06:01[/edit]
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.