D'abord, l'algorithme regarde les choses que nous voulons compresser, comme un texte. Par exemple, si on a le mot "banane", il va compter combien de fois chaque lettre apparaît. Voici ce qu'il trouve :
- b : 1 fois
- a : 3 fois
- n : 2 fois
Ensuite, l'algorithme construit un arbre. Imaginez un arbre où les feuilles sont les lettres. Les lettres qui apparaissent le plus souvent sont placées en haut, et celles qui apparaissent moins souvent sont plus bas. C'est comme un jeu où les lettres populaires se tiennent en avant !
Après cela, l'algorithme attribue des codes à chaque lettre. Les lettres qui apparaissent souvent, comme "a", auront des codes plus courts, et celles qui apparaissent moins souvent, comme "b", auront des codes plus longs. C'est comme si on donnait des surnoms aux lettres !
- a = 0
- n = 10
- b = 110
Maintenant, l'algorithme utilise ces codes pour remplacer les lettres du mot "banane" par leurs nouveaux codes. Voici ce que ça donne :
- "b" devient 110
- "a" devient 0
- "n" devient 10
Alors, "banane" devient "1100101010" ! C'est plus court, n'est-ce pas ?
Enfin, si on veut retrouver le mot original, l'algorithme peut utiliser l'arbre magique pour lire les codes et reconstruire le mot. En suivant les 0 et les 1, il sait comment remettre tout en ordre.
L'algorithme de Huffman est un outil génial qui nous aide à rendre nos fichiers plus petits en utilisant des codes basés sur la fréquence des lettres. C'est comme un jeu de déduction avec des lettres et des nombres !
Et voilà, vous savez maintenant comment fonctionne cet algorithme ! Cool, non ?
Installation de l'executable de GraphVIZ ou winget install graphviz
projet-algorithme-gaetan-Algorithme-de-Compression-de-Huffman/
├── README.md
├── main.py
├── descriptions/
│ └── description_simple.md
├── implementations/
│ ├── implementation1.py
│ └── implementation2.py
├── tests/
│ ├── test_implementation1.py
│ └── test_implementation2.py
├── visualisations/
│ └── visualisation.py
├── analyses/
│ └── analyse_complexite.md
└── ressources/
└── [données, images, etc.]