1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-22 10:44:17 +00:00
appunti-steffo/2 - Algoritmi e strutture dati/31 - Algoritmo di Huffman.md

14 lines
795 B
Markdown
Raw Normal View History

# 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.