mirror of
https://github.com/Steffo99/appunti-magistrali.git
synced 2024-11-22 10:44:17 +00:00
795 B
795 B
Algoritmo di Huffman
L'Algoritmo di Huffman è un algoritmo greedy per la costruzione di un albero di decodifica.
Funzionamento
- Costruisco un albero (con un solo nodo) per ogni elemento dell'alfabeto.
- Associo ad ogni albero la frequenza dell'elemento da cui è stato creato, per poi inserire tutti gli elementi in una coda con priorità.
- Finchè non ho un albero solo:
- Estraggo dalla coda i due alberi con frequenza minore.
- Li rendo fratelli, creando un nuovo nodo in cui sono uno figlio destro e uno figlio sinistro.
- Associo al nuovo nodo la somma delle frequenze dei due alberi, e inserisco il nuovo albero nella coda.
È molto raro che venga un albero "dritto"; se succede, probabilmente c'è qualcosa che non va.