Algoritmi e Strutture Dati Codici di Huffman
Prova del 19 novembre 2004 (4 punti) Descrivere le caratteristiche dei codici di Huffmann. Data la seguente sequenza di caratteri con la relativa frequenza: a:20, g:4, e:12, f:6, k:5, l:8, d:5, generare la codifica di Huffman ad essa relativa. Dire qual è la percentuale di risparmio (relativamente alla codifica della stessa sequenza data sopra) rispetto alla relativa codifica con lunghezza fissa. In quale caso la codifica di Huffmann permette di ottenere alte percentuali di risparmio?
procedimento Si ordinano i caratteri secondo le frequenze non decrescenti (coda con priorità) g:4, k:5, d:5, f:6, l:8, e:12, a:20 9 k:5 g:4 d:5 f:6 l:8 9 e:12 a:20 g:4 k:5
… d:5 f:6 l:8 9 e:12 a:20 g:4 k:5 11 d:5 f:6 9 11 e:12 a:20 l:8 g:4
… l:8 9 11 e:12 a:20 g:4 d:5 f:6 k:5 11 e:12 17 a:20 d:5 f:6 l:8 9 23
… 17 a:20 23 11 e:12 l:8 9 d:5 f:6 g:4 k:5 37 23 11 e:12 17 a:20 d:5
codifica 60 a = 01 d = 100 e = 11 f = 101 g = 0011 k = 0010 l = 000 37 1 a = 01 d = 100 e = 11 f = 101 g = 0011 k = 0010 l = 000 37 23 1 1 11 e:12 17 a:20 1 1 d:5 f:6 l:8 9 1 Numero di bit complessivi con Huffman 2*20 + 3*5 + 2*12 + 3*6 + 4*4 + 4*5 + 3*8 = 157 g:4 k:5 Numero di bit complessivi con La codifica a lunghezza fissa: 3*60 =180 Percentuale di risparmio: 12,8%
Esercizio Data la seguente sequenza di caratteri con la relativa frequenza: a:40, b:20, c:5, d:10, e:35, f:10, g:7, h:3, i:30 generare la codifica di Huffman ad essa relativa e calcolare la percentuale di risparmio rispetto alla codifica a lunghezza fissa. La codifica di Huffman è unica?