23
CAPITOLO 1. La rappresentazione dell’informazione Il corso affronta i concetti fondamentali dell’informazione e della codifica, necessari per comprendere come le tecniche di codifiche si sono evolute seguendo i principi fondamentali, compatibilmente con i vincoli di complessità realizzativi. In particolare sono due gli argomenti che verranno affrontati : RAPPRESENTAZIONE DELL’INFORMAZIONE ELABORAZIONE DELL’INFORMAZIONE I due argomenti sono strettamente correlati tra di loro: infatti se non so come rappresentare determinate informazioni non so nemmeno come elaborale, quindi data una determinata rappresentazione dell’informazione, esistono dei criteri di elaborazione. Tali criteri dovranno essere i più semplici possibili: dovranno essere cioè meccanici, matematici Prima di passare affrontare il primo argomento, e cioè la rappresentazione del informazione, si da un breve accenno sui termini tecnologie e principi. Si tratta di due concetti che vanno abbastanza indipendenti l’uno dall’altro: ad esempio all’interno di un oggetto tecnologicamente avanzato ci possono essere gli stessi principi di funzionamento che si trovavano in un calcolatore degli anni 50. Questo per dire che i principi sono gli enunciati, i concetti che stanno alla base del funzionamento dei moderni sistemi di comunicazione, mentre le tecnologie sono i mezzi attraverso i quali vengono attuati i principi e che rispetto a questi ultimi, si evolvono continuamente. Il corso si focalizza sui principi e in parte sui vari modi di rappresentare l’informazione: questo argomento è trattato dalla teoria dell’informazione che è la teoria fondamentale dietro tutto lo sviluppo della comunicazione digitale. Il primo concetto fondamentale da cui partire è capire che cosa significa dare un informazione a qualcuno.

CAPITOLO 1. - dei.unipd.itpanico/APPUNTI/cap1 - Rappresentazione della... · il minimo numero di casi possibili che è due; ... Nell’esempio di prima dei quattro punti cardinali,

Embed Size (px)

Citation preview

CAPITOLO 1.

La rappresentazione dell’informazione

Il corso affronta i concetti fondamentali dell’informazione e della codifica,

necessari per comprendere come le tecniche di codifiche si sono evolute

seguendo i principi fondamentali, compatibilmente con i vincoli di complessità

realizzativi.

In particolare sono due gli argomenti che verranno affrontati :

• RAPPRESENTAZIONE DELL’INFORMAZIONE

• ELABORAZIONE DELL’INFORMAZIONE

I due argomenti sono strettamente correlati tra di loro: infatti se non so come

rappresentare determinate informazioni non so nemmeno come elaborale, quindi

data una determinata rappresentazione dell’informazione, esistono dei criteri di

elaborazione.

Tali criteri dovranno essere i più semplici possibili: dovranno essere cioè

meccanici, matematici

Prima di passare affrontare il primo argomento, e cioè la rappresentazione del

informazione, si da un breve accenno sui termini tecnologie e principi.

Si tratta di due concetti che vanno abbastanza indipendenti l’uno dall’altro: ad

esempio all’interno di un oggetto tecnologicamente avanzato ci possono essere

gli stessi principi di funzionamento che si trovavano in un calcolatore degli anni

50. Questo per dire che i principi sono gli enunciati, i concetti che stanno alla

base del funzionamento dei moderni sistemi di comunicazione, mentre le

tecnologie sono i mezzi attraverso i quali vengono attuati i principi e che

rispetto a questi ultimi, si evolvono continuamente.

Il corso si focalizza sui principi e in parte sui vari modi di rappresentare

l’informazione: questo argomento è trattato dalla teoria dell’informazione che è la

teoria fondamentale dietro tutto lo sviluppo della comunicazione digitale.

Il primo concetto fondamentale da cui partire è capire che cosa significa dare

un informazione a qualcuno.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

2

La teoria dell’informazione, considera l’informazione una selezione di

uno di tanti possibili concetti, oggetti o elementi già posseduti nel

patrimonio del ricevente.

La cosa importante da tenere presente, è dunque l’esistenza di uno spazio di

oggetti, di idee, elementi che a priori stanno nel ricevente: il passaggio

dell’informazione non è dire una cosa nuova, ma è dire una cosa che ci si poteva

aspettare, in quanto faceva parte di una delle conoscenze che potevo avere tra le

tante possibilità.

Possiamo rappresentare le tante informazioni di base che già possedute in questo

modo:

N := (s1, s

2 ......... s

n-1 )

Un numero finito di elementi ovvero informazioni che stanno nel patrimonio del

ricevente: questo insieme lo chiamiamo INSIEME INFORMATIVO e che

indichiamo con N.

L’informazione consiste dunque nel selezionare uno specifico elemento

tra questi n-1 possibili elementi si posseduti dal ricevente.1

Consideriamo un esempio di come può avvenire una selezione anche avendo

come interlocutore anziché una macchina una persona, supponiamo di voler

comunicare o trasmettere una parola della lingua italiana; in questo caso una

prima selezione che attua, tra tutto l’insieme informativo già posseduto, è

quella di eliminare tutte le parole che non sono italiane (quindi si è già eliminato

una incertezza). A questo punto, si può aggiungere un altra informazione dicendo

che la parola italiana inizia per E, questo riduce ulteriormente l’insieme

informativo in quanto si escludono tutte le parole che non iniziano per E. Ogni

volta dunque che si aggiunge una lettera come ulteriore informazione, si riduce

sempre di più l’incertezza operando un’esclusione di tutto ciò che non rientra

nell’informazione data.

Pertanto ad ogni informazione si attua una selezione sempre più precisa degli

elementi dell’insieme informativo di partenza fino a che non si arriva a ad

individuare con esattezza quell’unico elemento del patrimonio informativo N.

11 Nella mente umana non è semplice quantificare il numero delle informazione che si possono detenere, in quanto queste sono una continua evoluzione

dovuta all’esperienza di vario tipo che una persona fa nel corso della propria vita.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

3

Nell’ esempio considerato ogni lettera aggiunta, quindi ogni passaggio

dell’informazione, è un meccanismo formale di riduzione dell’incertezza su N.

E’ importante sottolineare la gradualità dei passaggi: supponiamo ad esempio

che lo spazio informativo N sia costituito dai 4 punti cardinali:

S0 S1 S2 S3

Nord Sud Est Ovest

ossia di avere un incertezza limitata a 4 elementi . Si richiede un meccanismo

che, dall’ incertezza che copre tutti i quattro possibili elementi, ce ne selezioni

solamente uno.

Si potrebbe numerare queste 4 possibilità e stabilire che l’informazione che si

passa è la 1° o la 2° o la 3° o la 4°. Tuttavia questo passaggio non tiene conto

che l’informazione può essere data con selezioni successive: nell’esempio si è

costretto a ridurre l’incertezza da 4 a 1 immediatamente.

Il modo per graduare la riduzione dell’informazione è quella di scomporre la

selezione in altre 2 selezioni. Possiamo rappresentare il tutto come segue:

A

AB

B

A B

N S E W

Figura 1.1

Il grafico così come è stato costruito, individua con il percorso AA l’elemento S0.:

si è scomposta la selezione con una prima selezione a valle e un altra selezione a

monte, questo perché l’informazione per sua natura è incrementale e ci sono

tanti criteri per ridurre l’insieme dell’incertezza.

Da questo esempio si deduce che l’unica informazione che non possiamo

scomporre in altre selezioni, è quella elementare: cioè quella tra due elementi

non essendo possibili ulteriori selezioni.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

4

Si arriva dunque al concetto di UNITÀ INFORMATIVA, ossia l’elemento

informativo elementare (o minimo) che non si può scomporre ulteriormente in

parti più elementari e che mi seleziona una tra due possibilità.

Si definisce unità informativa l’elemento che permette di selezionare tra

il minimo numero di casi possibili che è due; selezionare tra due elementi

significa quindi individuare uno solo di questi. Un modo per rappresentare l’unità

informativa ad esempio, è quella di prendere due numeri naturali 0 e 1 con i quali

individuare la possibilità zero e la possibilità 1.

Alla luce di quanto è stato detto possiamo dire che questo principio di

selezione dell’informazione (selezione di un elemento informativo) operata

attraverso il passaggio graduale dell’informazione, si realizza attraverso

un meccanismo che misuriamo in BIT2.

Si definisce BIT l'unità di informazione intesa come la scelta effettuata

fra due soli eventi, simboleggiati di norma, dalle cifre binarie 0 e 1.

L’unità informativa che consente dunque di selezionare una tra due possibilità e

quindi di partizionare lo spazio delle informazioni è il BIT.

Ritornando all’esempio delle parole italiane, si è visto che attuando una prima

selezione, si arrivava ad escludere tutto quello che non era parola non italiana,

abbiamo dato quindi un primo bit di informazione che ha partizionato l’iniziale

sistema informativo in due parti: le parole italiane e tutto il resto. Aggiungendo

un altro bit di informazione, ad esempio stabilendo che la parola italiana inizia per

E; si operava un'altra selezione: si escludevano tutte le parole che non iniziavano

per E.

Detto questo, vediamo come è possibile arrivare all’informazione finale attraverso

i bit. Nell’esempio di prima dei quattro punti cardinali, già con due bit, quindi due

unità informative elementari, riuscivo a identificare 4 possibilità, volendo ora

generalizzare il discorso a n-1 possibilità possiamo osservare la seguente figura:

2 Binary Digit

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

5

?

Sn/2Sn/4S 0 S3n/4 S N -1

Figura 1.2

Sia N l’ insieme informativo che rappresentiamo in una retta indicando gli n-1

elementi.

Intuitivamente possiamo pensare ai bit come degli indicatori di direzione, che di

fronte ad un bivio, quindi una scelta da effettuare, mi indichino la strada da

percorrere: o a destra o a sinistra (sinistra=0; destra=1). Nel grafico sopra,

ipotizziamo che la prima selezione procurataci dal bit sia zero: questo come

conseguenza mi porta ad escludere la metà dell’insieme informativo di partenza,

il che significa che l’elemento che io cerco si trova alla sinistra di N, escludendo

così tutta la parte destra.

Si tratta di un risultato non indifferente poiché già dalla prima selezione, abbiamo

escluso, nella migliore delle ipotesi, metà delle possibilità: con riferimento alla

figura, questo fa si che l’informazione che mi interessa si trovi sicuramente ed

esattamente tra la prima metà a sinistra (S0 ……Sn/2) del mio insieme informativo:

quindi il primo bit mi ha indicato la giusta direzione di dove posso recuperare

l’informazione. Andando avanti con le selezioni e quindi aggiungendo un altro bit,

faccio un'altra selezione che dimezza ulteriormente l’insieme informativo a sua

volta selezionato dal primo bit.

Questo esempio serve a capire che in un insieme di possibilità che hanno tutte

la stessa probabilità di verificarsi, ogni selezione mi dimezza l’incertezza

attraverso un solo bit di informazione.

Si può vedere con un altro esempio che cosa succede ogni volta che si effettua

una selezione. Sia il seguente grafico ad albero:

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

6

0

01

1

0 1

A B C D

1’ bit di selezione

2’ bit di selezione

3’ bit di selezione

AA BB CC DD EE FF GG HH

0 0 0 01 1 1 1

Figura 1.3

Come si vede dalla figura 1.3 alla prima incertezza si individuano 2 possibilità,

alla seconda, se ne individuano 4, alla terza 8 e così via. Se pensiamo a queste

diramazioni (che da monte a valle riducono maggiormente l’incertezza) come ad

un continuo avere informazioni su qual è la direzione giusta, quindi ad ogni

diramazione o bivio si associa un bit informativo in più, capisco il potere che

hanno i bit: cioè una sequenza di bit mi fa crescere esponenzialmente la capacità

di selezionare una precisa informazioni tra tutte quelle contenute nell’ insieme

informativo N: un solo bit mi permette di selezionare un elemento tra due, due

bit di selezionare uno tra quattro, tre bit uno tra otto, 4 bit selezionano uno tra

16, eccetera.

Con riferimento alla figura 1.3, la sola sequenza di 4 bit: 1011 individua

quell’unico elemento su uno spazio di 32 elementi.

Questo porta a concludere che n bit permettono di selezionare un elemento

su 2n possibili elementi dell’insieme informativo. La capacità selettiva dei

bit è data dalla legge esponenziale 2n che a titolo rappresentativo possiamo

riportare nella seguente tabella:

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

7

Numero di bit Numero di possibilità rappresentabili

1 2

2 4

3 8

4 16

5 32

6 64

7 128

8 256

9 512

10 1024

11 2048

12 4096

13 8192

14 16384

…… 2n

Se volessimo ad esempio sapere quanti bit servono per selezionare

un’informazione su diecimila, guardando la tabella, possiamo vedere che ne

servono 14: quindi con soli 14 bit possiamo selezionare una tra 16.384 possibili

elementi a disposizione, abbiamo cioè 14 scelte del tipo “si” “no” o anche “0” “1”,

che attraverso selezioni successive, ci permettono di individuare un elemento tra

16.384 possibili.

Nella teoria dell’informazione una sequenza di bit è quel meccanismo che viene

usato per individuare un elemento dell’insieme informativo che equivale a

trasmettere informazione.

Senza fare riferimento alla tabella indicata e volendo dare una formula generica,

diremo che la quantità n di bit necessari per ottenere un’informazione su N dati

disponibili è data da:

a) n = Log2 N

Ora non sempre il logaritmo in base due di N può dare un numero intero, tuttavia

i bit non possono essere numeri decimali nel contesto che stiamo discutendo, in

tal caso la scelta di bit la farò tra il più piccolo n che si avvicina a al logaritmo in

base 2 di N, ciò si indica con

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

8

b) n Log2 N

E si legge n estremo superiore (o soffitto) del logaritmo in base 2 di N. Individuo

cioè il numero minimo n di bit tale che:

c) Log2 N <= n

da cui consegue:

d) N < 2N

il numero delle possibilità facenti parte dell’insieme informativo N deve essere

inferiore o al più coincidere con 2n.

Ritornando infatti all’esempio di prima, per sapere quanti bit servono per

selezionare un elemento su 10.000, applicando la b) avremo

n = Log2 10000 = 13,28771238 =14

Si è arrotondato per eccesso il logaritmo in base due di 10.0000.

Quindi i bit che si individuano e che vanno a coprire l’insieme informativo N =

10000, è 14: infatti 214 =16384 che è maggiore di 10.000:

N =10000 < 214 = 16384

Si è detto che nella rappresentazione dell’informazione, i bit combinati tra loro,

cioè messi in sequenza l’uno all’altro, permettono di individuare spazi informativi

sempre più vasti fino a che non si arriva al numero di bit necessario, dato lo

spazio informativo prescelto.

1.3 Codici e codifica

Con riferimento alla figura 1.3, si è visto che la sequenza di bit 101 individua

l’elemento FF. La selezione porta con se una corrispondenza tra sequenza di bit e

oggetto che si vuole rappresentare, nell’esempio appena descritto l’elemento FF è

univocamente identificato con la sequenza di bit 101, analogamente gli altri

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

9

oggetti saranno individuati con altre diverse sequenze di bit, l’una diversa

dall’altra.

Riprendiamo l’ esempio dei quattro punti cardinali del paragrafo 1.1, N =4 , Il

grafico ad albero diventa:

0

01

1

01

N S E W

1’ bit di selezione

2’ bit di selezione

Figura 1.4

Le possibili combinazioni di bit rappresentate dal grafico, si possono organizzare

in una tabella che mi evidenzia una corrispondenza biunivoca tra la sequenza dei

bit e gli elementi da essi individuati. Ottengo così il seguente codice:

Tabella di codifica

Numero di bit Oggetto insieme informativo

00 N

01 S

10 E

11 W

ogni sequenza di due bit individua in maniera univoca un solo elemento

dell’insieme, e viceversa: ad ogni elemento di N, è associata una sola sequenza

di bit.

L’abbinamento biunivoco tra informazione e sequenza binaria è detta

codifica. Quindi il codice è una particolare codifica di un insieme di

informazione con sequenze binarie.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

10

Nella rappresentazione dell’informazione il meccanismo di codifica funziona nel

modo seguente:

S0

S3

S2

Sn - 1

Si

CODIFICA B1 b2 b3…Bn-1 DECODIFICA

Figura 1.5

Definiamo S:= {s1, s2, s3, ...sn-1}, l’insieme di informazione che si vuole

rappresentare, e con si gli elementi che lo compongono, si fissa una regola di

corrispondenza (detta anche mapping) tra gli elementi di S e le sequenze di bit

attraverso tabelle di codifica: a questo punto l’informazione così codificata per

essere utilizzata dall’uomo (che poi è il destinatario finale dell’informazione) deve

essere a sua volta codificata al contrario mediante un sistema decodifica che mi

porta all’elemento iniziale si di S.

{N,S,E,W}.

E’ importante notare che alla base della codifica e della decodifica ci deve essere

la stessa tabella rappresentativa delle informazioni, ossia devono valere le

stesse regole altrimenti non riusciremmo a risalire alle informazioni originali3 o

andrei a recuperare informazioni non esatte.

Vale la pena sottolineare che i codici così come sono stati individuati dagli esempi

che abbiamo fatto, possono non essere gli unici codici, perché il fatto di aver

valorizzato con 0 e 1 le possibilità di selezione è solo una convenzione. Si

potevano scegliere altri numeri, oppure dei simboli, quindi una volta determinato

il numero di bit necessari ad individuare un elemento informativo, la scelta con

cui rappresentare i bit può essere arbitraria. Questo richiama l’esigenza di creare

codici standard che siano universalmente riconosciuti3.

1.4. Codici a lunghezza fissa. Codice A.S.C.I.I.

Si definisce lunghezza del codice il numero dei bit necessari ad individuare

l’unità informativa

3questo è un aspetto molto importante da tenere presente in quanto spesso sta alla base di problemi di unificazione di modi di rappresentare le informazioni.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

11

L’esempio riportato utilizza per ogni elemento informativo, una sequenza di due

bit, pertanto il codice individuato ha lunghezza 2.

Un codice viene detto a lunghezza fissa quando viene usato sempre lo stesso

numero di cifre per la rappresentazione di qualunque valore.

Nell’esempio dei quattro punti cardinali del paragrafo 1.1,essendo N = 4,

applicando la c) otteniamo:

N = Log2 4 = 2 = n

Dove n indica la lunghezza del codice.

Se il codice fosse di tre bit, quindi avesse lunghezza 3, le possibilità che fanno

parte dell’insieme informativo aumentano passando da 22 a 23, per cui

considerando sempre l’esempio dei punti cardinali, le possibili combinazioni di

sequenze di tre bit raddoppiano rispetto a quelle di prima che erano di due bit.

Graficamente avremmo:

0

01

1

01

N S E W

1° bit di selezione

2° bit di selezione

3° bit di selezione

N NE E SE S SW W NW

Figura 1.6

ottenendo la seguente tabella di codifica:

bit oggetto insieme informativo 000 N 001 NE

010 E

011 SE

100 S

101 SW

110 W

111 NW

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

12

Un primo esempio di unificazione di modi di rappresentazione dell’informazione, è

stato il codice ASCII la cui sigla sta per: "American Standard Code for

Information Interchange", cioe' "Standard americano per lo scambio di

informazioni". Il codice ASCII è rappresentazione numerica dei caratteri di una

telescrivente dati dalle lettere dell’alfabeto maiuscole e minuscole più una serie di

simboli e caratteri particolari. Tale codice fu inventato molti anni fa per le

comunicazioni fra telescriventi (infatti ci sono dei codici di comandi specifici che

sono quasi incomprensibili, ma al tempo avevano la loro funzione), poi man mano

e' diventato uno standard mondiale.

Il codice ASCI standard ha lunghezza 7 bit, per cui è in grado di codificare 27 =

128 caratteri, viene anche definito ASCII7. (si riporta in appendice la tabella

ASCII7). La tabella ASCII mi codifica in maniera univoca dunque, ogni singolo

elemento dato da un tasto della tastiera di una telescrivente. Pertanto se

dovessimo rappresentare in codice ASCII7 un qualsiasi testo, ad esempio il testo

“caro prof”, seguendo le indicazioni della tabella, ogni singolo carattere sarebbe

così rappresentato:

carattere C A R O P R O F Sequenza

di bit 1000011 1000001 1010010 1001111 1010000 1010010 1001111 1000110

Ciò significa che sapendo che il codice è di lunghezza 7, se si riceve una

sequenza di bit di questo tipo:

100001110000011010010100111110011111001111100111110100101001111100011

0

Data la tabella ASCII, si è in grado di decodificare l’informazione semplicemente

estraendo da tale stringa, sequenze di bit a blocchi di 7 ricuperando in questo

modo l’informazione iniziale.

Il codice ASCII standard è stato successivamente ampliato portando i bit da 7 a 8

e la semplice aggiunta di un bit ha raddoppiato il numero dei caratteri del codice.

I codici ASCII estesi hanno il bit 7=1.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

13

1.5. Codici a lunghezza variabile

I codice a lunghezza variabile traggono origine da un’idea che ebbe nel 1837

Samuel Finley Breese Morse, l’inventore del famoso codice Morse e del telegrafo

elettrico: apparecchio in grado di mandare una tensione elettrica tramite un

semplice contatto, inviando così dei segnali che uniti appropriatamente, formano

tutte le lettere dell'alfabeto. I due segni sono la linea (che corrisponde ad un

suono lungo) ed il punto (che invece e' un suono breve).

Morse codificando questi impulsi, ideò un sistema di comunicazione che ha

segnato la storia delle comunicazioni a distanza. (viene riportata in appendice ll

codice Morse)

A differenza del codice ASCII, Morse ebbe l’intuizione di codificare le informazioni

o caratteri, con un codice non a lunghezza fissa, ma con una lunghezza che

variasse a seconda dell’elemento considerato facendo dipendere la variabilità,

dalla frequenza con cui veniva usato un determinato carattere: più precisamente,

attribuendo dei segnali più corti ai caratteri maggiormente usati, e dei segnali più

lunghi ai caratteri meno frequenti.

Il problema è che volendo applicare l’idea di Morse ai bit, ed essendo i bit

immagazzinati in un elaboratore, ogni volta che ci si trova di fronte ad una

sequenza di bit sufficientemente lunga, e non potendo estrarre sequenze a

blocchi fissi di n bit, la macchina non è più in grado di risalire in maniera univoca

all’informazione.

Supponiamo per esempio di tradurre in bit il codice Morse valorizzando con 0, il

punto, e con 1 la linea, otteniamo un codice a lunghezza variabile, ossia un

codice la cui sequenza di bit varia da carattere a carattere:

carattere bit morse A 01 • — B 1000 — • • • C 1010 — • — • D 100 — • • E 0 •

Se rappresentiamo in bit caratteri ABC della tabella, otteniamo la seguente

sequenza di bit:

0110001010

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

14

tuttavia, questa sequenza, dovendo essere letta da un elaboratore, questo non è

in grado di identificare in maniera univoca i singoli caratteri, poiché tra di essi

non esiste alcuna separazione fissa: cioè a seconda di dove si mettono i

separatori nella sequenza, si ottengono lettere diverse. Questo fa si che il codice

sia ambiguo.

Morse risolse questo problema, separando la sequenza con un piccolo intervallo

di tempo durante il quale veniva interrotto il segnale di trasmissione.

Resta comunque fondamentale che l’idea di codifica di Morse, era quella di

impiegare meno bit possibili nella rappresentazione delle informazioni, mediante

un codice variabile la cui lunghezza dipendesse dalle frequenze con cui i singoli

caratteri venivano impiegati.

1.6. La codifica di Huffmann

L’idea di Morse fu tradotta in bit qualche anno più tardi da David A. Huffman, che

risolse così il problema dell’ambiguità individuando un metodo di determinazione

del codice ottimo che garantisce l’impiego del minor numero di bit possibile per la

sua codifica. I codici Huffman sono codici a lunghezza variabile, cioè codici

che attribuiscono sequenze più brevi di bit ai caratteri che hanno più probabilità

di verificarsi.

A differenza del codice ASCII a lunghezza fissa, governato dalla legge N>=Log2N,

Huffman codifica i simboli più probabili usando per essi meno bit di quelli

impiegati per rappresentare simboli meno probabili.

Trattandosi di codici a lunghezza variabile, non ha più senso parlare della

lunghezza del codice, proprio perché ciascuna informazione è codificata da un

diverso numero di bit in sequenza.

1.7. Lunghezza media nei codici a lunghezza variabile.

Un primo problema che si presenta nei codici a lunghezza variabile, è quello di

individuare la lunghezza del codice.

Una grandezza rappresentativa della dimensione del codice a lunghezza variabile,

è quella di usare la media dei bit ponderata con la lunghezza dei bit associati a

ciascun carattere. Per comprendere meglio, supponiamo di aver codificato un

insieme di 4 caratteri con il seguente codice a lunghezza variabile secondo

quanto riportato dalla tabella

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

15

Carattere Bit Lunghezza A 0 Lunghezza 1 B 10 Lunghezza 2 C 110 Lunghezza 3

D 111 Lunghezza 4

Se prendessimo solo la media delle lunghezze di ciascuna sequenza di bit per

ogni elemento, il risultato che si ottiene non è indicativo della lunghezza del

codice perché non tiene conto della frequenza con cui si manifestano i vari

simboli. Così facendo infatti peseremmo tutti i simboli allo stesso modo, dando

per scontato che un determinato contesto tutti si manifestano con la stessa

frequenza o probabilità in.

Supponiamo ora di voler codificare una sorgente informativa rappresentata dal

seguente testo composto da 15 simboli o caratteri:

carattere A A B A A B C A A B A A B C D Bit 0 0 10 0 0 10 110 0 0 10 0 0 10 110 111

Lunghezza 1 1 2 1 1 2 3 1 1 2 1 1 2 3 3

Se per ogni lettera del testo, sommiamo il numero dei bit che codificano ogni

singolo carattere, otteniamo il numero totale dei bit necessari per rappresentare

tutto il testo considerato: ossia 25 bit per trasmettere 15 simboli. Dividendo il

totale dei bit del testo per il numero di simboli, otteniamo la media ponderata

della lunghezza del codice che rappresenta il testo:

Numero totale di bit 25 = 1,666 Numero totale di caratteri del testo 15

In media ciascun simbolo ha richiesto 1,66 bit per.

Il risultato che abbiamo ottenuto non è altro che la media della lunghezza di ogni

singolo carattere “pesata” con il numero di volte in cui compare il carattere

stesso.

Se per rappresentare ciascun carattere del testo avessimo usato con un codice a

lunghezza fissa, con n=4 caratteri da rappresentare, avremmo avuto bisogno di 2

bit contro 1,66 bit impiegati dal codice a lunghezza variabile. Ciò significa che

abbiamo risparmiato circa il 40% dei bit da utilizzare come rappresentazione

dell’informazione, ottenendo un risultato importante in termini di riduzione della

la memoria.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

16

Data una statistica rappresentata dalle frequenze, e dato un codice a lunghezza

variabile, per quel codice si è allora in grado di calcolare il numero di bit per

simbolo.

Sempre con riferimento al testo preso ad esempio, riscriviamo il conteggio della

media ponderata, evidenziando per ciascun carattere, il numero di volte in cui

esso compare nel testo:

(8x1) + (4x2) + (2x3) + (1x 3) 25 = 1,666 15 15

Ossia raggruppando:

066,115

253*

15

13*

15

22*

15

41*

15

8 ==

+

+

+

Quanto indicato sopra non ha fatto altro che evidenziare per ciascun carattere del

testo, la frequenza relativa con cui si manifesta il carattere stesso: ossia il

numero di volte con cui compare un singolo carattere rapportato al totale(15) dei

caratteri presenti nel testo.

La frazione che così si ottiene, può essere indifferentemente espressa anche in

percentuale, dal momento che il risultato non cambia: infatti:

8/15 = 53,3%

4/15 = 26,6%

2/15 = 13,3%

1/15 = 6,6%

L’esempio considera però un testo piccolo e quindi gestibile da un punto di vista

della misurazione delle frequenze, ma generalmente si ha a che fare con insiemi

informativi molto più vasti di quello considerato e se la statistica è stata fatta con

un numero sufficiente di volte, Le frequenze relative così come sono state

definite e calcolate nell’esempio, rappresentano nient’altro che la probabilità

che ha un singolo carattere di verificarsi.

Ora con riferimento all’esempio, indicano con pa, pb, pc, pd rispettivamente le

probabilità di ciascun elemento A,B,C,D ed con na , nb ,nc, nd i numero di bit

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

17

attribuiti ai singoli caratteri, il calcolo scritto sopra può essere generalizzato in

questo modo:

n = (pa*na) + (pb*nb)+(pc*nc)+ (pd*nd) = 066115

253

15

13

15

22

15

41

15

8,==

+

+

+

xxxx

dove n rappresenta la lunghezza media del codice, ossia il numero medio di

bit per singolo carattere. Quindi n fornisce una misura del contenuto medio di

informazione associato ad ognuno dei simboli emessi dalla sorgente in questo

esempio rappresentata da un testo di 15 caratteri

In generale indicando con:

S = s0, s1, s2, ........., sn-1

l’insieme informativo, con ni il numero di bit individuati dal codice attribuiti al

generico elemento si, e con pi la probabilità di uscita del simbolo si: allora la

lunghezza media del codice sarà cosi definita:

f) ∑−

=•=

1

0

n

iii

pnn

1.8. Ambiguità

Il fatto di aver individuato un metodo con cui calcolare la lunghezza media di un

codice a lunghezza variabile, ci pone il problema di trovare il codice migliore che

mi individua univocamente le informazioni. Infatti una volta determinata una

codifica, può essere che esistano altri codici più o meno efficienti a seconda della

combinazione che c’è tra le lunghezze e le frequenze.

Sempre con riferimento all’esempio del paragrafo precedente, supponiamo che

per i quattro caratteri così come sono stati codificati, sia stata individuata un'altra

tabella di codifica come la seguente:

bit caratteri

0 A 1 B 10 C 11 D

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

18

Riducendo ulteriormente il numero di bit associati ai vari caratteri, istintivamente

viene da pensare che il codice della tabella appena prodotta, sia migliore di quello

della tabella precedente, perché è stato costruito utilizzando meno bit. Tuttavia,

possiamo facilmente verificare che questo codice ha uno ambiguità: se

consideriamo infatti la sequenza di bit {10}, notiamo che la stessa sequenza

rappresenta indifferentemente i caratteri A o B o C. E’ presente dunque un

ambiguità perché, essendo il codice a lunghezza variabile, la macchina non è in

grado di riconoscere in modo univoco le informazione codificate dai bit4.

Per ovviare a questa ambiguità, è necessario fare in modo che se ad esempio si

decide di codificare il carattere A attribuendogli come primo bit il valore zero,

allora nessun altro carattere può essere codificato avendo il bit zero come primo

bit, ossia, per tutti i restanti caratteri della sorgente informativa, si devono

escludere tutte le possibili combinazioni di codici che iniziano con zero.

Infatti avendo attribuito ad A il bit zero si è escluso metà dello spazio

informativo, obbligando così gli altri caratteri ad usare 2, 3 o più bit.

Con una semplice rappresentazione grafica riusciamo subito a capire se un codice

è ambiguo o meno. Costruiamo il grafico ad albero della tabella:

BIT CARATTERI

0 A

1 B 10 C 11 D

0

0

1

1

D C

1’ bit di selezione

2’ bit di selezione

A B

Figura.1.7

4 Nei codici a lunghezza fissa come il codice ASCII, il problema non si presenta perché la lunga stringa dei bit viene catturata a blocchi di 7 per cui

l’informazione viene automaticamente codificata dalla macchina.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

19

Dalla figura 1.6 notiamo che c’è un anomalia: il primo bit di partenza seleziona

indifferentemente sia alla lettera A che alla lettera B; questo significa che per

arrivare a selezionare la C per esempio, si transita in un passaggio che seleziona

anche il carattere B, è evidente che a questo punto non siamo in grado di sapere

in maniera univoca se è stato selezionato il carattere C o il carattere B;

In altre parole si può dire che c’è un simbolo la cui rappresentazione è un

sottoinsieme, o un prefisso dei bit di un’altra rappresentazione: in figura 1.6. la

rappresentazione della lettere B è un prefisso della rappresentazione della

lettera C.

1.9. Il codice ottimo di Huffman

Il problema dell’ambiguità è stato risolto da Huffman, il quale ha fornito il criterio

con cui individuare un codice ottimo per codificare le informazioni: in particolare,

dato un codice a lunghezza variabile per l’insieme informativo in cui il generico

elemento si ha probabilità di pi di verificarsi, si dice ottimo, quando attribuisce

ni bit al simbolo si, tali che la lunghezza media del codice n è minima; ossia il

codice ottimo di Huffman è tale che:

g) ∑−

=•=

1

0

n

iii pnn = minima

pertanto, data una sequenza di oggetti facenti parte dell’insieme

informativo, quando la lunghezza media del codice n è minima, allora il

codice ottimo garantisce l’impiego del minor numero di bit per la sua

codifica. Inoltre non esiste alcun altro codice con altri ni che trova un

valore più basso di n individuato dal codice stesso.

Il codice individuato secondo il metodo di Hufman è quello ottimo.

Il codice di Huffman è un codice univocamente decodificabile a prefisso e ottimo.

Questo significa che nessuna parola del codice è il prefisso di un'altra parola del

codice stesso, e che il processo di decodifica è univoco; l’univoca decodificabilità

è un requisito irrinunciabile per ogni codice, mentre il fatto che un codice sia a

prefisso è molto comodo perché, in fase di decodifica, consente di evitare perdite

di tempo.

I Codici di Huffman sono codici a lunghezza variabile che attribuiscono le parole

codici più brevi ai simboli a cui risultano associate le frequenze più elevate.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

20

Con riferimento all’esempio del paragrafo 1.6., se avessimo codificato il testo con

un codice a lunghezza fissa, essendo ciascun carattere codificato con ni=2 bit,

applicando la g) otteniamo una lunghezza media pari a :

∑ ∑−

=

=•==•=

1

1

1

1

1222n

i

n

iii

ppn

perché

11

1

=∑−

=

n

iip

N

nP i

i=

infatti pi rappresentano le frequenze relative con cui ciascun carattere si

manifesta.

Riprendendo l’esempio del paragrafo 1.6, riportiamo la seguente tabella di

codifica:

Elemento Carattere Frequenza Probabilità Probabilità

pi Lunghezza codice

Lunghezza codice ni

s0 A 56% 8/15 pa 1 na

S1 B 28% 4/15 pb 2 nb

S2 C 8% 2/15 pc 3 nc

S3 D 8% 1/15 pd 3 nd

Data questa tabella di distribuzione delle probabilità dei singoli caratteri, il criterio

per individuare il codice ottimo secondo quanto stabilito da Huffman si realizza

attraverso il procedimento rappresentato dal seguente grafico:

Figura 1.8 Processo di riduzione nella costruzione di un codice di Huffman

Tale grafico si ottiene distribuendo su un asse le probabilità di ciascun carattere

ordinate in modo decrescente.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

21

Si prendono i primi due caratteri con minor probabilità, si marcano, e si

accorpano creando un nuovo simbolo con probabilità uguale alla somma delle

probabilità dei caratteri così individuati: nel grafico della figura 1.7, si osserva

che i primi due caratteri a più bassa probabilità sono le lettere C e D: in tal caso

si segnano e si accorpano in un unico simbolo V0 facendo la somma delle loro

probabilità che è pari a 3/15.

Accorpando i due caratteri C e D, si è così individuato un nuovo simbolo indicato

con V0 che li identifica con probabilità pari a 3/15 e che si sostituisce a loro in

modo tale da non considerarli più nella creazione del codice. Rimangono allora i

caratteri A, B e V0.

A questo punto, si ripete la stessa operazione di prima: tra i caratteri A, B e V05

si cercano i due con minore probabilità individuando in questo secondo

passaggio, i caratteri V0 e B, si marcano e si uniscono costruendo un nuovo

simbolo V1 con probabilità pari alla somma delle probabilità di V0 e B (7/15).

Analogamente si conclude la costruzione del codice accorpando V1 e A.

L’albero costruito secondo il metodo di Huffman ci consente a questo punto di

ricavare il codice ottimo che, mettendo per convenzione lo zero a destra e 1 a

sinistra, sarà dato dalla seguente tabella di codifica:

carattere Bit

A 0 B 10

C 110

D 111

Questo codice individuato secondo il metodo di Huffmann, garantisce di essere

quello migliore tra tutti i possibili codici, poiché è quello che contiene lunghezze ni

di sequenze di bit che minimizzano la lunghezza media dei bit necessari a

rappresentare un singolo elemento si dell’insieme informativo.

Se avessimo impiegato un codice a lunghezza fissa, con quattro oggetti da

codificare, avremmo dovuto usare 2 bit applicando la formula:

n Log2 4 = 2

5Si è definito impropriamente V0 carattere per semplificare il procedimento, in realtà V0 è solo un un accorpamento a cui è stato dato un valore (3/15) ai fini di

poter spiegare il passo successivo da seguire nella costruzione del codice ottimo.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

22

I codici individuati secondo l’algoritmo di Huffman sono un risultato notevole

anche da un punto di vista economico, se si pensa al risparmio che si realizza in

termini di costi di trasmissione dell’informazioni.

Riassumendo quanto detto sopra, passi dunque da seguire nella costruzione del

codice ottimo secondo il metodo di Huffman possono essere così riassunti dal

seguente algoritmo:

1. si individuano i due simboli (virtuali o reali) non ancora marcati con probabilità

più bassa;

2. si marco i simboli individuati;

3. si crea un simbolo virtuale con probabilità pari alla somma delle probabilità due

simboli individuati;

4. se ci sono simboli non marcati, si ritorna al passo 1.

L’algoritmo finisce quando i simboli sono stati marcati tutti.

Notiamo che il criterio del codice ottimo di Huffman, indicato dalla g), è stata

vista fino ad ora descritto come una proprietà intrinseca del codice: cioè si

individua un codice che trova una determinata sequenza di bit per singolo

elemento informativo.

Tuttavia il fatto che esista un codice ottimo che minimizza la g) vuol dire che non

esiste nessuna codifica che rappresenti l’informazione con una lunghezza media

inferiore di quella calcolata.

Esiste dunque un limite fisico che non è più dato dal numero degli elementi

informativi contenuti nella sorgente informativa di partenza, ma delle probabilità

che ciascun elemento della sorgente ha di verificarsi.

Infatti, negli esempi riportati, si può notare che i codici realizzati secondo il

metodo di Huffmann, sono stati individuati a partire dalle singole probabilità di

ciascun elemento informativo, senza utilizzare nessun altra grandezza: cioè a

partire dalle singole pi di ciascun elemento della sorgente informativa, abbiamo

individuato la lunghezza media minima n .

Ciò significa che n , non dipende dal codice, ma solamente dalle probabilità dei

singoli elementi che compongono la sorgente, per cui dato un insieme

informativo e data la distribuzione di probabilità di ciascun elemento, il codice di

Huffman viene automaticamente determinato e ci permette di sapere quanti bit

sono necessari per codificare ogni singolo elemento.

Università degli studi di Padova - Facoltà di Scienze Statistiche Corso di Laurea in Gestione delle Imprese – “Sistemi di Elaborazione”. Prof . Nicola Zingirian

23

Ora il fatto che a priori si sappia già che determinati simboli abbiano più

probabilità di verificarsi e altri meno, discostandoci da una condizione di

equiprobabilità6, ha come conseguenza che la sorgente informativa non è più

significativamente informativa in termini di riduzione dell’incertezza.

Infatti più la distribuzione delle probabilità di ciascun elemento informativo è

sbilanciata, discostandoci così da una situazione di equiprobabilità, minori

saranno i bit necessari per codificare in modo automatico nonché ottimale, i vari

elementi dell’insieme informativo: in questo caso infatti, la sorgente è, a priori,

meno informativa. Pertanto la grande informazione che scaturisce dalla sorgente,

si ha quando la distribuzione delle probabilità di ciascun elemento della sorgente

stessa, presenta una forte variabilità, ossia quando c’è la massima incertezza.

Massima incertezza significa che tutti i simboli si sono equiprobabili.

Il fatto che gli elementi siano equiprobabili, non da nessun vantaggio rispetto al

codice a lunghezza variabile.

Quanto detto lo possiamo facilmente verificare con questo banale esempio;

1

1/8 1/8 1/8 1/8 1/8 1/81/8 1/8

2/8 2/8 2/8 2/8

4/8 4/8

1

Figura 1.9.

alla base del grafico abbiamo riportato le probabilità di ciascun elemento che è

pari ad 1/8. Seguendo il metodo di Huffman arriviamo a costruire un codice a

lunghezza fissa 3. La sorgente da dunque 3 bit per simbolo.

6Ciascun elemento dunque ha lo stesso grado di probabilità di verificarsi; si è dunque in una condizione di massimo grado di indeterminatezza.