slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
I codici di Huffman PowerPoint Presentation
Download Presentation
I codici di Huffman

Loading in 2 Seconds...

play fullscreen
1 / 13

I codici di Huffman - PowerPoint PPT Presentation


  • 128 Views
  • Uploaded on

Università di Napoli “Federico II” - Corso di laurea in Informatica Corso di METODI PER IL TRATTAMENTO NUMERICO DI DATI MULTIMEDIALI a.a.2003/04 seminario n.1. I codici di Huffman. Studenti : Borrelli Antonio 50/445 Chierchia Eduardo 50/223. Introduzione.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'I codici di Huffman' - kaiya


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Università di Napoli “Federico II” - Corso di laurea in Informatica

Corso di

METODI PER IL TRATTAMENTO NUMERICO DI DATI MULTIMEDIALI

a.a.2003/04 seminario n.1

I codici di Huffman

Studenti:

Borrelli Antonio 50/445Chierchia Eduardo 50/223

slide2

Introduzione

  • David A. Huffman(1925-1999) è stato uno dei pionieri nel campo della Computer Science
  • Fornì significativi contributi in diversi ambiti di applicazione nella neonata e inesplorata Scienza degli elaboratori (macchine a stati finiti, switching circuit, signal models, compressione, …)
  • Egli sviluppò il metodo che porta il suo nome quando era ancora studente al MIT e lo pubblicò nel 1952 in un articolo intitolato “A Method for the Construction of Minimum-Redundancy Codes”
  • Tale articolo iniziava con il seguente sommario, nel quale sono chiaramente dichiarate le esigenze che il metodo si propone di soddisfare e le sue caratteristiche salienti :

“An optimum method of coding an ensamble of messages consisting of a finite number of members is developed. A minimum-redundancy code is one constructed in such a way that the average number of coding digits per message is minimized.”

slide3

Nozioni preliminari (1/3)

  • Un algoritmo di codifica è un algoritmo attraverso il quale si rappresenta l’informazione originale per mezzo di un nuovo alfabeto di simboli
  • Un algoritmo di codifica si dice di tipo lossless se non comporta nessuna perdita dell’informazione originale
  • Un algoritmo di codifica deve essere sempre accompagnato da uno di decodifica affinché si possa ripristinare l’informazione originale a partire dall’alfabeto dei codici
  • Un algoritmo di codifica associato ad un simmetrico algoritmo di decodifica costituiscono un processo di codifica (codec)
  • I processi di codifica devono essere tali da soddisfare differenti requisiti a seconda del contesto nel quale sono inseriti , ad esempio:
  • Basso costo computazionale del processo di codifica
  • Basso costo computazionale del processo di decodifica
  • Protezione dell’informazione
  • Integrazione al canale di comunicazione
slide4

Nozioni preliminari (2/3)

  • La codifica di Huffman viene utilizzata principalmente, ma non solo, come tipologia di algoritmo associata ad una riduzione della quantità di informazione da rappresentare, potenzialmente illimitata (compressione) in presenza di un canale di comunicazione con ovvi limiti fisici.
  • La codifica di Huffman appartiene alla classe delle codifiche dette entropiche essendo di tipo statistico, cioè basandosi sulla considerazione che le occorrenze di caratteri o gruppi di caratteri non sono sempre uguali. Si codificano i simboli più frequenticon parole codice più corte.
slide5

Nozioni preliminari (3/3)

  • Altre caratteristiche notevoli della Codifica di Huffman sono le seguenti :
  • Ottimalità del codice

La lunghezza media delle parole codice prodotte è la più bassa rispetto ad ogni altra tecnica statistica di codifica. Ciò vuol dire che :

Sia H(K) la lunghezza media delle parole codice prodotte dall’algoritmo di Huffman, non esiste nessun altro algoritmo in grado di produrre un codice L tale che

L(K)< H(K)

  • Univoca decodificabilità
  • Il processo di decodifica è unico ed immediato. Il codice prodotto è prefisso ovvero nessuna parola del codice è il prefisso di un’altra parola del codice stesso, es.:
    • Codice Prefisso A := {a,ba,bb}
    • Codice Non Prefisso A’:= {a,ab,bba}
slide6

La codifca di Huffman

  • Attualmente i codici di Huffmann vengono adoperati come back-end di altre tecniche di compressione più evolute e complesse quali ad esempio JPEG
  • Data la sua natura statistica, risulta evidente che tale tecnica di codifica risulterà tanto più efficiente quanto meno è uniforme la distribuzione delle frequenze dei simboli nell’alfabeto sorgente
  • La tecnica opera attraverso la creazione di alberi n-ari pesati sui simboli in ingresso producendo in output un unico albero n-ario di codifica. L’ arietà dell’albero è la cardinalità dell’ alfabeto di codice considerato
  • Un albero n-ario pesato è un albero nel quale :
    • Ad ogni nodo è associato un peso
    • Ogni nodo interno ha esattamente n figli
  • Questo particolare albero n-ario è tale che:
    • Ogni nodo ha peso uguale alla somma dei pesi degli n figli
    • Quindi la radice ha come peso la somma dei pesi delle foglie (1 se alla foglia si associa come peso la probabilità di occorrenza del simbolo corrispondente)
slide7

L’ algoritmo (costruzione del codice)

  • A partire dalla precedente descrizione di albero pesato n-ario analizziamo i passi dell’algoritmo considerando alfabeti di codice (quindi alberi) binari:
  • Input :
    • Alfabeto sorgente A di m simboli
    • Frequenza di ogni simbolo dell’alfabeto A considerato

Output :

Codice Huffman H degli m simboli dell’alfabeto A in ingresso

  • Algoritmo :
  • Si ordinano i simboli dell’alfabeto in ordine non crescente di probabilità (o crescente di frequenza): si ottengono così n alberi pesati
  • Finchénon si è ottenuto un unico albero allora
      • Si selezionano sempre i due alberi A1 e A2con peso più basso
      • Si genera un nuovo albero la cui radice ha peso pari alla somma di A1 + A2
  • Si assegna 0 ad ogni arco sottendente un figlio sinistro, 1 altrimenti ( non cambia nulla se si agisce inversamente )
slide8

Codice

I codici di Huffman : 1° esempio di esecuzione

  • Consideriamo un semplice esempio per comprendere al meglio l’algoritmo precedentemente esposto
  • Supponiamo, per semplicità, di costruire sia l’alfabeto di simboli che le probabilità di occorrenza sul seguente testo :

Si itera finché non si è ottenuto un unico albero

codifica

B a ll o

B e ll o

Testo:= “Ballo Bello”

00100001101 00100011101

  • Alfabeto di input :

Si assegna 0 ad ogni arco sottendente un figlio sinistro, 1 altrimenti

Σ:=

{

}

10

B

a

l

o

e

,

,

,

,

Si ordinano i simboli dell’alfabeto in ordine crescente di frequenza: si ottengono così n alberi pesati

0

  • Si selezionano i due
  • alberi a ed e con peso più basso : nuovo nodo radice con peso pari alla somma di a + e

6

F(i)

i

0

1

B

2/10

4

1

a

1/10

0

l

4/10

1

2

o

2/10

0

1

e

1/10

a

1

e

1

B

2

o

2

l

4

0000

001

01

1

0001

slide10

Codice

I codici di Huffman : 2° esempio di esecuzione

  • Un altro esempio interessante si può costruire quando la distribuzione delle occorrenze dei simboli è abbastanza unfiorme : in tal caso i simboli avranno quasi tutti la stessa lunghezza, dunque l’efficienza intesa come dimensione dell’ informazione codificata da trasmettere ne risente

O g g i

S t u d i o

codifica

Testo:= “Oggi studio”

00000101001111100

10010110111

  • Alfabeto di input :

10

0

1

Σ:=

{

}

O

g

i

s

t

d

u

,

,

,

,

,

F(i)

i

4

6

O

2/10

0

1

g

2/10

0

i

2/10

1

2

2

4

s

1/10

1

0

1

0

1

0

t

1/10

o

2

i

2

S

1

u

1

d

1

g

2

t

1

u

1/10

d

1/10

000

010

011

100

101

11

001

slide12

I codici di Huffman : confronto tra i due esempi

“Ballo Bello” =

00100001101 00100011101

“Oggi studio” =

10010110111 0000010100111110

  • Esempio :
  • - 5 elementi codice generati : [001,0000,1,01,0001]
  • - totale = 14 bits
  • Lunghezza media = 14 / 5 = 2,8 bits
  • Esempio :
  • - 7 elementi codice generati:[100,101,11,000,001,010,011]
  • totale = 20 bits
  • Lunghezza media = 20 / 7 = 2,86 bits
  • L’esempio illustra il fatto che la lunghezza media dei
  • simboli nell’alfabeto codice è maggiore per un alfabeto
  • sorgente avente distribuzione uniforme delle occorrenze e
  • minore per un alfabeto sorgente avente distribuzione non
  • Uniforme.
slide13

Bibliografia

  • “Elements of Information Theory”,cap. 5,pp.92-101.

Thomas M.Cover, Joy A. Thomas

A Wiley – Interscience Publication,John Wiley & Sons,Inc

  • A method for the construction of minimum redundancy codes

Huffman D.A.

In proceedings IRE,vol 40,1952, pp 1098-1101.