Peut-on créer un logiciel de compression illimitée ?
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,*
Quelques bases :
WinZip ( ou équivalent ) marchent bien avec des fichiers hétérogènes ( genre fichiers texte ) , mais pas avec des fichiers homogènes ( genre archives ou MP3, mpeg etc )
Et aussi WinZip compresse en une seule fois ;
Donc, l'idée serait de transformer un fichier WinZip ( homogène ) en fichier heterogène ( recompressible )
Merci d'avance.*
** Éléments basiques de politesse ajoutés par la Modération CCM
- Peut-on créer un logiciel de compression illimitée ?
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un lien pour partager des photos - Guide
- Logiciel de sauvegarde gratuit - Guide
- Money logiciel - Télécharger - Comptabilité & Facturation
9 réponses
Il y a longtemps, j'avais essayé de compresser des fichiers avec gzip option maximale (option 9 je crois).
Ensuite, j'essayais de compresser les fichiers compressés. J'obtenais toujours quelque chose de plus gros.
Même en combinant deux méthodes comme gzip suivi de hoffman ou inversement, je ne crois pas qu'on pourrait aller trèes loin.
Bonjour,
Pour répondre à la question initiale, on ne peut pas indéfiniment compresser, c'est un résultat en théorie de l'information (voir entropie au sens de Shannon).
Sans entrer dans les détails mathématiques (car il s'agit d'une branche complète de l'informatique théorique), l'entropie décrit la quantité d'information correspond à la quantité d'information contenue ou fournie par une source d'information.
Cela signifie que pour toute information, si tu envisages une compression sans perte, l'entropie montre qu'il existe une borne inférieure en nombre de bits pour compresser un fichier sans perte.
Intuitivement, s'il était possible de compresser indéfiniment une suite arbitraire de bits, cela signifierait qu'on peut réduire toute information à un seul bit. Or un bit encode au plus deux information (vrai ou faux) ce qui est évidemment insuffisant.
C'est un peu derrière cette idée qu'a été imaginé le score (fictif) de Weissman dans la série HBO Silicon Valley ;-)
Bonne chance
Plus précisément, on ne peut pas compresser sans perte tous les fichiers. Tout algorithme de compression reduit la taille de certains fichiers, et augmente la taille d'autres fichiers.
Si un algorithme réduisait la taille de tous les fichiers d'une taille inférieure à une taille donnée, plusieurs fichiers compressés seraient identiques.
Tout l'art de la compression, c'est de concevoir un algorithme efficace pour les fichiers qu'on anticipe de traiter.
Bonjour,
La plus grande compression de fichier déjà compressés (JPG etc.) que je connaisse est paq8px sur le forum encode.su
Ça a surement du être étudié déjà, mais bonne chance pour découvrir mieux.
@+
Salut fabul, PAQ est vraiment intéressant, je ne connaissais pas.
Merci pour cette référence.
Le site officiel du créateur d'origine est : http://mattmahoney.net/dc/
L'article Wikipedia est aussi intéressant à lire : https://en.wikipedia.org/wiki/PAQ
Le code est effectivement désormais maintenu par des contributeurs de encode.su, la dernière version semble être paq8pxd_v5 : https://encode.su/threads/1464-Paq8pxd-dict?p=32898&viewfull=1#post32898
Salut,
Cette version de l'application paq8px est la plus récente (2023)
https://encode.su/threads/342-paq8px?p=79234&viewfull=1#post79234
(À utiliser en invite de commande)
Certaines anciennes versions comme la version v69 que j'ai utilisée pas beaucoup mais longtemps pouvait être utilisée en Drag & Drop (Glissé déposé) d'un dossier ou fichier sur le .exe) pour compresser/décompresser.
Il faut toujours décompresser avec la mème version qui a faite la compression.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionÀ explorer:
https://openclassrooms.com/forum/sujet/rotation-a-90-dun-arbre-binaire
Peut-être construire un arbre binaire balancé sous forme de tableau.
Bonjour,
La question m'échappe, plutôt qu'une compression itérative sur un format de fichier (zip) et pour autant qu'elle soit possible (et bien sûr pas illimitée) il semble plus logique d'appliquer au fichier de départ un taux de compression et format de sortie.
De mémoire, je ne me suis pas amusé à cela depuis longtemps, un certain nombre d'utilitaires à la ligne de commandes permettait de spécifier ce taux dans une certaine mesure, mais pas forcément vers zip.
Certains préconisent une "optimisation" de la compression zip, je n'y crois pas vraiment:
https://www.reddit.com/r/compression/comments/13r5ulj/what_is_the_best_configuration_to_7zip_for/?tl=fr
D'autres, ça vaut que ça vaut puisque le dossier de départ comporte un nombre de fichiers fini et homogènes, se sont amusés à tester un certain nombre de formats de sortie.
http://rlwpx.free.fr/WPFF/comploc.htm
Outre que certains de ces formats sont exotiques et pas très conviviaux à relire est mise en évidence une vérité de La Palisse: plus le format de départ est lui-même déjà compressé, plus le résultat est mauvais tous formats de sortie confondus.
Exprimé autrement, il ne sert à rien de recompresser ce qui l'est déjà pour des résultats aléatoires avec un gain insignifiant.
En fait j' ai bien une idée, mais je n'arrive pas à la programmer ( ni même si elle est viable ) .
Voilà la théorie :
On ouvre un fichier WinZip en entrée ;
On ouvre un fichier virtuel à base de 0 et de 1 en sortie ;
On ouvre un fichier en sortie ;
On trie les valeurs ( de 0 à 255 ) du fichier d'entrée par ordre de la plus fréquente à la moins fréquente ;
On commence à rechercher les occurrences de la valeur la plus fréquente actuellement ( d'abord la plus fréquente, puis la deuxième fréquente etc )
À chaque fois qu'on trouve une occurrence, on cherche si, entre la précédente occurrence et celle-ci il y a un ( ou plusieurs ) bit set dans le fichier virtuel ; après quoi on publie dans le fichier de sortie la soustraction entre les deux occurrences, moins le nombre de bits set, puis on place un bit set a l'endroit du fichier virtuel qui correspond à l'endroit du fichier d'entrée, et on recherche la prochaine occurrence...
J' espère que c'est lisible et vous souhaite une bonne lecture :)
bonjour, on ne peut comprimer de façon illimitée.
Une des limites de la compression, c'est que, afin de pouvoir décompresser, il faut éviter que deux fichiers différents aboutissent à deux fichiers compressés identiques.
Les fichiers compressés doivent donc être au moins aussi nombreux que les fichiers de départ. Pour être nombreux, ils doivent donc être suffisamment grands.
Peut-être regarder ceci?
https://fr.wikibooks.org/wiki/Compression_de_donn%C3%A9es/Techniques_de_compression_sans_perte
... Bon après midi ; voilà la suite de mes réflexions :'
L'idée derrière le fichier virtuel, c'est que au fur et à mesure qu'il se remplit de 1, les distances entre deux occurrences d'une même valeur vont avoir tendance à diminuer, et ceci devrait produire plus de petites valeurs au sein du fichier de sortie ( là encore je ne suis pas sûr d'être bien clair... )
Voilà ; si vous pouviez m'indiquer les zones d'ombres dans mes posts je vous remercie d'avance en vous souhaitant un bon après midi :)