0% ont trouvé ce document utile (0 vote)
53 vues5 pages

Codage Huffman pour Ingénieurs

Transféré par

mhdaminodg
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
53 vues5 pages

Codage Huffman pour Ingénieurs

Transféré par

mhdaminodg
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Hassan 2 de Casablanca

Faculté des Sciences et Techniques de Mohammedia

DEPARTEMENT GENIE ELECTRIQUE

Deuxième année de Cycle d’ingénieur :

Génie Electrique et Télécommunications

Codage Huffman

Rédacteur : Enseignant :

Mohammad Amin OUEDRAOGO Pr I.ELMOURABIT

Année académique 2024-2025


Université Hassan 2 de Casablanca
Faculté des Sciences et Techniques de Mohammedia

Mise en contexte

Dans l'ère moderne des télécommunications et du traitement de l'information,


l'optimisation de la transmission des données est cruciale. Les méthodes de compression de
données jouent un rôle vital en permettant de réduire la quantité de données nécessaires
pour représenter l'information sans compromettre sa qualité. Parmi ces méthodes, le
codage de Huffman se distingue comme une technique de compression sans perte
particulièrement efficace.

Le codage de Huffman, développé par David A. Huffman en 1952, est un algorithme de


codage basé sur les fréquences des symboles dans un ensemble de données. En attribuant
des codes plus courts aux symboles les plus fréquents et des codes plus longs aux symboles
moins fréquents, il permet une compression significative des données. Cette technique est
largement utilisée dans divers domaines, allant de la compression des fichiers texte et des
images à la transmission de données dans les systèmes de communication.

Ce rapport explore en détail le codage Huffman sur Matlab.

Principe

function simpleHuffmanCoding()
% Saisie des symboles et probabilités
n = input('Entrez le nombre de symboles : ');
lettres = cell(1, n);
probas = zeros(1, n);

% Saisie des lettres


for i = 1:n
lettres{i} = input(['Entrez le symbole ', num2str(i), ' : '], 's');
end

% Saisie des probabilités


for i = 1:n
probas(i) = input(['Entrez la probabilité du symbole ', lettres{i}, ' :
']);
end

% Vérification des probabilités


if abs(sum(probas) - 1) > 1e-6
error('La somme des probabilités doit être égale à 1.');
end

% Génération des codes Huffman


codes = construireCodes(lettres, probas);

% Affichage des résultats


disp('=== Résultats du Codage de Huffman ===');
for i = 1:n
Université Hassan 2 de Casablanca
Faculté des Sciences et Techniques de Mohammedia
fprintf('Symbole: %s, Probabilité: %.2f, Code: %s\n', lettres{i},
probas(i), codes(lettres{i}));
end

end

function codes = construireCodes(lettres, probas)


% Création des noeuds de l'arbre
noeuds = [lettres(:), num2cell(probas(:))];

% Construction de l'arbre
while size(noeuds, 1) > 1
% Tri des noeuds par probabilité croissante
noeuds = sortrows(noeuds, 2);

% Fusion des deux noeuds de plus faible probabilité


gauche = noeuds(1, :);
droite = noeuds(2, :);
newNode = {strcat(gauche{1}, droite{1}), gauche{2} + droite{2}};
noeuds = [noeuds(3:end, :); newNode];
end

% Génération des codes


codes = assignerCodes(noeuds{1, 1}, lettres, '');
end

function codes = assignerCodes(arbre, lettres, codeCourant)


% Génération récursive des codes
codes = containers.Map();
if ismember(arbre, lettres)
codes(arbre) = codeCourant;
else
gauche = arbre(1:floor(end/2));
droite = arbre(floor(end/2)+1:end);

% Ajout des codes '0' pour gauche, '1' pour droite


gaucheCodes = assignerCodes(gauche, lettres, strcat(codeCourant, '0'));
droiteCodes = assignerCodes(droite, lettres, strcat(codeCourant, '1'));

% Fusionner les codes


codes = [gaucheCodes; droiteCodes];
end
end

Dans la page suivante nous présentons les résultats d’exécution de ce code.


Université Hassan 2 de Casablanca
Faculté des Sciences et Techniques de Mohammedia

Résultats avec somme des probabilités > 1

Pour la sommes des probabilités étant égale à 1


Université Hassan 2 de Casablanca
Faculté des Sciences et Techniques de Mohammedia

Conclusion

En somme, le codage Huffman joue un rôle crucial dans l'amélioration de la


gestion et du transfert des données. Sa capacité à fournir une compression
optimale sans perte en fait une solution indispensable dans le paysage actuel
des technologies de l'information. À mesure que les besoins en stockage et en
transmission de données continuent de croître, des techniques comme le
codage Huffman resteront des outils essentiels pour répondre à ces défis.

Vous aimerez peut-être aussi