1 fondamenti di informatica di matjaz hmeljak parte informazione e codici

161
1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

Upload: sesto-massa

Post on 01-May-2015

229 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

1

FONDAMENTI DI INFORMATICA di Matjaz Hmeljak

parte

INFORMAZIONE e CODICI

Page 2: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

2

contenuto per la parte informazione:

* DEFINIZIONE * MESSAGGI, DATI* INFORMAZIONE E PROBABILITA'* QUANTITA'* ESEMPI* DATI COMPOSTI* SIMBOLI NON EQUIPROBABILI* INFORMAZIONE MEDIA* SIMBOLI DIPENDENTI* INFORM. MEDIA DI UNA LETTERA DI UN TESTO

I N F O R M A Z I O N E - cenni

Page 3: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

3contenuto per la parte codici:

contenuto della parte codici:

codici, rappresentazione, dati

codifiche binarie codice ASCII codice UNICODE

codici a controllo di errore codici a correzione di errore

bibliografia

esercizi

Page 4: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

4parte informazione

segue la parte relativa

al concetto di informazione,

e

alla misura dell’informazione

Page 5: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

5 informazione e codici

definizione

dell' informazione

?

Page 6: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

6I N F O R M A Z I O N E - cenni

sistema sorgente ->

?

hai vinto 1 miliardo alla lotteria di carnevale di Canicattini Bagni.

-> sistema ricevente

messaggio: contiene informazione

canale di trasmissione

Page 7: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

7I N F O R M A Z I O N E - definizione

“sistema di trasmissione” : due persone A e B, la persona A (sorgente di informazione) dice

alla persona B (ricevente di informazione) :

hai vinto 1 miliardo alla lotteria di carnevale di Canicattini (dato = informazione codificata )

A ------------------------------------> Bsistema canale di trasmiss. sistemasorgente informazione ricevente

(messaggio M)

Page 8: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

8I N F O R M A Z I O N E - definizione

Con una dizione un po' approssimata diremo che :

l'informazione e' il contenuto del messaggio M trasmesso da un sistema sorgente A al sistema ricevente B,

"contenuto" nel senso:

l’informazione contenuta nel messaggio M e' capace di modificare lo stato di B !!

... un messaggio o un dato che non modifica lo stato del sistema ricevente contiene zero informazione ...

Page 9: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

9I N F O R M A Z I O N E - messaggio / dato

esempio: abbiamo trovato un nuovo modo di far soldi con un’ attivita’ in internet e lo scriviamo sull’ ultima pagina della nostra rubrica telefonica:

A ------------------> B sistema dispositivo di = supporto sorgente registrazione di memoria informazione --> dato

in un secondo tempo, eventualmente, avremo...

C <----------------------- B sistema rice- dispositivo di = supporto vente lettura di memoria <-- dato

Page 10: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

10I N F O R M A Z I O N E - messaggio / dato

notare: la stessa comunicazione verbale implica l’uso di simboli per rappresentare oggetti (o altro): la “parola” “gatto” e’ un simbolo che rappresenta un gatto reale, la sequenza di suoni g-a-t-t-o non ha alcun collegamento con l’oggetto rappresentato (idem per cat, neko, mačka, kot, ecc)la scrittura (circa 6000 anni fa) e’ un sistema di rappresentazione di informazioni (codifica)

A ------------------> B SCRIBA stilo TAVOLETTA

in un secondo tempo (2 o 6000 anni dopo): C <----------------------- B LETTORE TAVOLETTA

Page 11: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

11I N F O R M A Z I O N E - messaggio / dato

L' informazione puo' essere trasmessa

( messaggio tra due sistemi [ A ==> B ] )

o registrata (dato =info codificata su un supporto di memoria per essere in seguito riutilizzata)

utilizzando un codice di rappresentazione (vedremo)

A ------------------> B abiesabies dispositivo 37A4F =

0011 0111 1010 0100 1111 (trasmette dato bla-bla e codifica) codificato

Page 12: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

12I N F O R M A Z I O N E - cenni

dell' informazione interessa:

* quantita' (unita' di misura)

* rappresentazione (codici)

* contenuto (significato, interpretazione)

Page 13: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

13I N F O R M A Z I O N E - cenni

* quantita' (unita' di misura) come si misura l’informazione ? (2 pinte di informazione? - 2 claftre di informazione?) vedremo tra breve

* rappresentazione (codici)

( come si scrive "bisturi" in cinese? ... oppure come si scrive “tassa di importazione” in wolof? o “fondamenti di informatica” in guarani’ ? o "domani" in azero? )

Page 14: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

14I N F O R M A Z I O N E - cenni

* contenuto (significato, interpretazione)lo studio del contenuto o del significato, interpretazione(analisi pragmatica) di un messaggio non puo' prescindere dal contesto: 1) es.: < l’inquinamento del mare sta aumentando > 2) es.: < mi devi 10 euro > 3) es.: < 1997 x 1997 = 3988009 > 4) es.: < #include <conio.h> void main() { cputs(“ciao”); } 5) es.: < la devolution, l'involution, il furbolution e la pollution sono in fase di deflation... >

Page 15: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

15I N F O R M A Z I O N E - cenni

* contenuto (significato, interpretazione) 6) es.: < “ il recente lavoro di Zaffira Caterazzu abbraccia il ritmo esistenziale, dilatandosi nella simbologia dalle pre- cedenti porte che adombravano la necessita'dell'apertura e dell'incontro oltre le differenze, e comprende questa signi- ficanza oltre i lacerti degli elementi visivi e formali nel non effimero prototipo del nulla, che pochi comprendono” >

=> il contenuto del messaggio in generale implica due contesti, del sistema sorgente e del sistema riceventeil messaggio qui sopra (peraltro parte di un testo "reale" di un critico d'arte) richiede un ambiente di nozioni del ricevente che forse la maggior parte di noi non ha ... ;-)lo studio del significato e l' interpretazione (analisi pragmatica) di un messaggio sara’ oggetto del nostro corso solo per programmi C++ ...

Page 16: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

16I N F O R M A Z I O N E - cenni

vediamo ora meglio questi attributi dell'informazione:

•quantita' (unita' di misura)

•rappresentazione (codici)

* contenuto (significato, interpretazione)

cominciamo con la quantita' ....

questa e' legata alla probabilita'

Page 17: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

17I N F O R M A Z I O N E - quantita’

La quantita' di informazione associata ad un messaggio o ad un dato

dipende dall' incertezza del messaggio ovvero dalla probabilita' di avere proprio quel messaggio tra tutti i messaggi possibili

Ad es. il messaggio "non hai vinto alla lotteria"

ha un contenuto di informazione cioe’ l’effetto sullo stato del ricevente e’ ben diverso dal messaggio:

"hai vinto 1 miliardo alla lotteria"

Page 18: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

18I N F O R M A Z I O N E - probabilita’ di un dato

Esempi ... [quantita’ info del messaggio <--> probabilita’ del mess.]

vincita in lotteria rionale, con 200 numeri, un premio:- probabilita' di vincita 1/200

vincita su lancio di moneta a testa/croce: - probabilita' di vincita di 1/2

vincita al concorso per un posto di ricercatore presso l' Universita' di Raute con unico candidato (raccomandato): - probabilita' di vincita 1/1 (certezza)

laurea in ingegneria gastronomica con 110 in 2 anni - probabilita’ di riuscita 0 ( ..... impossibile ... non c’e’ )

Page 19: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

19I N F O R M A Z I O N E - I = f(probabilita’)

la quantita’ di informazione e’ legata all’ incertezza con cui si aspetta il messaggio (o il dato), quindi alla probabilita’ di quel dato (o messaggio) :

un dato relativo ad un evento un dato relativo ad un evento pocopoco probabile probabile contiene una contiene una grandegrande quantita' di informazione; quantita' di informazione;

e piu' conosco il contenuto del messaggio, cioe' maggiore e' la probabilita' del messaggio -> piu' piccola e' la quantita' di informazione contenuta;

fino al dato relativo ad un evento fino al dato relativo ad un evento certocerto, che , che ha probabilita' uno e a cui si associa un quantita' ha probabilita' uno e a cui si associa un quantita' di informazione di informazione zerozero..

Page 20: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

20I N F O R M A Z I O N E ... I = f(p)

la quantita’ di informazione decresce al crescere della probabilita’ del dato:

I

p

p grande

I piccola

p piccola

I grandediagram-ma a fianco, in prima approssi-mazione:

Ma il legame tra probabilita' e informazione non e' lineare; inoltre- si tenga presente che la probabilita'viene misurata in valori da 0 (evento impossibile) a 1 (evento certo)

Page 21: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

21I N F O R M A Z I O N E - I = f(probabilita’)

il legame tra la probabilita’ e la quantita’ di informazione e’ di tipo logaritmico; se dimezza la probabilita’ -> l’ informazione aumenta di uno

Probabilita' grande, P =1 significa Info=0Informazione piccola,

Informazione

1/2

1

1/4

2

1 probabilita'0

3

1/8Ad un evento certo si associa un'informazione nulla, ad un evento poco probabile si associa un'informazione grande.

probabilita'piccola-informazionegrande

Page 22: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

22la funzione logaritmo

funzione logaritmo: log2(n) = x inversa di n = 2x

...alcuni valori:log2(0,0625)=-4 0,0625= 2-4

log2(0,125)=-3 0,125= 2-3

log2(0,25)=-2 0,25= 2-2

log2(0,5)=-1 0,5= 2-1

log2(1)=0 1 = 20

log2(2)=1 2 = 21

log2(4)=2 4 = 22

log2(8)=3 8 = 23

log2(10)=3,3 10= 23,3

log2(16)=4 16= 24

log2(1024)=10 1024= 210

log2(1048576)=20 1048576=220

log2(x)

x10 0,5

-1 -

-2 -

Page 23: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

23I N F O R M A Z I O N E - I = log2(1/probab)

il legame [ probabilita’ - quantita’ di informazione ] e’ di tipo logaritmico: I = log2(1/p) = -log2(p)

Per un dato relativo ad un evento su N eventi possibili ed equiprobabili:

la probabilita’ del dato e’ p = 1/N e quindi I= log( 1/(1/N) )= log( N )

Prob

Info

Page 24: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

24I N F O R M A Z I O N E - unita’ di ...

si definisce quantita’ di informazione unitaria

di 1 bit

l'informazione contenuta in un messaggio o in

un dato di probabilita' 1/2

Es.: lancio di una moneta non truccata a testa o cifra

questo messaggio (relativo al risultato) ha un contenuto di un bit di informazione :

I = log2( 1/probab ) = log2( 1/ ( 1/2 ) ) = log2 ( 2 ) = 1

Page 25: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

25I N F O R M A Z I O N E - 5 esempi

Relazione tra informazione e probabilita' :

I = log( 1/p ) = -log( p ) = log ( N ) 2 2 2

esempi:

* informazione relativa ad un dato su sedici: 4 bit

* informazione relativa ad evento certo (p=1): 0 bit

* quantita' di inform. di un dato composto da un simbolo dell' insieme delle 25 lettere dell' alfabeto inglese : I = log2 (25) = 4,6 bit

Page 26: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

26I N F O R M A Z I O N E - 5 esempi

altri esempi per il legame quantita’ di informazione - probabilita’:

I = log2(1/p) = -log2(p) = log2(N)

quantita' di informazione di un dato composto da un simbolo scelto tra 25 - qui, da una letteradell' insieme delle 25 lettere dell' alfabeto inglese:

I = log2 (25) = 4,6 bit

Page 27: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

27I N F O R M A Z I O N E - 5 esempi

altri esempi per il legame quantita’ di informazione - probabilita’:

I = log2(1/p) = -log2(p) = log2(N)

informazione di una cifra decimale

I = log2(10) = 3,3 bit

( 2 alla 3 = 8, 2 alla 3,3 = 10 )

Page 28: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

28I N F O R M A Z I O N E - 5 esempi

altri esempi per il legame quantita’ di informazione - probabilita’:

I = log2(1/p) = -log2(p) = log2(N)

* quantita' di inform. di una lettera dell' insieme delle 25 lettere dell' alfabeto inglese: I = log2 (25) = 4,6 bit

* inf. di una cifra decimale I = log2(10) = 3,3 bit

* informazione di una cifra ottale (otto simboli da 0 a 7) I = log2( 8 ) = 3 bit

Page 29: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

29I N F O R M A Z I O N E - cont. 5 esempi

ancora un esempio per il legame quantita’ di informazione - probabilita’:

I = log2(1/p) = -log2(p) = log2(N)

abbiamo visto che:* info. relativa ad un dato su sedici: 4 bit* info. di una lettera inglese: I = log2 (25) = 4,6 bit* info. di una cifra decimale: I = log2(10) = 3,3 bit * info. di una cifra ottale: I = log2( 8 ) = 3 bit

quantita’ di informazione di una cifra binaria:

probabilita’ di scelta tra "0" e "1" : p = 1/2,

quantita'di inform(cifra bin) = I = log2(2) = 1 bit

Page 30: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

30Informazione - dato semplice

esercizi:

quanta informazione ha il simbolo +scelto tra i dieci simboli + - * / . , ! ? ; :

quanta informazione ha il dato vocale Escelto tra i cinque simboli A E I O U

quanta informazione ha una cifra esadecimale E scelta tra i 16 simboli 0 1 2 3 4 5 6 7 8 9 A B C D E F

quanta informazione ha il dato P scelto tra i 32 simboli dell’alfabeto russo

(soluzione segue)

Page 31: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

31Informazione - dato semplice

soluzioni:

quanta informazione ha il dato + (scelto tra i dieci simboli + - * / . , ; : ! ? )

n=10 log2(1/p) = log2(n) = log2(10 ) = 3,3 bit

quanta informazione ha il dato E (scelto tra i cinque simboli A E I O U )

n=5 log2(1/p) = log2(n) = log2(5 ) = 2,3 bit

Page 32: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

32Informazione - dato semplice

soluzioni:

quanta informazione ha il dato E scelto tra i 16 simboli 0 1 2 3 4 5 6 7 8 9 A B C D E F

n=16 log2(1/p) = log2(n) = log2(16 ) = 4 bit

quanta informazione ha il dato P scelto tra i 32 simboli dell’alfabeto russo

n=32 log2(1/p) = log2(n) = log2( 32 ) = 5 bit

Page 33: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

33I N F O R M A Z I O N E - dati composti

quantita' di informazione

contenuta in un

dato composto:

quanta informazione contiene il dato seguente:

"operator overloading can be dangerous"

Page 34: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

34I N F O R M A Z I O N E - dati composti

dato composto: quanta informazione hanno i tre dati seguenti (tutti di 8 simboli) :

“7 A 4 5 F F 0 0”

“ B F U W R Q E A”

“P a p e r i n a”

i 3 dati contengono la stessa quantita’di informazione? L’ultimo simbolo 0 nel primo dato e l'ultimo simbolo A nel secondo dato hanno una probabilita’ diversa dall’ultimo simbolo a nel terzo dato?Nei tre dati (composti da piu’ simboli) i singoli simboli sono indipendenti tra loro?

Page 35: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

35I N F O R M A Z I O N E - dati composti

Per calcolare quanta informazione ha un dato composto da piu’ simboli, come i tre dati visti:

1) “ 7 A 4 5 F F 0 0 ” 2) “ B F U W R Q E A ” 3) “ P a p e r i n o ”

distingueremo

il caso di dato composto con i singoli simboli indipendenti tra loro (dati 1 e 2)

dal caso di dato composto da simboli legati tra loro, cioe’ dipendenti uno dall’altro (dato 3)

Page 36: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

36I N F O R M A Z I O N E - dati composti

1) dati composti da piu' simboli indipendenti tra loro

(indipendenti la presenza dei primi k-1 simboli non cambia la probabilita' del k-esimo simbolo)

probabilita' che si verifichi l’evento composto “ a , b” , con a e b indipendenti vale: p( a,b) = p(a) * p(b)

da cui l’ informazione contenuta in un dato composto “a,b”e' data dalla somma delle singole informazioni :

I(a,b) = log2( 1/ p(a,b) ) = log2( 1/( p(a) * p(b) ) ) = log2( 1/p(a) ) + log2( 1/p(b) ) ->

I(a,b) = I(a)+I(b)I(a,b) = I(a)+I(b) (a,b simboli indipend.) (a,b simboli indipend.)

Page 37: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

37I N F O R M A Z I O N E - dati composti

Informazione contenuta nella parola di n lettere:

"ZHWITQ"

se le lettere sono indipendenti tra loro, e’ la somma delle informazioni dei n singoli simboli

se le lettere sono equiprobabili allora l’informazione per simbolo e’ costante e allora:

I(lettera)= 4,6 bit = log2(25) (alfab.di 25 lettere), quindi

6 * 4,6 bit = 27,6 bit

(scelta di un dato tra 2^28 = 256 milioni di dati possibili)

Page 38: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

38I N F O R M A Z I O N E - dati composti

L'informazione contenuta nel dato (numero decimale):

"1863"

(una cifra decimale ha un contenuto di informazione log2(10) = 3,3 bit )

per un dato di 4 cifre l’informazione

e' di 4 * 3,3 bit = 13,2 bit

ovvero scelta di un dato tra 10000 possibili (appunto 1863 scelto tra i dati 0000 ... 9999)

Page 39: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

39I N F O R M A Z I O N E - dati composti

esercizio:

quanta informazione hanno i dati:

5883460 (num.telefonico di 7 cifre)

さ よ な ら (sayonara(*)) (parola giapponese di 4 sillabe, - vi sono 45 sillabe in giapponese)

corrompevole (parola di 12 lettere)

4 x 4 = 16 (un elemento della tavola Pitagorica)

segue soluzione(*) in scrittura semplificata (hiragana) ;-)

Page 40: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

40I N F O R M A Z I O N E - dati composti - soluzione :

6763411 (num.telefonico di 7 cifre) dato x x x x x x x (x sta per una cifra) con I(x) = log2(10) = 3,3 -> I(dato)= 7*3,3= 23.1 bit

さ よ な ら (sayonara) (parola giapponese di 4 sillabe, - vi sono 45 sillabe in giapponese) dato x x x x (x sta per una sillaba) con I(x) = log2(45) = 5,5 -> I(dato) = 4*5,5 = 22 bit

corr ompe vole (parola di 12 lettere, vi sono 21 lettere) dato xxxx xxxx xxxx con I(x) = 4,4 bit -> I(dato) = 12 * 4,4 = 53 bit

4 x 4 = 16 (elemento della tavola delle moltiplicazioni) dato x * x = zz (con x cifra da 1 a 9, il resto e’ determinato) con I(x) = 3,3 -> I(dato) = 2*3,3 = 6,6 bit

Page 41: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

41I N F O R M A Z I O N E - dati composti

Ripetiamo: l’ informazione contenuta in un dato composto da n simboli indipendenti tra loro (cioe’ dove il verificarsi di k simboli (k<n) non influisce sulla probabilita’ dell’ ennesimo simbolo) e’ la somma delle informazioni dei singoli simboli, se poi anche i singoli simboli sono equiprobabili (allora l’informazione per simbolo e’ costante) l’informazione di un dato di n simboli indipendenti ed equiprobabili = n * info(simbolo)

MA: il calcolo dell’informazione contenuta in un dato composto cambia ... se:

se i simboli non sono indipendenti tra loro e/o se non sono equiprobabili

Page 42: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

42I N F O R M A Z I O N E - dati composti

Dato di n simboli non equiprobabili, e/o non indipendenti tra loro - un esempio per capire meglio:

calcolo della quantita' di informazione contenuta nella parola "CAROTA"

1) se considero le lettere indipendenti tra loro:

6 * 4,6 bit = 27,6 bit (scelta di uno tra 2^28 = 256 milioni di dati possibili piu’ precisamente, 25 ^ 6 = 244.140.625 : ovvero scelta di un dato tra i 244M di dati tipo: AAAAAA, AAAAAB, .. AAAAAZ, AAAABA, ... ... ZZZZZW, ZZZZZX, ZZZZZY, ZZZZZZ)

Page 43: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

43I N F O R M A Z I O N E - dati composti

Dato di n simboli non equiprobabili, e/o non indipendenti tra loro - calcolo della quantita' di informazione contenuta nella parola "CAROTA"

1) se le lettere sono indipendenti tra loro: I = 6 * 4,6 bit = 27,6 bit (scelta di uno tra 256 = 244.140.625 dati possibili )

2) MA -osservo che CAROTA e'una parola della lingua italiana (da un dizionario "medio" con 65000 parole) allora l' informazione e' relativa ad un dato su 65000, ovvero log2 ( 65000 ) = 16 bit (... e non 27,6 !! )(scelta di una parola tra "a", "abaco", "abate", "abbacchiare", ... "zuppa", "zuppiera", "zuppo", "zuzzurullone" (R.C.Melzi, Bantam ed.1976)

Page 44: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

44I N F O R M A Z I O N E - dati composti

Ancora due esempi:

2) informazione data nella parola "PAPAVERO" con lettere indipendenti tra loro: 8*4,6 bit = 36,8 bit (scelta di uno tra 2^37 = 152 miliardi di dati possibili piu’ precisamente, 25 ^ 8 = 152 587 890 625)

---> MA:

se diciamo che la parola PAPAVERO e' una parola tratta da un dizionario della lingua italiana con 65000 parole - allora l' informazione e' relativa ad un dato su 65000, ovvero log2 ( 65000 ) = 16 bit come nell'esempio precedente, e non 36,8 bit !!

Page 45: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

45I N F O R M A Z I O N E - dati composti

3) esempio:

quantita’ info. di una stringa di 8 caratteri (alfabeto inglese di 25 lettere):

I("TOLMEZZO") = 8 * 4,6 bit = 36,8 bit (ho 8 lettere equiprobabili e indipendenti)

invece se considero la quantita’ di informazione di

I(Tolmezzo) nel caso in cui so che Tolmezzo e’ nome di una citta' dell'Italia scelta tra mille (assumo il dato preso da una tabella di 1000 citta’)

I( un dato su 1000 ) = log2(1000) = 10 bit !!!

Page 46: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

46I N F O R M A Z I O N E - dati composti

ritorniamo sull' esempio per il caso di dato composto con simboli NON indipendenti tra loro:

nel dato “CAROTA” , per ipotesi una parola della lingua italiana, la probabilita’ delle singole lettere cambia:per la prima e’ 1/25: “C”per la seconda lettera - deve essere una vocale, oppure una “h”,"r","l","s","n", quindila probabilita’ e’ 1/10... “CA”la terza lettera ... “CAR”la quarta lettera p(“O”)>1/5 “CARO”la quinta p(“T”) > ... “CAROT”l’ultima lettera .. solo A o E “CAROTA”

Page 47: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

47I N F O R M A Z I O N E - dati composti

2) es. di dato composto da piu’ simboli - es.:

“fondamenti di informxxxxx”

L’ informazione di xxxxx e’ praticamente zero [ ma qual’ e’ la quantita’ di informazione / ricevuta / da un destinatario medio del corso di fondamenti di informatica ;-} ]

in generale il contenuto informativo di un testo formato da parole, a loro volta formate da lettere, NON e’ semplicemente :

(lungh. testo)*(informazione di una lettera alfabeto)

e quindi in un testo l' informazione di una lettera non e’ semplicemente I = log2( 1/ prob ) = log2 ( Num.lettere )

Page 48: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

48I N F O R M A Z I O N E - dati composti

il contenuto informativo di un testo formato da stringhe di caratteri non e’ semplicemente

num.caratteri * info(carattere) e l' informazione di una lettera non e’ I = log2( 1/ prob ) = log2 ( Num.lettere alfabeto)

devo considerare due aspetti:

a) i simboli non sono equiprobabili (e questo era noto gia' ai tipografi da secoli)

b) simboli legati tra loro, ovvero non sono indipendenti (in una stringa di k simboli i primi k-1 simboli cambiano la probabilita' del k-esimo simbolo ... vediamo

Page 49: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

49I N F O R M A Z I O N E - cenni

DATO CON SIMBOLI NON EQUIPROBABILIes: 32 lanci di una moneta (truccata) ottengo i valori: C C C C C T C C C C C C C T C C C T C C C T C C C C C C C C C C ( 28 croce e 4 testa ) assumo quindi nc ntPC = ----------- PT = ---------- nc + nt nc + nt p(C)=28/32 e p(T)=4/32 -> inform.di un singolo dato:( I = log2(1/p) ! )

I ( C )= log2(1/p(C)) = log2 ( 32/28 ) = log2 (1,14) = 0,19 I ( T )= log2(1/p(T)) = log2 ( 32/4 ) = log2(8) = 3 I(dato complessivo) = ?

Page 50: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

50I N F O R M A Z I O N E - dati composti continua caso di simboli indipendenti ma non equiprobabili: se su 32 lanci di una moneta truccata ottengo 28 valori croce e 4 valori testa: C C C C C T C C C C C C C T C C C T C C C T C C C C C C C C C Callora p( C ) = 28/32 e p( T ) = 4/32

e quindi (ricorda: I = log2(1/p) ! ): il verificarsi di un singolo C oppure T porta l’ informazione seguente:

I ( C ) = log2(1/p(C)) = log2 ( 32/28 ) = log2 (1,14) = 0,19 I ( T ) = log2(1/p(T)) = log2 ( 32/4 ) = log2(8) = 3

I(dato complessivo) =

I (dato) = num(c)*info(c) + num(t)*info(t) ... cioe' :

I(dato) = 28* 0,19 + 4 * 3 = 5,6 + 12 = 17,6

Page 51: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

51

cont. es: 32 lanci: CCCCC TCCCC CCCTC CCTCC CTCCC CCCCC CC (28 croce e 4 testa) quindi:

p(C) = 28/32, I (C) = log2(32/28) = 0,19p(T)= 4/32; I (T) = log2(32/4)= 3

I(dato completo) = 28 * 0,19 + 4 * 3 = 5,6 + 12 = 17,6

Il contenuto informativo medio per simbolo(dato composto da 2 simboli non equiprobabili):

I I(tot.dato) med = ----------------------- num.simboli del dato

I N F O R M A Z I O N E - cenni

Page 52: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

52I N F O R M A Z I O N E - cenni

DUE simboli non equiprobabili, I media / simbolo:

il contenuto informativo medio per simbolo (dato composto da 2 simboli non equiprobabili):

I(tot.dato) IImedmed = ----------------------- = num.simboli del dato

I(tot.dato) nc*Ic + nt*It = ----------- = --------------- = nc+nt nc + nt

nc nt= ----* Ic + ----* It = p(c)*Ic + p(t)*Itp(c)*Ic + p(t)*It nc+nt nc+nt

Page 53: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

53I N F O R M A Z I O N E - cenni

due simboli non equiprobabili, I media / simbolo:

Imed = p(c)*Ic + p(t)*It

e in generale per n simboli: Imed= i p(i) * I (i)

Nel caso di due simboli e' certo che uno dei due simboli si verifica, quindi deve essere:

p(a)+p(b)=1 --> p(b)=1- p(a), quindi:

Imed = p(a) * Ia + p(b) * Ib =

= p(a) *( log2(1/p(a)) + (1-p(a))* log2(1/(1-p(a)) )

con un massimo per p(a) = p(b), e’zero se p(a)=0 o se p(a) = 1:

Page 54: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

54

I media=p(a) * Ia + p(b) * Ib

= p(a) * (log2(1/p(a)) + (1-p(a)) * log2(1/(1-p(a)) )

=f(p(a)) = figura a destra:

massimo per p(a) = p(b) zero se p(a)=0, o se p(a) = 1

Conten. inform. medio per simbolo, caso di 2 simboli non equiprobabili: I med = p(a) * Ia + p(b) * Ib , dove nel caso di due simboli vale che:

p(a) + p(b) = 1 --> p(b) = 1 - p(a) --> quindi :

10 1/2

1 1Inf

Prob

Page 55: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

55I N F O R M A Z I O N E - info media (carattere)

l’informazione media per simbolo per un dato composto da n simboli con probabilita’ diversa:

Imed = i p(i) * I (i) cioe’

Imed = i { p(i) * (-log2 (p(i) ) ) }

In un testo di 10000 lettere casuali (alfabeto di 21 lettere) a distribuzione uniforme avremo 476 volte (in media) ciascuna delle lettere - la quantita’ di informazione per lettera e' I(l) = log2(21) = 4,4 bit

Ma in un testo in italiano (o in altra lingua) le probabilita’ delle singole lettere sono diverse.

Page 56: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

56I N F O R M A Z I O N E - info media (carattere)

lettere non equiprobabili:

I med = - i { p(i) * log2 (p(i) ) }

si puo' vedere che in un testo italiano di 10000 lettere avremo circa:

1300 e 850 o ... 150 z ... 5 j1100 i 650 r ... 120 f1000 a 650 l ... 100 q

ed il contenuto di informazione medio per lettera e'

I(l) = p(a)*I(a)+p(b)*I(b)+..+p(z)*I(z) = 3,9 bit

mentre con lettere equiprobabili I(l) = log2(21) = 4,4 bit

Page 57: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

57I N F O R M A Z I O N E - info media (carattere)

ripetiamo:... con simboli equiprobabili, l’informazione media di

I(lettera) = I ( 1/p ) = I ( N ) = log2(21) = 4,4 bit ,

con testo di lingua italiana, lettere NON equiprobabili, il contenuto di informazione medio e' piu' piccolo :

Imed = - i { p(i) * log2 (p(i) ) } = ... = 3,9 bit ----------------------------------------------------------------------ma il contenuto di informazione medio reale per una lettera in un testo di italiano e’ ancora molto piu’ piccolo, perche' le lettere NON sono indipendenti tra loro - vediamo ...

Page 58: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

58I N F O R M A Z I O N E - info media (carattere)

abbiamo visto che:

I(lettera/equipr.) = I(1/p) = I(N) = log2(21) = 4,4 bit

lettere/nonequipr.: Imed = - i {p(i)*log2 (p(i) )} = 3,9

ora, se immagino che le parole presenti nel testo siano tutte contenute in un dizionario di 65000 parole

allora il contenuto info. medio per parola e’:

I(parola) = log2(N) = log2(65000) = 16 bit/parola

se supponiamo in media 6 lettere per parola, allora

Imed(lettera) = I(parola) / 6 = 2,67 bit / lettera

( beh, ... 2,3 bit/lettera se in media le parole hanno 7 lettere, 3,2 bit/lettera se in media le parole hanno 5 lettere ecc ;-)

Page 59: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

59I N F O R M A Z I O N E - info media (carattere)

I(lettera/equipr) = I(1/p) = I(N) = log2(21) = 4,4 bit

Imed(lettera/nonequip)= - i {p(i)*log2 (p(i) )}= 3,9 bit

Imed(lettere non equiprob = I(parola) / 6 = 2,67 bit e dipendenti tra loro)

MA: tenendo conto del contesto (anche le parole non sono indipendenti tra loro !) si arriva ad un valore approssimativo di :

1 bit per lettera

Page 60: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

60I N F O R M A Z I O N E - info media (carattere)

In un generico testo la quantita’ di informazione media per lettera e’ di circa un bit

Page 61: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

61I N F O R M A Z I O N E - info media (carattere)

Lettere, cifre, segni di interpunzione: la rappresenta-zione standard delle lettere in un calcolatore e’ data dalla codifica ASCII che usa 8 bit per lettera (Americ.Standard Code for Inform. Interchange)

allora un testo di 800 pagine (75 col * 40 righe) = 75*40*800 = 3000*800 = 2.400.000 lettere - occupa due dischetti da 1,2 mega byte -

compattando (memorizzo il testo con codifiche piu' economiche) arrivo a 2,4Mb/8 = 300Kb.

oggi sempre piu' in uso UNICODE a 16 bit (vedremo)

Page 62: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

62

si noti che il problema della codifica "economica" rimane attuale anche se la tecnologia offre continuamente dispositivi e mezzi di memoria sempre piu' capienti:

1980 i primi HD in commercio da 10Mbyte...1999 in commercio dischi da 20 Giga Byte (2.E+10= 8000 libri da 800 pag da 40 righe da 80 caratt)2005 in commercio dischi da 200 G byte... * un video da 100 minuti su HD, ma 100 video?* esperimenti con misure che producono giga-byte di dati in pochi minuti - quanto in un anno ?* indici di archivi su rete con tera-byte di dati ...

tra 5 anni ? ... se si estrapola la situaz. di 5 anni fa?

I N F O R M A Z I O N E - info media (carattere)

Page 63: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

63codifica dati

se voglio salvare un filmato o un video da 90 minuti,con 24 immagini al secondo, precisione 1200x900,avro':schermo a bassa risoluzione, dato da 640*480 (NTSC-VGA) pixel (punti immagine) ciascun pixel richiede 3 byte, quindi 640*480*3 = 307.200*3 = 921.600 byte = 1M byte 24 immagini al secondo significa 24 * 1M = 24M,90 minuti = 90*60 secondi = 5400 secondi quindiin totale 5400 * 24 immagini, 129.600 immagini equindi 921.600 * 129.600 = 119.439.360.000 byte = = 119 G byte per un video a bassa qualita' non compresso...

Page 64: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

64codifica dati

con risoluzione maggiore, schermo da 1200 x 900 pixel (punti immagine) con 3 byte per pixel, quindi 1200 x 900 x 3 = 3.240.000 byte, circa 3 Mega pixel, 24 immagini al secondo significa 24 * 3M = 72M,90 minuti = 90*60 secondi = 5400 secondi quindiin totale 5400 * 24 immagini, 129.600 immagini equindi 3.240.000 * 129.600 = 419.904.000.000 = 420 G byte (video non compresso)...

rimane sempre l' esigenza di salvare grandi quantita' di dati in uno spazio (con un numero di byte) il piu' piccolo possibile, esigenza di codifica dati efficiente = compressione dei dati

breve cenno di questo aspetto nella parte seguente che riguarda i codici

Page 65: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

65

fine " ... informazione (cenni) "

segue: .

CODICI

I N F O R M A Z I O N E - cenni

Page 66: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

66codici

argomenti presentati:

codici, rappresentazione, dati

codifiche binarie

codice ASCII

codice UNICODE

codici a controllo di errore

codici a correzione di errore

bibliografia

esercizi

Page 67: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

67codici e dati

definizione:

Dati = " fenomeni fisici scelti per convenzione al fine di rappresentare

informazioni su fatti o idee "

La stessa informazione (fatto, idea) puo' essere rappresentata da dati diversi; diremo un valore l'insieme delle rappresentazioni della stessa informazione (fatto,idea).

Codice = " un sistema convenzionale di regole per rappresentare informazioni"

Page 68: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

68codici e dati

Ogni dispositivo (supporto fisico) capace di assumere due o piu' stati distinti puo' essere usato per rappresentare dei dati :

bastoncini intagliati, spaghi annodati, pietre o ossa scolpite, tavolette d’argilla, pergamena, carta stampata, carta perforata, interruttore, anello di ferrite, carica elettrostatica,stato di un circuito bistabile, nastro magnetico, disco ottico, ... ecc)

Page 69: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

69codici e dati

Ogni dispositivo (supporto fisico) capace di assumere due o piu' stati distinti puo' essere usato per rappresentare dei dati :

La rappresentazione di un dato con un codice e' alla base dei sistemi di scrittura e di numerazione

la rappresentazione delle informazioni e' molto anticae ha piu’ di 6000 anni ...

il passaggio dagli ideogrammi ad un sistema alfabetico con un numero di simboli minore avviene circa 1000 anni prima di Cristo (ambiente egiziano-fenicio), poi adottato dai greci e in seguito dai latini ...

Page 70: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

70codici e dati

esempio: il dato " 1.a lettera dell'alfabeto, "A" " :

noi siamo abituati a considerare il simbolo (il carattere) “A” e la "vocale a" (vocale del sistema fonetico della lingua italiana)come equivalenti - ma non sono la stessa cosa:

"vocale a" (1.a lettera dell’alfabeto italiano) = dato

“A” = un codice per il dato “a”

per lo stesso dato [vocale a]abbiamo diversi codici:

Page 71: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

71codici e dati

per lo stesso dato "vocale a" abbiamo diversi codici:

. codice del carcerato: un colpo per a, due per b, tre per c ... supporto qualunqe,

equivale al numero uno in sistema unario

a simbolo che rappresenta la lettera a, codice grafico esterno [al calcolatore] "aleph"origine egizia/fenicia/greca/latina.. sorgente-destinatario: persona-persona, supporto: carta;

. - codice Morse, usa combinazioni di tresimboli (punto,linea e spazio), supporto: carta/ conduttore elettrico;

Page 72: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

72

ripeto .. dato "1.a lettera dell'alfabeto, ‘a’ " , diversi codici:

. codice del carcerato: un colpo per a;a codice grafico esterno, supporto carta; . - cod. Morse, supporto carta/conduttore elettrico

ancora:

simbolo dell’alfabeto sillabico hiragana giapponese

ancora:

0100 0001 ASCII - codice interno al calcolatore, binario, destinato ad una macchina (supporti vari),

codici e dati

Page 73: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

73codici e dati

es.di codifica:

dati 4 simboli - es.: * # @ ? posso codificarli con un altro insieme di simboli prestabilito, ad es. con lettere, o cifre, o altro:

codifica con lettere: * con A, # con B, @ con C, ? con D,

codifica con cifre decimali:

* 1 oppure: * 113 # 2 # 224 @ 3 @ 557 ? 4 ? 668

Page 74: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

74codici e dati

ancora, dati 4 simboli - es.:

* # @ ? posso codificarli utilizzando due simboli, x e yad esempio: oppure: oppure ancora: * xxx xxyyy xy # xxy yxxyy xyy @ xyx yyxxy xyyy ? xyy yyyxx x

le prime due colonne sono una codifica con codici a lunghezza costante, la terza con codici a lunghezza variabile

Page 75: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

75codici e dati

ancora, dati 4 simboli - es.:

* # @ ? posso codificarli utilizzando un solo simbolo, ad esempio: * x # xx @ xxx ? xxxx

(codifica con codici a lunghezza diversa!)

Page 76: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

76codici e dati

il calcolatore usa la codifica binaria, con DUE SOLI SIMBOLI - perche’ i supporti fisici (memorie) a 2 stati soli sono piu’ sicuri !!

acceso/spento; c’e’corrente / non c’e’corrente;magnetizzato N-S / magnetizzato S-N;perforato / non perforato;

- da qui l’interesse per l’algebra della logica a due valori falso/vero o zero/uno, - da qui l’uso dei codici a due valori 0/1 = codici binari

dati 4 simboli * # @ ? es.di codifica a 2 valori 00 01 10 11ancora 000 011 101 110

Page 77: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

77codici e dati

nella codifica binaria, si usano due soli simboli, di solito indicati con 0 zero o falso 1 uno o verousati anche per rappresentare numeri in base due, detti bit, da binary digit o cifra binaria

il calcolatore usa al suo interno solo codici a due valori 0/1 detti codici binari

ad esempio per tre simboli : # @ & un es.di codifica binaria: 10 1 101

per cui il dato: # # # @ & & @@@ # @ #si rappresenta: 10 10 10 1 101 101 1 1 1 10 1 10

Page 78: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

78codici e dati per codificare 4 simboli in binario posso scegliere moltissime soluzioni: ( A B C D sono i 4 simboli da rappresentare) ... esempi di codici:

la codifica 4) (numero simboli binari fisso) e’ la piu’ economica, il numero di bit (due) e'uguale al contenuto di informazione di un simbolo (su 4)

1) A 1 B 11 C 111 D 1111 3) A 11000 B 01100 C 00110 D 00011

2) A 101 B 1001 C 10001 D 100001 4) A 01 B 10 C 11 D 00

Page 79: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

79codici e dati

nota: per dati non equiprobabili esistono codici a lunghezza variabile che consentono un risparmio nel numero medio di bit usati, ovvero sono piu' efficienti;

i codici a lunghezza variabile tengono conto della frequenza dei simboli nel dato: simboli piu' frequenti avranno un codice piu' breve (circa come scelto da Morse per il suo codice telegrafico);

es.: codice Hufmann, non trattato qui.

Page 80: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

80codici e dati

lo schema di codifica piu' usato e' a numero di bit fisso:

un bit per due simboli: A 0 B 1

due bit per tre A 00 B 01 C 10 o per quattrosimboli A 00 B 01 C 10 D 11

tre bit per cinque, A 000 B 001 C 010 sei, sette o D 011 E 100otto simboli,

quattro bit per nove..sedici simboli, cinque per 17..32 simboli, eccetera ...

Page 81: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

81codici e dati

devo usare almeno due bit per quattro simboli, ma posso scegliere come associare simbolo-codice in molti modi:

un modo: A 00 B 01 C 10 D 11oppure: A 11 B 00 C 10 D 01oppure: A 10 B 11 C 00 D 01oppure ancora: A 01 B 11 C 00 D 10ecc

Quante codifiche con n bit (n fisso) per K simboli? (deve essere n >= log2(K) ) - qui n=2, K=4

Page 82: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

82codici e dati

Quante codifiche con n bit (n fisso) per K simboli? (deve essere n >= log2(K) ) se K=4, n=2,posso associare i 4 simboli diversi A, B, C, D ai 4 codici diversi 00, 11, 01, 10 in 4 ! modi diversi(uno dei 4 codici per A, uno dei tre rimanenti per B, uno dei due rimanenti per C, il codice per D rimane fissato), quindi vi sono 4 * 3 * 2 * 1 modi per associare 4 codici a 4 simboli, 4 * 3 * 2 * 1 = 4 ! = 4 * 6 = 24

di seguito sono riportati 12 codici (dei 24 possibili): A 00 00 00 00 00 00 01 01..01 10..10 11..11B 01 01 10 10 11 11 00 00..11 01..11 01..00C 10 11 01 11 01 10 10 11..10 00..00 10..10D 11 10 11 01 10 01 11 10..00 11..01 11..01 1 2 3 4 5 6 7 8 12 13 18 19 24

Page 83: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

83codici e dati

Quante codifiche con n bit (n fisso) per N simboli? (n >= log2(N) )

ad es. per codificare 25 simboli (alfabeto inglese) devo usare 5 bit (4 bit arrivo fino 16, 5 bit arrivo fino 32), ( ho 32 * 31 * 30 * 29 * 28 .. * 8 * 7 possibili scelte per la codifica )

Normalmente si sceglie l’accoppiamento “per ordine”:ordino i simboli (convenzione: ordine alfabetico),ordino i codici binari (convenz.: numerazione binaria), poi associo i simboli ordinati ai codici ordinati; es. per quattro simboli: A B C D <--> 00 01 10 11 quindi A = 00, B = 01, C = 10, D = 11

Page 84: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

84codici e dati

numerazione binaria (vedremo di piu’ tra poco):decimale binario(in base due, cifre 0,1) 0 0 1 1 (uno= due alla zero) 2 10 (due, = due alla uno) 3 11 (in base due, cioe’ due(=10) piu’ 1) 4 100 (quattro = due alla due) 5 101 (cinque=quattro+uno) 6 110 (sei = quattro + due) 7 111 (sette=quattro+due+uno) 8 1000 (otto = due alla tre) 9 1001 (nove=8+1) 10 1010 (dieci = 8+2) ecc

Page 85: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

85codici e dati

un bit per due simboli: A 0 B 1

due bit per tre o quattro simboli: A 00 B 01 C 10

A 00 B 01 C 10 D 11

tre bit per cinque, sei, sette o otto simboli:

A 000 B 001 C 010 D 011 E 100 A 000 B 001 C 010 D 011 E 100 F 101A 000 B 001 C 010 D 011 E 100 F 101 G 110A 000 B 001 C 010 D 011 .. F 101 G 110 H 111

Page 86: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

86codici e dati

quattro bit per codificare da 9 a 16 simboli:

A 0000 B 0001 C 0010 D 0011 (1..4)E 0100 F 0101 G 0110 H 0111 (5..8)I 1000 (9)

...

...

A 0000 B 0001 C 0010 D 0011 (1..4)E 0100 F 0101 G 0110 H 0111 (5..8)I 1000 J 1001 K 1010 L 1011 (9..12)M 1100 N 1101 O 1110 P 1111 (13..16)

Page 87: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

87codici e dati

con 5 bit posso rappresentare fino 32 simboli (vecchio codice per telescrivente Baudot)

con 6 bit -> 64 simboli (vecchio codice calcolatori BCD),

con 7 bit -> 128 simboli (codice ASCII di 32 + 96 caratteri)

con 8 bit -> 256 simboli (codice ASCII esteso)

quanti bit per rappresentare i 10.000 simboli della scrittura cinese? (10 bit: 1024, 12 bit: 4096, 14 bit: 16384) => almeno 14

Page 88: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

88codici e dati

con 7 bit -> 128 simboli (codice ASCII di 32 + 96 caratteri)

con 8 bit -> 256 simboli (codice ASCII esteso)

con 16 bit -> 32768 simboli (unicode)

(e per un po’ basta)

Page 89: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

89codici e dati

curiosita' storica ... due supporti dati ormai in disuso:1) il nastro perforato (uno dei primi supporti dati usato nel telaio automatico del 1801 di Joseph Jacquard, Lyon) per "registrare" o memorizzare un dato = perforare dei codici binari su nastro; in figura, * sta per perforazione) es. codice di A: 01000 001 (41 esadecimale) es. codice di C: 11000 011 (43 esadecimale)

0 1 2 3 4 5 6 7 8 9 A B C D E F G H I ... Y Z

* * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . . . . . . . . . . . . . . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

123

45678

Page 90: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

90codici e dati

2) scheda perforata (inventata da Hollerith nel 1885, la ditta di Hollerith nata agli inizi del secolo poi negli anni 20 divento’ una ditta di macchine "meccanografiche" o elettrocontabili ... l' IBM)

La scheda perforata e' andata in disuso con l'avvento dei sistemi in multiutenza (terminali alfanumerici, anni 70..) e dei personal (TRS, Commodore, Apple, anni 77..). a Trieste esistevano un lettore ed un perforatore di schede ancora nel 1985, il lettore di schede e’ rimasto in uso fino al 90... oggi e'possibile leggere schede perforate solo in una macchina di un museo di informatica...

Page 91: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

91codici e dati

0 1 2 3 4 5 6 7 1 9 A B C D E F G H I J K W X Y Z

A A A A A A A A A A A * * * * * * * * * A A A A A AB B B B B B B B B B B B B B B B B B B B * * B B B B * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 * * * * 1 * 1 1 1 1 1 1 1 1 1 * 1 1 1 1 1 1 1 1 * 1 1 1 1 12 2 * 2 2 2 2 2 2 2 2 2 * 2 2 2 2 2 2 2 2 * 2 2 2 2 3 3 3 * 3 3 3 3 3 3 3 3 3 * 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 * 4 4 4 4 4 4 4 4 4 * 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 * 5 5 5 5 5 5 5 5 5 * 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 * 6 6 6 6 6 6 6 6 6 * 6 6 6 6 6 * 6 6 6 7 7 7 7 7 7 7 * 7 7 7 7 7 7 7 7 7 * 7 7 7 7 7 * 7 7 8 8 8 8 8 8 8 8 * 8 8 8 8 8 8 8 8 8 * 8 8 8 8 8 * 8 9 9 9 9 9 9 9 9 9 * 9 9 9 9 9 9 9 9 9 * 9 9 9 9 9 *

scheda perforata: codice a 12 bit, 80 caratteri (colonne) il codice di A: 10 01000 00000, (qui sotto, * sta peril codice di B: 10 00100 00000 posizione perforata)

Page 92: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

92codici e dati

Ritorneremo in seguito sui supporti dati oggi piu' usati, ovvero i dischi (di vario genere ... ) i nastri magnetici

Page 93: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

93codici e dati

il codice

A S C I I

(leggi: eski... ma anche asci)

American Standard Code for Information Interchange

Page 94: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

94codici e dati

il codice ASCII per rappresentare un testo semplice:

32 codici di controllo (corrisp.ai numeri da 0 a 31)

96 codici “stampabili”, sono i simboli (caratteri) stampabili del codice ASCII, lettere (maiuscole, minuscole, alfabeto inglese), cifre (da 0 a 9), simboli vari (aritmetica, punteggiatura, parentesi, ecc)i codici da 128 a 255 hanno significati diversi a seconda della scelta dell'utente.

di seguito sono riportati tutti i codici ASCII , a scopo informativo e di consultazione, (NON da memorizzare)

Page 95: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

95un anticipo sui codici numerici: il numero 10 ha diverse codifiche

decimale: ottale esadecimale binario0 0 0 01 1 1 12 2 2 10...6 6 6 1107 7 7 1118 10 8 10009 11 9 100110 12 A 101011 13 B 1011..14 16 E 111015 17 F 1111

Page 96: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

96codici e dati - tabella ASCII - cont.

American Standard Code for Information Interchange =

codice ASCII: codice a 7 bit per rappresentare un dato, es.:

“riganuova” (NON stampabile) codice num. 10, esadecim. A

vediamo alcuni codici:

“ “ = codice numero 32, esadecimale: 20 binario: 010 0000

“6” = codice numero 54, esadecimale: 36 binario: 011 0110

“A”= codice numero 65, esadecimale: 41 binario: 100 0001

“a”= codice numero 97, esadecimale: 61 binario: 110 0001

“}”= codice numero 125, esadecimale: 7D binario: 111 1101

Page 97: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

97codici e dati - tabella ASCII - cont.

i primi 32 codici ASCII (da 0 a 31) sono codici NON stampabili, usati per controllo - es.: 8 = back space, 10 = line feed, 13 = carriage return ecc

parte codici controllo, da 0 a 31, in decimale / esadec:

0 0 NUL 1 1 SOH 2 2 STX 3 3 ETX4 4 EOT 5 5 ENQ 6 6 ACK 7 7 BEL

8 8 BS 9 9 HT 10 A LF 11 B VT

12 C FF 13 D CR 14 E SO 15 F SI

16 10 DLE 17 11 DC1 18 12 DC2 19 13 DC320 14 DC4 21 15 NAK 22 16 SYN 23 17 ETB

24 18 CAN 25 19 EM 26 1A SUB 27 1B ESC28 1C FS 29 1D GS 30 1E RS 31 1F US

Page 98: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

98codici e dati - tabella ASCII - cont.

nota: per ottenere uno di questi caratteri speciali con codice 0..31 su una tastiera [di solito] si deve premere assieme il tasto CTRL piu' un altro carattere, es:

3 (EndOfText=CTRL-C); 8 (BackSpace=CTRL-H); 9 (TABula); 10 (LineFeed=caporiga); 12 (FormFeed=capopagina); 13 (Carriage Return= RitornoCarr);26 (EndOfText in MSDOS); 27 (escape)..

alcuni caratteri speciali corrispondono ad un tasto singolo: BackSpace [ 8 ], Esc [ 27 esad. 1B ], Return [ 13 esad. D ], ...

Page 99: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

99codici e dati - tabella ASCII - cont.

di seguito e’ riportata la tabella dei codici ASCII completa (da 32 a 127, i codici da 0 a 31 riportati prima)

...

Page 100: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

100codici e dati - cont. codici ASCII - codici da 32 a 79 :

32 20 spaz. 33 21 ! 34 22 " 35 23 #36 24 $ 37 25 % 38 26 & 39 27 '40 28 ( 41 29 ) 42 2A * 43 2B +44 2C , 45 2D - 46 2E . 47 2F /

48 30 0 49 31 1 50 32 2 51 33 352 34 4 53 35 5 54 36 6 55 37 756 38 8 57 39 9 58 3A : 59 3B ;60 3C < 61 3D = 62 3E > 63 3F ?

64 40 @ 65 41 A 66 42 B 67 43 C68 44 D 69 45 E 70 46 F 71 47 G72 48 H 73 49 I 74 4A J 75 4B K76 4C L 77 4D M 78 4E N 79 4F O

(cont.pag.seg.)es. lettura tabella:! = codice n.ro 33, esadec. 21, binario 010 0001C = codice n.ro 67, esadec, 43, binario 100 0011

Page 101: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

101codici e dati - cont. codici ASCII - codici da 80 a 127 :

80 50 P 81 51 Q 82 52 R 83 53 S84 54 T 85 55 U 86 56 V 87 57 W88 58 X 89 59 Y 90 5A Z 91 5B [92 5C \ 93 5D ] 94 5E ^ 95 5F _

96 60 ` 97 61 a 98 62 b 99 63 c100 64 d 101 65 e 102 66 f 103 67 g104 68 h 105 69 i 106 6A j 107 6B k108 6C l 109 6D m 110 6E n 111 6F o

112 70 p 113 71 q 114 72 r 115 73 s116 74 t 117 75 u 118 76 v 119 77 w120 78 x 121 79 y 122 7A z 123 7B {124 7C | 125 7D } 126 7E ~ 127 7F DEL

es. lettura tabella:u = codice n.ro 117, esadec. 75, binario 111 0101~ = codice n.ro 126, esadec. 7E, binario 111 1110

Page 102: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

102=> ancora codice ASCII, ... tabella completa :

32 ! 33 " 34 # 35 $ 36 % 37 & 38 ' 39 ( 40 ) 41 * 42 + 43 , 44 - 45 . 46 / 47 0 48 1 49 2 50 3 51 4 52 5 53 6 54 7 55 8 56 9 57 : 58 ; 59 < 60 = 61 > 62

? 63 @ 64 A 65 B 66 C 67 D 68 E 69 F 70 G 71 H 72 I 73 J 74 K 75 L 76 M 77 N 78 O 79 P 80 Q 81 R 82 S 83 T 84 U 85 V 86 W 87 X 88 Y 89 Z 90 [ 91 \ 92

] 93 ^ 94 _ 95 ` 96 a 97 b 98 c 99 d 100 e 101 f 102 g 103 h 104 i 105 j 106 k 107 l 108 m 109 n 110 o 111 p 112 q 113 r 114 s 115 t 116 u 117 v 118 w 119 x 120 y 121 z 122 { 123 | 124 } 125 ~ 126

ricorda: il codice ASCII originale prevede 7 bit di codifica, quindi 128 possibili simboli diversi: i codici da 0 a 31 sono caratteri di controllo, non stampabili, i 96 codici da 32 a 127 corrispondono a caratteri stampabili.

Page 103: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

103codici e dati

il codice ASCII prevede 8 bit;

inizialmente l’ottavo bit assumeva sempre un significato di controllo parita’ (vedremo cosa significa)

oggi piu’ spesso il codice a 8 bit e’ un ASCII esteso,

dove si riservano dei codici per caratteri / simboli speciali,ad es alcune lettere greche, simboli matematici ecc,

e codici per caratteri nazionali, che pero’ cambiano significato a seconda della nazione (e quindi cambia tastiera...) ad es: ò oppure ç oppure ž ...

Page 104: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

104

seguono cenni sul

CODICE UNICODE

vedi su rete http://www.unicode.org/

Page 105: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

105UNICODE - un codice “per tutti” a 16 bit

il codice UNICODE (ISBN 0-201-56788-1, 1990)

usa 16 bit per rappresentare un simbolo, e quindi puo’ rappresentare 65000 simboli diversi...

i primi 256 codici sono il set ASCII a 8 bit Latin-1, che quasi coincide per i primi 128 codici con il ASCII a 7 bit;vi sono vari codici Latin-extended -esistono centinaia di lingue che usano le lettere latine, ciascuna con varie modifiche o segni modificatori come ¨ ˆ   °  ·  ´  _  

gli altri codici sono usati per rappresentare una gran quantita’ di simboli usati in varie lingue del mondo, raggruppando dove possibile (ad es. i set latini, i set cirillici, i set arabi) o definendo codici e regole per parti di caratteri piu’ complicati ( i set che si basano sui simboli cinesi )

Page 106: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

106UNICODE - un codice “per tutti” a 16 bit

ad es.:alfabeti arabo, armeno, bengali, cirillico, copto, devanagari, ebraico, greco, hiragana, katakana, koreano, ecc(vi sono piu' di 2000 lingue "riconosciute" ... )

anche i simboli per le cifre decimali delle varie lingue sono talvolta diversi ....

infine sono definiti dei set di simboli piu’ usati (valute, frecce, simboli matematici, “dingsbat” ecc) cioe’ molti set di ideogrammi standardizzati

(da http://www.unicode.org/ , e libri ad es. “The Java Programming Language” di K.Arnold e J.Gosling, 1996):

Page 107: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

107 ..

CODICI A CONTROLLO DI ERRORE

. . .

Page 108: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

108codici ed errori

contenuto: codici e trattamento dell'errore legame tra ridondanza/efficienza e il controllo di errore* codici a controllo di errore o a segnalazione automatica di errori: raddoppio, parita', ASCII a 8 bit, controllo su blocchi piu' grandi distanza tra due valori di un codice* recupero automatico di errori codici triplicati, controllo incrociato

Page 109: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

109codici e dati

definizione:

dato un codice di rappresentazione di k simboli diversi, (event. non equiprobabili, con codifiche di lunghezza eventualmente diversa), si definiscono:

I med efficienza e = -------- N med

e

ridondanza r = 1 - e

Page 110: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

110

esempio: codifica dei 4 simboli: A, B, C, D

1) codice: A 00 B 11 C 01 D 10 <<====

I med = 2 bit (simboli equiprobabili)

N bit medio per simbolo: 2

efficienza: I med / N med = 2/2 = 1,0 <--

2) codice: A 111 B 11 C 1 D 1111 <<====

I med = 2 bit (simboli equiprobabili)

N bit medio per simbolo: (1+2+3+4)/4 = 10/4 = 2,5

efficienza: I med / N med = 2/2,5 = 0,8 <--

Page 111: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

111

continua esempio codifica di 4 simboli: A, B, C, D

3) codice: A 0001 B 0010 C 0100 D 1000 <<====

I med = 2 bit (simboli equiprobabili)

N bit medio per simbolo: 4

efficienza: I med / N med = 2/4 = 0,5 <--

Page 112: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

112codici ed errori

Problema dell' errore:

un dispositivo (un supporto fisico) puo' dar luogo a errori di trasmissione/di registrazione, e' inevitabile, anche se la tecnologia fornisce sistemi sempre piu' affidabili.

e' essenziale che il calcolatore stesso - in modo del tutto automatico - controlli e quindi segnali la presenza di un errore - e, se possibile, lo corregga

Esistono codici che consentono * la rilevazione e anche * la correzione automatica di errori.

Page 113: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

113codici ed errori

rilevazione di un errore: dato di partenza (37 caratteri):

IL PRESIDENTE E' UN GRANDE FILANTROPO

trasmesso con codice ASCII, 7 bit/carattere, in tutto 7 * 37 = 259 bit

contenuto d'informazione (circa, ipotizzo un dizionario di 16000 parole, quindi 14 bit per parola) 14(bit) * 6(parole) = 84 bit

efficienza I / N = 84/259 = 0,33

(prescindiamo dal contenuto di informazione "vero" di un messaggio di questo tipo ;-)

Page 114: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

114codici ed errori

rilevazione di un errore: dato di partenza (37 caratteri):

IL PRESIDENTE E' UN GRANDE FILANTROPO

codice ASCII, numero bit usati 7 * 37 = 259 bit, contenuto d'informazione 14*6 = 84 bit, efficienza I / N = 84/259 = 0,33

se c'e' un errore in registrazione (o di trasmissione)allora uno dei caratteri trasmessi viene ricevuto errato,es: IL PRESIDENTE E' UN GRANDE FILANTRZPO

L'errore viene rilevato e anche corretto: la lettera Z viene facilmente individuata come errore.

[ qui siamo noi a fare da “correttori automatici” ]

Page 115: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

115codici ed errori

2) codifica piu' efficiente: utilizzo un dizionario (a disposizione sia del sistema sorgente sia del ricevente) di 16.000 parole; per spedire una parola bastano 14 bit (2^14 = 16384), in tutto sei parole 6*14 = 84 bit (invece dei 37 * 8 = 296 nella codifica di prima) il dato

IL PRESIDENTE E' UN GRANDE FILANTROPO

codificato [ parola -> numero ] diventa:

6173 11410 4003 15501 5026 4897

-> Suppongo ora che si verifichi un errore, ad es. invece di 4897 ricevo 9897 ..... decodifico ....

Page 116: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

116codici ed errori

2) codifica efficiente con dizionario di 16.000 parole,

messaggio codificato (6*14= 84 bit invece di 296) 6173 11410 4003 15501 5026 4897

se si verifica un errorese si verifica un errore, ad es. invece di 4897 ricevo 9897, ottengo: 6173 11410 4003 15501 5026 9897

che interpretato con lo stesso dizionario da':

IL PRESIDENTE E' UN GRANDE MACACO

L'errore NON si rileva (tantomeno si corregge)=> un codice molto efficente NON permette la rilevazione degli errori !!

Page 117: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

117ancora un esempio:

l’infochimica vi insegnera’come iniziare una nuova vita [testo di 9 parole in tutto 55 caratteri]

codifica: solito dizionario di 15000 parole “numerate” della lingua italiana, da dove trovo i numeri progressivi delle parole. Per ogni parola trovo un numero (codice) :

come 3021 l’ 8411 infochimica 7953 nuova 10766 iniziare 7977 una 13311 insegnera’ 8042 vi 14850 vita 14903

Page 118: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

118l’infochimica vi insegnera’come iniziare una nuova vita [9 parole in tutto 55 caratteri, quindi in codice ASCII 55x8 = 440 bit ]

codifica: con dizionario di 15000 parole “numerate”

come 3021 l’ 8411 infochimica 7953 nuova 10766 iniziare 7977 una 13311 insegnera’ 8042 vi 14850 vita 14903

quindi il messaggio codificato diventa:

8411 7953 14850 8042 3021 7977 13311 10766 14903

invece di 55 caratteri a 8 bit = 440 bit testo ASCII, ho ora 9 numeri da 14 bit = 126 bit !

risparmio per un fattore di 3,5 ! ... ma ...

Page 119: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

119codici ed errori (cont. es.)messaggio originale (ASCII: 55 caratteri x 8 bit = 440 bit)“l’infochimica vi insegnera’come iniziare una nuova vita”

codifica: sost. alle parole i numeri progressivi del dizionario: come 3021 ... iniziare 7977 una 13311 insegnera’ 8042 vi 14850 vita 14903

il messaggio codificato (9 numeri da 14 bit = 126 bit)8411 7953 14850 8042 3021 7977 13311 10766 14903

con un errore (es. canale disturbato, o memoria con errori) ricevo/leggo rispettivamente nelle due codifiche:

“l’infochimica vi insegnera’come inwziare una nuova vita”

“8411 7953 14850 8042 3021 7677 13311 10766 14903”

Page 120: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

120caso di un errore:

a) messaggio spedito in ASCII ( 440 bit), ricevo:

“l’infochimica vi insegnera’come inwziare una nuova vita”

-->> mi accorgo dell’errore,

inwziare NON e’ una parola legale!

qui anche riesco a correggere !!

Page 121: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

121b) mess. codificato in numeri, (9 num. da 14 bit = 126 bit)ricevo: ( 7677 invece di 7977)“8411 7953 14850 8042 3021 7677 13311 10766 14903”

decodifico con l’aiuto del dizionario (parole numerate):come 3021 l’ 8411 finire 7677 nuova 10766 infochimica 7953 una 13311 iniziare 7977 vi 14850 insegnera’ 8042 vita 14903

MESSAGGIO (con errore) DECODIFICATO diventa:

l’infochimica vi insegnera’come finire una nuova vita -->> non mi accorgo dell’errore!

Page 122: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

122codici ed errori

dall'esempio visto segue che * per consentire

la rilevazione ("controllo") di un errore di trasmissione o di registrazione

* devo usare un codice ridondante cioe' tale che

NON TUTTE le combinazioni di bit sono lecite ovvero non tutti i codici rappresentano un dato.

Page 123: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

123codici ed errori

ricordiamo la definizione dell’ efficienza; il codice A 00 B 01 efficienza: e = Imed / Nmed = 2/2 = 1 C 10 .. D 11 ridondanza r = 1 - e = 0

A 000 B 001 efficienza: e = Imed / Nmed = 2/3 = 0,66 C 010 .. D 101 ridondanza r = 1 - e = 0,33

Page 124: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

124codici ed errori

Es: 4 simboli, A B C D - codifica:

1) non ridondante: uso il minimo di bit A 00 tutti i codici di 2 bit sono legali -> B 01 nessuna ridondanza, massima efficienza, MA C 10 non c' e' possibilita' di rilevare gli errori D 11 ad es: il dato: DABAC codificato e’ 11 00 01 00 10 se c'e' un errore allora ricevo: 11 00 11 00 10 da cui decodifico: DADAC

(... non mi accorgo dell'errore !! )

Page 125: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

125Es: 4 simboli, A B C D

2) codifica ridondante: uso piu’ bit del minimo necessario A 000 non tutti i codici di 2 bit sono legali, c'e' B 001 ridondanza, --> posso rilevare errori C 010 qui uso 3 bit per 4 simboli... D 101 ad es. il dato: DABAC codifica: 101 000 001 000 010

se ho un err. al 10.o bit ricevo: 101 000 001 100 010 ->

decodifica: DAB?C ma 100 e'illegale -> mi accorgo dell'errore

Page 126: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

126codici ed errori

attenzione: non tutti i codici ridondanti vanno bene

A 000 questo codice a 3 bit e’scelto un po' a caso... B 001 come vedremo subito, C 010 non e' un buon codice perche' D 101 ... in alcuni casi non mi accorgo dell’errore ... vediamo due esempi:

come visto, il codice permette di individuare questo errore: dato DABAC: 101 000 001 000 010errore al 10.o bit leggo: 101 000 001 100 010 --> in decodifica ho il codice 100 illegale -> rilevo l’errore, ottengo DAB?C MA in altri casi questo stesso codice non va bene:

Page 127: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

127codici ed errori

continua... non tutti i codici ridondanti vanno bene - A 000 come visto, con questo codice B 001 talvolta posso accorgermi C 010 di un errore, ma ... D 101 ... secondo esempio: 2) caso: stesso dato DABAC se ho un err. al 12.o bit (prima era al 10.o): DABAC codifica: 101 000 001 000 010 ricevo: 101 000 001 001 010 --> nella decodifica non rilevo l’errore ! leggo ... DABBC - il codice 001 e' legale->

Page 128: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

128codici ed errori

3) invece del codice senza ridondanza 4 simboli, 2 bit: A 00 B 01 C 10 D 11

uso il codice:

A 0000 qui raddoppio i bit della codifica iniziale B 0011 -> il codice e' meno efficiente (vedi sotto) C 1100 ma posso rilevare piu' errori rispetto il D 1111 codice precedente - questo codice rileva un singolo errore in posizione qualunque!

efficienza del codice: e= Imed / Nmed = 2/4 = 0,5 .. ridondanza r = 1 - e = 0,5

Page 129: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

129codici ed errori

ricordiamo: un raddoppio di bit permette il controllo di errore; invece del codice a efficienza 1, A 00 B 01 C 10 D 11 uso un codice:

A 0000 questo codice (con num. bit doppio) ha B 0011 efficienza: e = Imed / Nmed = 2/4 = 0,5 C 1100 .. D 1111 ridondanza r = 1 - e = 0,5

rilevo un singolo errore in qualunque posizione ...ma ... e’ un codice troppo ridondante!

come deve essere costruito il codice per poter rilevare sempre un singolo errore, senza essere troppo ridondante?

Page 130: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

130codici ed errori

definiamo la distanza tra due valori di un codice come il numero di bit da cambiare per passare da un valore all’altro, ad es. per il codice

A 0 1 1 B 0 1 0 C 1 1 1 D 0 0 1 abbiamo:

dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1dist(B,C) = 2, dist(B,D) = 2, dist(C,D) = 2

se c’e’ un errore nel dato A, e cioe’ scrivo (trasmetto) il dato 011 -> ma poi leggo (ricevo) il dato 010 ->

ottengo il codice di B, che e' un codice legale [qui vi sono coppie di valori (legali) X,Y con dist(X,Y)=1 ] quindi non mi accorgo dell’errore!

Page 131: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

131codici ed errori

distanza tra due valori di un codice = il numero di bit da cambiare per passare da un valore all’altro: se ho: A 0 1 1 B 0 1 0 C 1 1 1 D 0 0 1 allora : dist(A,B)=1, dist(B,C)=2, dist(B,D)=2, dist(C,D)=2

puo’ verificarsi: trasmetto il dato A=011, ricevo il codice 010 (legale!) = B -> ottengo il dato B[qui vi sono coppie di valori (legali) X,Y con dist(X,Y)=1] un codice con distanza minima tra due codici legali uguale a 1 non permette la segnalazione di errore, perche’ un errore puo’ portare una stringa di bit legale in un’altra stringa di bit legale - perche’ vi sono dati diversi con codifiche distanti di 1 solo bit.

Page 132: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

132

ricorda: la distanza tra due valori di un codice e' il numero di bit da cambiare per passare da un valore all’altro; es: A 0 1 1 B 0 1 0 C 1 1 1 D 0 0 1

dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1dist(B,C) = 2, dist(B,D) = 2, dist(C,D) = 2

NON deve essere possibile che un errore possa portare una stringa di bit legale X in un’altra stringa di bit legale (diversa) Y:

per avere la segnalazione di errore un codice deve avere il valore della distanza maggiore o uguale a 2 per tutte le coppie X e Y di valori legali del codice distmin(X,Y)>=2

codici ed errori

Page 133: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

133codici ed errori

nota:il codice con i bit raddoppiati NON si usa, perche’ la probabilita’ di un errore in un dato manipolato (trasmesso, memorizzato...) da un calcolatore e’ piccola, e quindi si usano codici con meno ridondanza!

Se la probabilita’ di errore e’ ad es. 10E-6 non usero’ un codice con 50% di ridondanza, ma con molto meno.

Nei sistemi vecchi di trasmissione e registrazione dati l’affidabilita’ era minore, la probab. di errore piu’ grande, si usava il codice ASCII a 7 bit + 1 bit di controllo di errore (ridondanza di 1/8)...

Page 134: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

134codici ed errori

un sistema semplice per avere un codice a controllo di errore e' l' aggiunta di 1 bit al dato, tale che la somma dei bit del dato piu' il bit aggiunto sia pari:

codici a controllo di parita'.

per 4 simboli (il punto evidenzia il bit di controllo) :

A 00.0 B 01.1 C 10.1 D 11.0

con tale codifica il dato B B A D diventa: 011 011 000 110 se ho un errore (ad es. nel 6.o bit): 011 010 000 110rilevo l'errore nel secondo carattere, perche’ la terna 010 e’ illegale;

Page 135: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

135codici ed errori

nota: il codice senza ridondanza era:

A 00 B 01 efficienza: e = Imed / Nmed = 2/2 = 1 C 10 .. D 11 ridondanza r = 1 - e = 0

il codice con aggiunto un bit di parita' ha:

A 000 B 011 efficienza: e = Imed / Nmed = 2/3 = 0,66 C 101 .. D 110 ridondanza r = 1 - e = 0,33

un po' meglio del raddoppio ... ma non tanto (non si usa: il controllo e' fatto su "pacchi" di dati piu' grandi)

Page 136: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

136codici ed errori

nota: ricordiamo il codice ASCII con controllo parita’:

se due codici (legali) differiscono di 1 bit, ad es.:a = 110 0001, A = 100 0001, aggiungo un bit di parita’, i due codici differiscono di due bit:a = 110 0001 1, A = 100 0001 0

se differiscono di due bit, il bit di parita’ e’lo stesso, e la distanza e’ sempre di due bit:a = 110 0001, A = 000 0001, aggiungendo un bit di parita’ la distanza rimane due:a = 110 0001 1, A = 000 0001 1

con questa codifica posso sempre rilevare la presenza di un singolo errore ! ==>> CODICE A CONTROLLO DI ERRORE

Page 137: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

137codici ed errori

codice ASCII a 7 bit piu' un bit di parita':

a k A 110 0001 1 110 1011 1 100 0001 0

l'ottavo bit aggiunto e' tale che la somma di tutti i bit e' pari.

spedisco questo dato e poi ricevo il dato con un errore:

110 0001 1 110 1111 1 100 0001 0

in ricezione ricalcolo il bit di controllo per ogni carattere e lo confronto con quello letto (ricevuto);

... trovo che il secondo carattere e' errato: infatti 110 1111 => bit di controllo calcolato = 0 => bit controllo ricevuto = 1 sono diversi => c’e’ un err !

Page 138: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

138codici ed errori

due osservazioni sul codice a controllo parita':

1) si noti che non posso ricostruire il dato originale, perche’ con un errore posso passare da 000 a 010 oppure da 011 a 010 cioe' un dato errato si puo' ottenere da piu' di un dato originale corretto ... ((non e’ un codice a correzione automatica di errore) non e’ un codice a correzione automatica di errore)

2) se si verificano piu' errori in un dato ? allora puo' darsi che da un codice legale si passi ad un altro codice legale -> non si rilevano errori multipli

Page 139: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

139codici ed errori

efficienza e ridondanza per il codice ASCII con controllo di parita’ ?(cioe' dove ai 7 bit del dato si aggiunge un bit calcolato in modo che la somma dei bit 0 e 1 risulti pari) es: a k A 110 0001 1 110 1011 1 100 0001 0

efficienza: e = Imed / Nmed = 7 / 8 = 0,875 e la

ridondanza r = 1 - e = 0,125

n.b.: sono usati i codici ASCII a controllo di parita', controllo di disparita' e i codici senza controllo

Page 140: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

140codici ed errori

MA: in un calcolatore la probabilita' di errore e' molto piccola - per rilevare un errore bastano codici con poca ridondanza

Normalmente la probabilita' di errore e' (vedere caratteristiche su internet)

molto piccola nel caso di trasmissione dati (linee telefoniche, linee dati)

ancora piu' piccola nella registrazione su supporti magnetici (dischi)

ancora piu' piccola nella memoria centrale del calcolatore:

Page 141: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

141codici ed errori

probabilita' di errore e' piccola -> per rilevare un errore bastano codici con poca ridondanza

la probabilita' di errore e' (in ordine decrescente da “piccola” a “molto piccola”): caso di trasmissione dati scrittura/lettura su supporti magnetici (dischetti) scrittura/lettura in memoria centrale del calcolatore:

si usa una codifica con ridondanza molto piu' piccola del caso ASCII con controllo parita’:

si aggiungono uno o piu' bit di controllo su blocchi di bit piu' grandi.

Page 142: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

142codici ed errori

Es: aggiungo un carattere (8 bit) di controllo ad ogni blocco di 511 caratteri (511*8 bit), e ho la dimensione complessiva del blocco di 512 caratteri.

Il carattere e' calcolato ("in qualche modo", ad es. come somma dei caratteri precedenti, modulo 256) e poi aggiunto (“Cyclic Redundancy Check” / CRC)

nella lettura (o in ricezione) ricalcolo il carattere di controllo (dai dati letti/ricevuti) e lo confronto con quello trovato ->

se sono diversi c'e' un errore nel blocco.

Page 143: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

143

Molto usato e' il codice CIRCo Cross-interleaved Reed-Solomon Code che usa una codifica con l'algoritmo di Reed e Solomon (anni 60)

I sistemi di rilevazione e correzione di errore sonostati definiti gia' negli anni 40(telecomunicazioni) alcuni nomi: Claude Shannon, Richard Hamminge altri ... (altro corso ;-)

Page 144: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

144aggiungo un carattere (8 bit) di controllo ad ogni blocco di 511 caratteri (511*8 bit) (in totale il blocco avra’ 512 caratteri); il carattere e' calcolato dai caratteri presenti nel blocco dato, e poi aggiunto;

nella lettura (o in ricezione) ricalcolo il carattere di controllo (dai dati letti/ricevuti) e lo confronto con quello trovato -> se sono diversi c'e' un errore nel blocco.

efficienza: e = Imed / Nmed = 511*8 / 512*8 = 0,998 e la

ridondanza r = 1 - e = 0,002

ricorda ASCII con parita’: e = Imed / Nmed = 7 / 8 = 0,875

ridondanza r = 1 - e = 0,125

Page 145: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

145

CODICI A CORREZIONE DI ERRORE (cenni)

Page 146: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

146codici ed errori

senza controllo errore:A 00 B 01 C 10 D 11 e= Imed/Nmed = 2/2= 1, r=0

con controllo errore - controllo parita' :A 000 B 011 C 101 D 110 e= Imed/Nmed = 2/3 , r=1/3

oppure raddoppioA 0000 B 0011 C 1100 D 1111

e= Imed / Nmed = 2 / 4 = 0,5; r = 1 - e = 0,5

se triplico i bit del codice senza controllo:

A 000000 B 000111 C 111000 D 111111

e= Imed / Nmed = 2 / 6 = 0,33; r = 1 - e = 4 / 6 = 0,66

e’ un codice che consente la correzione di errore:

Page 147: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

147

se triplico i bit del codice senza controllo (2 bit per 4 simboli) ottengo

A 000000 B 000111 C 111000 D 111111

... un codice che consente la correzione di errore! es.: dato originale B B A D

spedisco i bit: 000111 000111 000000 111111

con un errore ricevo ad es.: 000111 000111 001000 111111

dove si riconosce il carattere errato e si ricostruisce anche quale era il dato originale ! Si noti che qui la distanza tra due codici legali e' almeno 3 bit.vale: e = Imed / Nmed = 2 / 6 = 0,33; r = 1 - e = 4 / 6 = 0,66

codici ed errori

Page 148: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

148codici ed errori

come nel caso di codice a rilevazione di errore [versione rudimentale : rraaddooppiioo i bit]

se la probabilita’di errore e’ piccola - anche nel caso di codice a correzione automatica dell'errore -> si puo’ fare di meglio

vediamo uno schema di codifica un po' meno rudimentale; in ogni caso :

aggiungo bit per 1) rilevare se c'e' un errore e aggiungo bit per 2) trovare quale bit del dato e' errato, e quindi correggerlo

Page 149: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

149codici ed errori

es.: 16 simboli, codice senza controllo err. (con r=0) uso 4 bit:A 1000 B 1001 C 1010 ... F 0000

codice a controllo di errore: aggiungo un bit di parita' (totale 5 bit):A 10001 B 10010 C 10100 ... F 00000

codice a correzione automatica di errore: dispongo i bit del dato in due righe da due bit ciscuna, e aggiungo per ogni riga e ogni colonna un bit di parita',in tutto altri 4 bit :

A 10 1 B 10 1 quindi: A = 101 000 10 00 0 01 1 quindi: B = 101 011 11 10 11

Page 150: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

150codici ed errori

ripetiamo: codice a correzione automatica di errore: dispongo i bit del dato in due righe da due bit ciascuna, e aggiungo un bit di parita' per ogni riga e ogni colonna:

A 10 1 B 10 1 quindi: A = 101 000 10 00 0 01 1 quindi: B = 101 011 11 10 11

se trasmetto A ovvero 101 000 10 e ricevo (un errore) ad es. 101 010 10rieseguo il controllo righe/colonne e ho: 10 1 . 01 0 .errore nella seconda riga 10 .errore nella seonda colonna -> err. nel bit marcato 101 010 10 -> correz.ne: 101 000 10

Page 151: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

151

e se c’e’ un errore nei bit di controllo parita? Dato di 16 bit: 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0aggiungo dei bit secondo lo schema:

1 1 0 1 1 (aggiungo anche un 0 0 1 1 0 bit di controllo sui bit 0 1 0 1 0 dell’ ultima riga 1 0 0 0 1 (riga di controllo), in tutto 0 0 1 1 00 aggiungo 9 bit su 16, in totale 25 bit

Se si verifica un singolo errore ricalcolando i codici di controllo parita’ per le “righe” e per le “colonne” e il bit finale, trovo in quale riga e in quale colonna si trova -> posso correggere.

codici ed errori

Page 152: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

152codici ed errori

es: dato: 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0aggiungo dei bit secondo lo schema:1 1 0 1 1 (aggiungo anche0 0 1 1 0 un bit di controllo 0 1 0 1 0 sui bit della riga 1 0 0 0 1 di controllo, in tutto 0 0 1 1 0 aggiungo 9 bit su 16)

immagino che ci sia un errore in trasmissione, ricevo:1101 1 0011 1 0101 1 1000 1 0011 0ricalcolo le parita’ sulle righe: errore nella terza riga;ricalcolo la parita’ sulle colonne, trovo che le prime quattro colonne sono a posto -> l’errore e’ nell’ultima colonna -> ho individuato il bit errato, lo correggo.

Page 153: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

153codici ed errori

Si osservi che un codice a correzione di errore deve indicare (in qualche modo) la posizione del bit errato - ne ricaviamo l'esigenza minima di questo codice:

dato di k simboli: per indicare una posizione su k devo usare al minimo n = log2(k) bit, quindi un codice a correzione automatica dell' errore richiede almeno

k bit (dato) + log2(k) bit (controllo)

e quindi per un dato di k bit, con k = 4 6 8 32 60 100 128 256 ...

devo aggiungere almeno n = 2 3 3 5 6 7 7 8 ... bit

( vedi codice Hamming, 1950 )

Page 154: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

154codici ed errori

oggi la maggior parte dei dispositivi di trasmissione e/o di memorizzazione dati usa codici a controllo di errore:

trasmissione dati: a caratteri: controllo parita’ sul carattere a blocchi: blocco con carattere di controllo (cyclic redundancy check, o il codice CIRC) registrazione: a blocchi con controllo crc, sistemi piu’ complessi

Page 155: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

155

memoria centrale del calcolatore (RAM): memoria a celle (gruppi di bit) con controllo errore, memoria a celle con correz. automatica di err. singolo memoria senza controllo (in tal caso il sistema esegue periodicamente delle procedure di controllo scrivi/rileggi su tutta la memoria centrale) ----ogni dispositivo ha un tasso di errore ammesso proprio grazie ai sistemi a rilevazione e correzione di errore (es.dischi magn.: 1 err ogni Gbit -> ogni secondo!)

Page 156: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

156codici ed errori ...

BIBLIOGRAFIA:

J.R.Pierce, "La Teoria dell'Informazione" Ed.Sc.e Tec. Mondadori, 1963

P.O.Longo, "Teoria dell'informazione",Boringhieri 1980,

A.Sgarro, "Crittografia, tecniche di protezione dei dati riservati", Muzzio, 1986,

A.Sgarro, "Codici segreti", Mondadori 1988.

ecc

Page 157: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

157ESERCIZI

1) Dati 7 simboli @ # $ % ^ & ” definire un codice a controllo di errore2) Definire un codice a correzione di errore per + - /3) Il codice seguente consente il controllo di errore? A 101 B 110 C 011 D 111 4) Calcolare l’efficienza e la ridondanza del codice dell’esercizio 35) Il governo cinese ha deciso di utilizzare un codice a 32 bit per codificare i 20000 ideogrammi cinesi; calcolare l’efficienza di tale codice.6) Quanto spazio risparmia la codifica con numero di matricola [8 cifre decim.] al posto del nome e cognome [20 lettere] immaginando che tale informaz.e appaia 20 volte per studente nell’ archivio [16000 studenti]

Page 158: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

158esercizi

1) codice a controllo di errore per @ # $ % ^ & ” 7 simboli - 3 bit per codifica almeno, + bit parita’: 0000 @ 0011 # 0101 $ 0110 % 1001 ^ 1010 & 1100 ” 2) Definire un codice a correzione di errore per + - / due bit per codifica di 3 simboli, poi triplico i bit: 000 000 + 000111 - 111000 /

3) Il codice seguente consente il controllo di errore? A 101 B 110 C 011 D 111 no: le codifiche di A e D (BD e CD) hanno distanza uno -> un errore in A puo’ dare il codice di D

Page 159: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

159esercizi

4) Calcolare l’efficienza e la ridondanza del codice dell’esercizio 3 cioe’ A 101 B 110 C 011 D 111

4 simboli - richiesti 2 bit, il codice usa 3 bit ->efficienza: e = Imed / Nmed = 2/3 => 0,66 ridondanza r = 1-e =0,33

5) Il governo cinese ha deciso di utilizzare un codice a 32 bit per codificare i 20000 ideogrammi cinesi; calcolare l’efficienza di tale codice.

e = I / N = log2(20000)/32 = 14,3 / 32 = 0,45

Page 160: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

160esercizi

6) Quanto spazio risparmia la codifica con numero di matricola [8 cifre decim.] al posto del nome e cognome [20 lettere] immaginando che tale informaz.e appaia 20 volte per studente nell’ archivio [16000 studenti]

per ogni occorrenza risparmio (uso codice ASCII) 12 caratteri, in totale 12 x 20 x 16000 = 12 x 320 000 = 3 840 000 caratteri

se codifico il numero di matricola in binario, uso log2(100 000 000) = 27 bit (circa) al posto di 20 x 8 = 160 bit, risparmio 133 bit = 17 car quindi per 20 occorrenze per 16000 studenti ho320 000 x 17 = 5 440 000 caratteri

Page 161: 1 FONDAMENTI DI INFORMATICA di Matjaz Hmeljak parte INFORMAZIONE e CODICI

161

FINEFINE

PARTE

INFORMAZIONE

E

CODICI

segue parte numeri