La codifica Huffman è sempre ottimale?


9

Il requisito della codifica come prefisso libero comporta alberi di grandi dimensioni a causa della necessità di completare l'albero. Esiste una soglia in cui la memorizzazione non codificata di dati a lunghezza fissa sarebbe più efficiente della codifica dei dati?


In generale "no". Per una media dei dati, la frequenza di ciascun personaggio sarebbe> 1 ed è utile usare la codifica Huffman anziché i codici a lunghezza fissa

@arunmoezhi La prego di rispondere all'esempio che ho fornito sopra? La frequenza di ciascun carattere è maggiore di 1, ma la lunghezza fissa è più ottimale.

Questo esempio è interessante. Ma puoi fornire uno scenario del genere con le probabilità di ogni personaggio invece della frequenza e assicurarti che le probabilità di tutti i personaggi si

@arunmoezhi Ho incluso le probabilità dei personaggi e si sommano a 1.

Risposte:


4

L'entropia H(A)per questo problema è 1.998. Sia la codifica Huffman che la codifica a lunghezza fissa per questo problema hanno una lunghezza del codice avg come 2. A proposito, la codifica che hai ottenuto usando la codifica Huffman è sbagliata. La codifica Huffman produce anche codici simili alla lunghezza fissa per questo problema. Usa un approccio avido. Quindi anon ottiene un codice come 0ma invece ottiene 00. Rielaborare l'albero che si genera utilizzando Huffman Coding. L'albero che dovresti ottenere è:inserisci qui la descrizione dell'immagine


Grazie. Potresti fornire qualche tipo di prova che la codifica di Huffman è sempre più ottimale della lunghezza fissa o che almeno mi riferisci a una?

1
È possibile fare riferimento a Introduction to Algorithmsda CLRS. Nel capitolo che parla di greedy algorithmste puoi ottenere la prova formale per Huffman algorithm. È una prova lunga e ha bisogno di pazienza per leggere.

8

La codifica di Huffman approssima la distribuzione della popolazione con poteri di due probabilità. Se la vera distribuzione è costituita da potenze di due probabilità (e i simboli di input sono completamente non correlati), la codifica di Huffman è ottimale. In caso contrario, puoi fare di meglio con la codifica dell'intervallo. È comunque ottimale tra tutte le codifiche che assegnano serie specifiche di bit a simboli specifici nell'input.


Cosa intendi con "approssima la distribuzione della popolazione"?

3
Esiste una vera distribuzione teorica del messaggio che potrebbe essere ipoteticamente inviata. Idealmente, ogni messaggio dovrebbe essere codificato in modo proporzionale al registro della sua probabilità, ma poiché i codici di Huffman sono un numero intero di bit, ciò corrisponde implicitamente a probabilità che sono potenze di due. Da qui un'approssimazione. Cerca il teorema di codifica di Shannons.

8

Sì, è sempre ottimale.

No, non esiste una soglia in cui utilizzerebbe meno spazio per utilizzare dati non codificati a lunghezza fissa.

Ho trovato una serie di prove sul Web, ma c'è abbastanza discussione nell'articolo di Wikipedia sulla codifica Huffman .

Questo copre anche altre tecniche che ottengono una maggiore compressione (lavorando al di fuori dello spazio per il quale il codice Huffman è ottimale).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.