2) Codici univocamente decifrabili e codici a prefisso.



Documenti analoghi
Algoritmi e strutture dati. Codici di Huffman

Codifiche a lunghezza variabile

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

Entropia. Motivazione. ? Quant è l informazione portata dalla sequenza? Abbiamo una sequenza S di N simboli (campioni audio, pixel, caratteri,...

Un metodo per il rilevamento degli errori: la tecnica del Bit di Parità

4 3 4 = 4 x x x 10 0 aaa

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Rappresentazione dei numeri in un calcolatore

Teoria della probabilità Assiomi e teoremi

I sistemi di numerazione

Sintesi Combinatoria Uso di componenti diversi dagli operatori elementari. Mariagiovanna Sami Corso di reti Logiche 8 Anno

Rappresentazione di informazioni con un alfabeto finito

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

Codifica binaria dei numeri relativi

Esponenziali elogaritmi

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

= 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

Informazione analogica e digitale

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Matematica generale CTF

Informatica grafica e Multimedialità. 4 Immagini grafiche

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

1. PRIME PROPRIETÀ 2

CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I)

Equilibrio bayesiano perfetto. Giochi di segnalazione

la scienza della rappresentazione e della elaborazione dell informazione

Alessandro Pellegrini

2. Codifica dell informazione

Introduzione alla programmazione in C

Codifica delle Informazioni

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

La misura degli angoli

Testi di Esercizi e Quesiti 1

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Elementi di teoria dei segnali /b

Capitolo 4: Ottimizzazione non lineare non vincolata parte II. E. Amaldi DEIB, Politecnico di Milano

CAPITOLO 16 SUCCESSIONI E SERIE DI FUNZIONI

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

Page 1. Evoluzione. Intelligenza Artificiale. Algoritmi Genetici. Evoluzione. Evoluzione: nomenclatura. Corrispondenze natura-calcolo

Limiti e continuità delle funzioni reali a variabile reale

Capitolo 25: Lo scambio nel mercato delle assicurazioni

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Nozione di algoritmo. Gabriella Trucco

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

COMUNICAZIONI ELETTRICHE + TRASMISSIONE NUMERICA COMPITO 13/7/2005

TELECOMUNICAZIONI II: LE RETI DI COMUNICAZIONE. INTRODUZIONE... pag.2

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

E naturale chiedersi alcune cose sulla media campionaria x n

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

Edited by Foxit PDF Editor Copyright (c) by Foxit Software Company, 2004 For Evaluation Only.

Rappresentazione dell informazione Codifica Binaria


(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

SUCCESSIONI NUMERICHE

Lezione 8. La macchina universale

Codifica di sorgente. esempio di sorgente con memoria

FUNZIONI ELEMENTARI - ESERCIZI SVOLTI

SUCCESSIONI NUMERICHE

La quantità. Rappresentazione dei numeri I numeri rappresentano quantità. Il sistema Binario. Binario

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

RETI DI TELECOMUNICAZIONE

QUANTIZZAZIONE diverse fasi del processo di conversione da analogico a digitale quantizzazione

La Firma Digitale La sperimentazione nel Comune di Cuneo. Pier Angelo Mariani Settore Elaborazione Dati Comune di Cuneo

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Appunti sulla Macchina di Turing. Macchina di Turing

Analisi di Protocolli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6

Ottimizzazione nella gestione dei progetti Capitolo 4: la gestione dei costi (Programmazione multimodale): formulazioni

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Teoria dell informazione

Strutturazione logica dei dati: i file

Ai fini economici i costi di un impresa sono distinti principalmente in due gruppi: costi fissi e costi variabili. Vale ovviamente la relazione:

- Sistemi di numerazione 1 - Sistemi di Numerazione

Massimi e minimi vincolati

10. Insiemi non misurabili secondo Lebesgue.

Forze come grandezze vettoriali

E NECESSARIO RICORRERE ALLE VARIABILI CASUALI

Trasmissione di dati al di fuori di un area locale avviene tramite la commutazione

ARCHIVIAZIONE E. Obblighi & Opportunità. 8 Gennaio 2010

Elementi di Informatica e Programmazione

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

STRINGHE di un ALFABETO. Consideriamo un alfabeto di simboli V V è un insieme finito e non vuoto. Alfabeto della lingua inglese I={a,b,c,..

2 FUNZIONI REALI DI VARIABILE REALE

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

Variabili e tipi di dato

Commissione di Massimo Scoperto e Commissione di Mancato Utilizzo: cosa sono e come funzionano.

Problema del trasporto

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Teoria in sintesi 10. Attività di sportello 1, 24 - Attività di sportello 2, 24 - Verifica conclusiva, 25. Teoria in sintesi 26

Informatica. Rappresentazione dei numeri Numerazione binaria

Lez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2

Dispense di Informatica per l ITG Valadier

VC-dimension: Esempio

Transcript:

Argomenti della Lezione ) Codici di sorgente 2) Codici univocamente decifrabili e codici a prefisso. 3) Disuguaglianza di Kraft 4) Primo Teorema di Shannon 5) Codifica di Huffman

Codifica di sorgente Il processo di codifica di sorgente ha lo scopo di aumentare l efficienza nell utilizzo della risorsa tempo di un canale di comunicazione. La codifica di sorgente regola la costruzione dei codici di sorgente e la legge di associazione di un codice di sorgente con i simboli dell alfabeto di sorgente. 2

Codici di sorgente Supponiamo che la sorgente sia discreta e senza memoria e che N { } X A = x i i= emetta simboli appartenenti all alfabeto. Sorgenti non discrete come ad esempio un microfono possono essere rese discrete utilizzando l operazione di conversione A/D. Prima di essere inviato al codificatore di canale, ogni simbolo dell alfabeto di sorgente deve essere rappresentato da una stringa finita di simboli appartenenti all alfabeto del codice, detta parola di codice (codeword). Un codice è un insieme di parole di codice. Verrà considerato soltanto il caso in cui l alfabeto del codice sia un alfabeto binario costituito dai due binary digit 0 e. Es. C={00, 00, 0, 0, }. 3

Codici di sorgente In generale le codeword di uno stesso codice hanno una lunghezza variabile. La codifica di sorgente mette in corrispondenza i simboli di una sorgente con le codeword di un codice di sorgente sulla base della probabilità di emissione dei simboli di sorgente. La codifica di sorgente che andremo a studiare è di tipo senza perdite. Infatti se si assume una trasmissione senza errori, il messaggio inviato dalla sorgente e successivamente codificato viene riprodotto esattamente dal decodificatore di sorgente e consegnato al destinatario. 4

Codici di sorgente Il codice ASCII (esteso) è un codice di sorgente le cui codeword sono costituite da stringhe di 8 bit. Con il codice ASCII è possibile rappresentare tutte le lettere (maiuscole e minuscole) dell alfabeto inglese, i numeri da 0 a 9, alcuni simboli speciali ed alcuni simboli di controllo. 5

Codici di sorgente Comunicazione efficiente: la trasmissione di ogni simbolo di sorgente avviene in poco tempo (e quindi con pochi bit binary digit). Per avere mediamente un comportamento come quello richiesto, un codice di sorgente assegna le codeword di lunghezza minore ai simboli di sorgente che hanno una più alta probabilità di emissione, mentre assegna le codeword di lunghezza maggiore ai simboli di sorgente che hanno una più bassa probabilità di emissione. E necessario quindi minimizzare la lunghezza media della codeword. 6

Codifica dell alfabeto di sorgente L obiettivo è minimizzare la lunghezza media calcolabile come: dove: n = E N X { n } = i = p i n i n delle codeword n i è la lunghezza della codeword che rappresenta il simbolo i-esimo p i è la probabilità di emissione del simbolo x i, e quindi è la probabilità di avere una codeword di lunghezza n i n è la variabile aleatoria che rappresenta la lunghezza della codeword (cioè che assume il valore n i con probabilità p i ) 7

Codici Univocamente Decifrabili C è un importante vincolo nella minimizzazione della lunghezza media della codeword n. Il codice deve essere univocamente decifrabile, cioè ogni sequenza finita di bit emessa dalla sorgente deve corrispondere ad uno ed un solo messaggio senza ambiguità. Esempio: Simbolo Codeword Dato il codice riportato qui a destra, la sequenza 0000 corrisponde ad uno qualsiasi dei cinque messaggi: x x 3 x 2 x x x 3 x x 3 x x 4 x 3 x 2 x x x 3 x 2 x x 2 x x 0 x 2 0 x 3 0 x 4 00 Il codice dell esempio è ambiguo, cioè non decifrabile in modo univoco. 8

Codici Univocamente Decifrabili Un codice è detto non singolare se ha tutte le codeword diverse. Chiaramente un codice univocamente decifrabile deve essere non singolare. Viene definita n-esima estensione del codice C, un codice C' costituito dall'insieme di tutte le possibili concatenazioni di n codeword del codice C. Un codice è univocamente decifrabile se la sua n-esima estensione è non singolare, per ogni n. Affinchè un codice sia univocamente decifrabile è sufficiente che esista un algoritmo che porti a suddividere in blocchi corrispondenti a codeword ogni sequenza finita all uscita del codificatore di sorgente. Tale suddivisione deve avvenire senza ambiguità. All uscita del codificatore di sorgente non si avranno necessariamente tutte le possibili sequenze che possono essere costruite con i bit 0 e, ma si avranno tutte le possibili sequenze di codeword del codice. 9

Codici Univocamente Decifrabili Il codice Morse è un codice di sorgente a lunghezza variabile che permette di codificare l alfabeto inglese. L alfabeto di codice è costituito da quattro simboli: punto, linea, spazio tra lettere (attesa equivalente alla durata di tre punti), spazio tra parole (attesa equivalente alla durata di cinque punti). Con i due soli simboli punto e linea il codice non sarebbe univocamente decodificabile. Esempio di ambiguità nella decodifica:. _ A ET 0

Codici a Prefisso Una condizione che assicura l univoca decifrabilità è che nessuna parola di codice sia prefisso di una parola di codice più lunga (Regola del prefisso PREFIX CODE). Un codice che soddisfa questa condizione viene detto codice a prefisso. Rappresentazione tramite albero binario dei codici a prefisso: in Primo digit SYMBOL CODE WORD X 0 X2 0 X3 0 X4 Poiché le codeword corrispondono alle sequenze di bit che si incontrano nei percorsi che portano ai nodi foglia dell albero, e ad ogni arco uscente da uno stesso nodo viene assegnato un diverso digit, nessuna codeword può essere il prefisso di un altra codeword più lunga.

Relazione tra Codici a Prefisso e Codici Univocamente Decifrabili Codice a prefisso Codice univocamente decifrabile. La condizione che il codice sia a prefisso è soltanto una condizione sufficiente affinché il codice sia univocamente decifrabile, ma non è una condizione necessaria. I codici a prefisso sono la categoria di codici più studiata perché permettono di minimizzare la lunghezza media delle codeword per qualsiasi funzione di massa di probabilità. 2

Ulteriori classi di codici di sorgente Esistono altre classi di codici che non sono a prefisso, ma sono univocamente decifrabili e le più note sono i codici a lunghezza fissa ed i codici a virgola. I codici a lunghezza fissa sono costituiti da un insieme di codeword di uguale lunghezza L. Un codice a lunghezza fissa per essere univocamente decifrabile deve avere una lunghezza pari a: in cui è la cardinalità dell alfabeto di sorgente e indica il più grande intero non maggiore di. I codici a virgola sono un particolare tipo di codici in cui l'inizio (o la fine) di una codeword è segnalata da un simbolo non utilizzato altrimenti (detto virgola). 3

Esempi di Codici di Sorgente Si consideri una sorgente avente 4 simboli a,b,c,d ed i tre codici C, C 2 e C 3 la cui corrispondenza tra codeword e simboli di sorgente è mostrata in Tabella. C C 2 C 3 a 0 00 b 0 0 c 0 0 00 d 000 C non è univocamente decifrabile poiché alla emissione dal codificatore di sorgente della sequenza 0 vi è una incertezza sulla decodifica (ab oppure c). C 2 è univ. decifrabile poiché è un codice a lunghezza fissa con lunghezza pari a 2 e con codeword tutte diverse. I codici a lunghezza fissa rispettano anche rispettano implicitamente la regola del prefisso. C 3 è univ. decifrabile poiché indica l emissione di un nuovo simbolo. Tale classe di codici viene indicata come codici a virgola. 4

Disuguaglianza di Kraft Una condizione necessaria e sufficiente per un dato codice affinché sia soddisfatta la condizione sul prefisso è data dal seguente teorema. Teorema (DISUGUAGLIANZA DI KRAFT): Un codice binario che soddisfi la regola del prefisso con codeword di lunghezza n, n 2,, n M esiste se e solo se: M i= 2 n i La dimostrazione viene omessa 5

Disuguaglianza di Kraft - Esempio Verificare la disuguaglianza di Kraft per i seguenti codici: C = {0, 0, 0, 0, 0, } C 2 = {0, 0, 0, 00, 0, } Soluzione: Per C si ha: 6 i= 2 2 4 + + 8 6 32 32 n i = + + + = ( dis. di Kraft verificata) Per C 2 si ha: 6 i= 2 2 4 8 8 32 32 n i = + + + + + =.06 ( dis. di Kraft non verificata) 6

Disuguaglianza di Kraft Esempio e discussione Controllando per ispezione i due codici precedenti si può vedere come nessuno dei due codici soddisfa la regola del prefisso. Da questo esempio si può vedere che se la disuguaglianza di Kraft è verificata per un certo codice C, ciò non assicura che il codice C sia a prefisso. Infatti la disuguaglianza di Kraft, nel caso in cui sia verificata per un certo codice C, garantisce soltanto l esistenza di un codice a prefisso con le stesse lunghezze delle codeword di C. La disuguaglianza di Kraft non può garantire che un codice sia a prefisso perché nella disuguaglianza vengono prese in considerazione soltanto le lunghezze delle codeword, ma non la disposizione dei binary digit di ogni codeword. Se la disuguaglianza di Kraft è verificata per un codice C, è possibile ottenere un codice C a prefisso permutando i simboli binari delle codeword di C e mantenendo inalterata la loro lunghezza. Se la disuguaglianza di Kraft non è verificata, tale procedimento non può portare ad un codice a prefisso. 7

Disuguaglianza di Kraft Esempio e discussione Volendo utilizzare codici a prefisso che sono una categoria di codici ottimizzabile per qualsiasi tipo di massa di probabilità dei simboli di sorgente e utilizzando il teorema di Kraft, si può impostare il problema di ottimizzazione vincolata nel seguente modo: N X min i = p n i subject to : i M i= 2 n i 8

Primo Teorema di Shannon Teorema: si può trovare un codice di sorgente binario di lunghezza n media che soddisfi la regola del prefisso, per ogni alfabeto di sorgente di entropia H(X), per cui risulti soddisfatta la seguente: H ( X ) n < H ( X ) + Tale teorema è noto come primo Teorema di Shannon o come Teorema Fondamentale della Codifica di Sorgente. Questo Teorema rappresenta il primo limite fondamentale nella teoria dell informazione per la codifica di corgente senza perdite. 9

Efficienza di un codice di sorgente Un codice che ha una lunghezza media non è un buon codice, ossia esiste un codice a prefisso con una lunghezza media inferiore. Un codice di sorgente è tanto migliore quanto più è piccola la sua lunghezza media. Dal primo Teorema di Shannon si può vedere che esiste un limite inferiore alla lunghezza media del codice che è sempre maggiore o al più uguale all'entropia di sorgente. ( X ) + Ricordando che in genere l efficienza è una metrica di prestazioni che al più vale, possiamo definire l efficienza e la ridondanza di un codice di sorgente come segue. _ n H Efficienza del codice di sorgente: ε = H ( X ) n Ridondanza del codice di sorgente: ε 20

Codici Completi Si definisce codice completo un codice a prefisso che soddisfa la disuguaglianza di Kraft con il segno di uguaglianza. Per un codice completo non si fa però nessuna ipotesi sulle probabilità di emissione dei simboli dell'alfabeto di sorgente e neanche sull associazione tra codeword e simboli di sorgente. Di conseguenza un codice completo non minimizza necessariamente la lunghezza media delle codeword. 2

Codici Completi In casi particolari esiste una relazione tra p i e n i nei codici completi Dato che: M H( X ) = p i log e i= pi n = M i= p i n i Si ha: ovvero: n = H ( X ) se e solo se: log = p 2 i p n i i = 2, i =,..., M n i e in questo caso la disuguaglianza di Kraft è verificata con il segno di uguaglianza (codice completo) ed inoltre la sua efficienza è unitaria. 22

Codici Completi Un codice di sorgente ad efficienza unitaria è un codice completo, ma non è vero il viceversa. p i = 2 n i In generale la non è soddisfatta con intero e quindi, date le p i, non è sempre possibile ottenere n i n = H(X) Dato M, esiste sempre un codice completo con M codeword, ma tale codice non ha necessariamente n = H(X) 23

Esempio In tabella viene riportato un codice che soddisfa la: con il segno di uguaglianza, essendo: n H (x) p p n = = 2 = 2 2 n 2 2 = = 2 2 = 2 4 simbolo code word p n 3 3 = = 2 3 = 2 8 5 n4 n 4 p4 = p5 = = 2 = 2 = 2 n 4 = n5 6 24

Esempio (continua) Esempio (continua) = = = M i i i p p X H log ) ( ( ) 8 5 4 4 6 3 8 2 4 2 = + + + + M ( ) 5 25 = = = M i p i n i n ( ) 8 5 4 4 6 3 8 2 4 2 = + + + + 8 5 ) ( = = X H n

Codici di Huffman I codici di Huffman sono dei codici di sorgente a prefisso che vengono costruiti mediante l algoritmo di Huffman che fa uso di un albero binario. Sono codici ottimi, cioè tra tutti i codici a prefisso sono quelli che minimizzano la lunghezza media delle codeword per un dato alfabeto di sorgente e massa di probabilità. Sono codici completi, non necessariamente ad efficienza unitaria. Sono in generale codici a lunghezza variabile. Nel caso in cui N X è una potenza di 2 e i simboli di sorgente sono equiprobabili allora il codice di Huffman coincide con un codice a lunghezza fissa con: L = log2 N X 26

Costruzione di codici ottimali di Huffman. Gli M simboli dell alfabeto di sorgente vengono ordinati in accordo a valori non crescenti delle loro probabilità p i 2. Si raggruppano gli ultimi due simboli x M e x M- in un simbolo equivalente di probabilità (p M- + p M ). Ad ognuno dei due rami corrispondenti ai due simboli uniti viene associato un simbolo "0" ed un simbolo "". 3. Si ripetono i passi e 2 finché non rimane un solo simbolo 4. Per ogni simbolo, la parola di codice corrispondente si trova esplorando a ritroso l albero generato con i passi 3, dalla radice verso quel simbolo 27

Costruzione di codici ottimali di Huffman - Esempio p.e. Albero realizzato applicando i passi 4 Albero generato da una codifica di Huffman per una sorgente di sei simboli 28

Costruzione di codici ottimali di Huffman - Esempio Per l esempio precedente si ottiene: simbolo code word n = 0. 5 + 0. 5 3 + 0. 5 3 + + 0. 0 3 + 0. 05 4 + 0. 05 4 = 2. digit/simbolo H( X) = 05. log2+ 05. log + 05. log 0.5 + 0. log0 + 005. log20+ 005. log20= 0.5 + 2.086 bit/simbolo 29

Costruzione di codici ottimali di Huffman - Esempio Per decodificare la sequenza ricevuta: 000000 si usa l albero generato dalla procedura di Huffman. Per l esempio precedente si ottiene: Muovendosi dalla radice dell albero, si seguono i rami ad ogni nodo intermedio in accordo ai digit binari della sequenza finché si raggiunge un nodo terminale (cioè un simbolo). Poi si ricomincia la procedura 30

Costruzione di codici ottimali di Huffman - Esempio Nel caso in esame si ha: 0 0 0 00 0 x 4 x x 3 x 2 x 4 Assumendo la presenza di un errore introdotto dal canale in prima posizione, la procedura di decodifica genera catastrofici effetti di propagazione in questi codici a lunghezza variabile Tuttavia l obiettivo della codifica di sorgente è la riduzione della ridondanza dell alfabeto di sorgente (compressione) E NON la protezione dagli errori del canale (che è l obiettivo della codifica di canale) 3

Esercizio Generare l albero di codifica di Huffman per un alfabeto di sorgente di cardinalità M=5 e probabilità pari a: p =p 4 =0.3; p 2 =0.; p 3 =0.2; p 5 =0.. Calcolare la lunghezza media delle codeword, l efficienza del codice e la sua ridondanza. Soluzione: Disponendo i simboli in ordine decrescente di probabilità si costruisce l albero: x 4 x x 3 x 2 x 5 0.3 0.3 0.2 0. 0. 0.2 0 0.4 0 0.6 0 0 32

Esercizio cont. C 5 x (p=0.3) 0 n = p i n i = 0.3 2 + 0. 3 + 0.2 2 + 0.3 2 + 0. 3 = x 2 (p=0.) 0 i= = 2.2 digit/simbolo x 3 (p=0.2) 0 5 x H ( X ) = p i log p i = 0.52 + 0.52 + 0.46 + 0.33 + 0. 33 = 4 (p=0.3) 00 i= = x 5 (p=0.) = 2.6 bit/simbolo H ( X ) ε = = 0.98 r = ε = 0. 02 n 33

Esercizio Generare un codice di Huffman ed un altro codice a lunghezza costante per un alfabeto di sorgente di cardinalità M=5 e densità di probabilità uniforme. Soluzione: Ne risulta che: =, i =,2,..., 5 x x 2 x 3 x 4 0.2 0.2 0.2 0.2 x 5 0.2 0.4 p i 0 5 0.4 0 0.6 0 0 34

Esercizio cont. C (Huffman) x (p=0.2) 00 000 x 2 (p=0.2) 00 00 x 3 (p=0.2) 0 00 x 4 (p=0.2) 0 0 x 5 (p=0.2) 00 C 2 (lunghezza fissa) Anche se i simboli sono equiprobabili, il codice di Huffman ha codeword con lunghezze diverse. Il codice di Huffman equivale al codice a lunghezza fissa nel caso in cui il numero di simboli sia una potenza di 2 ed i simboli siano equiprobabili. Infatti in questo caso un codice a lunghezza fissa è un codice ottimo. N.B.: Il codice di Huffman associato ad un alfabeto di sorgente non è unico. 35