1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-23 00:14:21 +00:00
triennale-appunti-steffo/public/materials/year1/algoritmi/31_AlgoritmoDiHuffman.md

14 lines
795 B
Markdown
Raw Normal View History

2022-02-03 02:15:39 +00:00
# Algoritmo di Huffman
L'_Algoritmo di Huffman_ è un **algoritmo greedy** per la **costruzione di un albero di decodifica**.
## Funzionamento
1. Costruisco **un albero** (con un solo nodo) **per ogni elemento dell'alfabeto**.
2. Associo ad **ogni albero la frequenza dell'elemento** da cui è stato creato, per poi inserire tutti gli elementi in una coda con priorità.
3. Finchè non ho **un albero solo**:
1. Estraggo dalla coda i **due alberi con frequenza minore**.
2. **Li rendo fratelli**, creando un nuovo nodo in cui sono uno figlio destro e uno figlio sinistro.
3. 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.