La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

FONDAMENTI DI INFORMATICA parte - INFORMAZIONE e CODICI

Presentazioni simili


Presentazione sul tema: "FONDAMENTI DI INFORMATICA parte - INFORMAZIONE e CODICI"— Transcript della presentazione:

1 FONDAMENTI DI INFORMATICA parte - INFORMAZIONE e CODICI
di Matjaž Hmeljak parte - INFORMAZIONE e CODICI

2 I N F O R M A Z I O N E - cenni 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

3 contenuto 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 campionatura e compressione dati (cap.separato) bibliografia esercizi

4 segue la parte relativa al concetto di informazione, e
parte informazione segue la parte relativa al concetto di informazione, e alla misura dell’informazione

5 definizione dell' informazione ?
informazione e codici definizione dell' informazione ?

6 ? canale di trasmissione -> sistema ricevente sistema
informazione - cenni ? canale di trasmissione hai vinto 1 miliardo alla lotteria di carnevale di Canicattini Bagni. messaggio: contiene informazione -> sistema ricevente sistema sorgente >

7 informazione - 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 > B sistema canale di trasmiss sistema sorgente informazione ricevente (messaggio M)

8 informazione - 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 ...

9 informazione: 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

10 informazione: 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, Kater, neko, mačka, kÔt, 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 giorni o 6000 anni dopo) C < B LETTORE TAVOLETTA

11 informazione - messaggio / dato
L' informazione puo' essere trasmessa ( messaggio tra due sistemi [ A ==> B ] ) o registrata (dato = informazione codificata su un supporto di memoria per essere in seguito riutilizzata) utilizzando un codice di rappresentazione (vedremo) A > B abiesabies dispositivo A4F = (trasmette dato bla-bla e codifica) codificato

12 informazione: quantita'
dell' informazione interessa: * quantita' (unita' di misura) * rappresentazione (codici) * contenuto (significato, interpretazione)

13 * quantita' (unita' di misura) come si misura l’informazione ?
I N F O R M A Z I O N E - cenni * quantita' (unita' di misura) come si misura l’informazione ? quanta informazione ha un telegiornale ? quanta informazione ha un' ora di lezione di storia dei calcolatori ? ( 2 Tesla di informazione ? 2 chilogrammi di informazione ? 2 pinte di informazione? 2 klaftre di informazione?) ... vedremo tra breve

14 * rappresentazione (codici) ( come si scrive "bisturi" in cinese?
I N F O R M A Z I O N E - cenni * rappresentazione (codici) ( come si scrive "bisturi" in cinese? come si scrive 1984 in arabo? come si scrive “tassa di importazione” in wolof? o “fondamenti di informatica” in guarani’ ? o "discoteca" in azero? )

15 * contenuto (significato, interpretazione)
I N F O R M A Z I O N E - cenni * contenuto (significato, interpretazione) lo studio del contenuto o del significato (analisi semantica), e l' interpretazione (analisi pragmatica) di un messaggio non possono prescindere dal contesto; vediamo 8 esempi: 1) es.: < la terza provetta di F.I.1 si terra' il 2 gennaio > 2) es.: < l’inquinamento del mare sta aumentando > 3) es.: < x 1997 = > 4) es.: < #include <conio.h> void main() { cputs(“ciao”); } 5) es.: < la devolution, l'involution, la furbolution e la popolution sono in fase di deflation > 6) es.: < quel ramo del lago di Como che volge alla Padania >

16 (*) lacerto = frammento
I N F O R M A Z I O N E - cenni * contenuto (significato, interpretazione) 7) es.: < mi devi 10 euro > 8) es.: < “il recente lavoro di Zaffira Collerattovich abbraccia il ritmo esistenziale, dilatandosi nella simbologia delle 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” > un messaggio richiede (implica) un ambiente di nozioni di entrambi i sistemi sorgente e ricevente (un contesto) in tutti questi esempi (e forse di piu' nel caso dell'esempio 8 - parte di un testo di un critico d'arte ) - il contenuto del messaggio e' perso se ci manca il contesto ;-) (*) lacerto = frammento

17 l' analisi semantica e pragmatica ovvero
I N F O R M A Z I O N E - cenni * contenuto (significato, interpretazione) => il contenuto del messaggio in generale implica due contesti, del sistema sorgente e del sistema ricevente ogni messaggio richiede un ambiente di nozioni comuni al sistema sorgente e al sistema ricevente (problema del messaggio da inviare a extraterrestri) l' analisi semantica e pragmatica ovvero lo studio del significato e l' interpretazione/esecuzione di un messaggio sara’ oggetto del nostro corso ... ma: solo per programmi C

18 vediamo ora meglio questi attributi dell'informazione:
I 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, efficienza, errori) * contenuto (significato, interpretazione: dopo, per il C)  cominciamo con la quantita' questa e' legata alla probabilita'

19 informazione I - 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 un milione di euro alla lotteria"

20 Esempi [legame quantita’info del messaggio - probabilita’ del mess.]
informazione I = f(p) Esempi [legame quantita’info del messaggio - probabilita’ del mess.] vincita in lotteria rionale, con 200 numeri, un premio: - probabilita' di vincita 1/200 ovvero 0,5 percento vincita su lancio di moneta a testa/croce: - probabilita' di vincita di 1/2 ovvero 50 percento vincita del concorso per un posto di tecnico presso l' Universita' di Rautuzza con un unico candidato (raccomandato ;-) - probabilita' di vincita 1/1 (certezza) ovvero 100 percento

21 probabilita' di laurearsi in ingegneria informatica in tre anni
informazione I = f(p) Esempi ... [quantita’ info del messaggio <--> probabilita’ del mess.] probabilita' di laurearsi in ingegneria informatica in tre anni - probabilita’ di riuscita 0,05 ovvero 5 percento (forse, chissa') laurea in ingegneria enogastronomica con 110/110 punti in cinque anni al massimo ... - probabilita’ di riuscita 0 ovvero 0 percento (*) (*) (infatti e' impossibile ... non c’e’)

22 un dato relativo ad un evento poco probabile
informazione I = f(p) 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) : nota: la probabilita' viene misurata in valori da 0 (evento impossibile, 0 %) a 1 (evento certo, 100 %) un dato relativo ad un evento poco probabile contiene una grande quantita' di informazione; la quantita’ di informazione di un dato e’ legata alla probabilita’ di quel dato :

23 una grande quantita' di informazione;
informazione I = f(p) piu' conosco il contenuto del messaggio, cioe' maggiore e' la probabilita' del messaggio -> piu' piccola e' la quantita' di informazione contenuta; un dato relativo ad un evento certo (probabilita' uno) contiene una quantita' di informazione zero. un dato relativo ad un evento poco probabile (di probabilita' quasi zero) contiene una grande quantita' di informazione;

24 I p la quantita’ di informazione decresce
informazione I = f(p) la quantita’ di informazione decresce al crescere della probabilita’ del dato: I p p grande I piccola p piccola I grande diagram-ma a fianco, in prima approssi- mazione: MA attenzione: il legame tra probabilita' e informazione non e' lineare;

25 legame tra probabilita’ e quantita’ di informazione e’ di tipo logaritmico; se dimezza la probabilita’ -> l’ informazione aumenta di uno Informazione probabilita' piccola => informazione grande, P=2-256 => I=8 3 Probabilita'grande => Informaz. piccola, P=1 => Info=0 2 1 1/8 1/4 1/2 1 probabilita' A evento certo si associa un'informazione nulla , ad evento poco probabile si associa un'informazione grande .

26 ricorda la funzione logaritmo: log2(n) = x
e' la funzione inversa di n = 2x ecco alcuni valori: log2(0,0625)= ,0625 = 2-4 log2(0,125)= ,125 = 2-3 log2(0,25)= ,25 = 2-2 log2(0,5)= ,5 = 2-1 log2(1)= = 20 log2(2)= = 21 log2(4)= = 22 log2(8)= = 23 log2(10)= 3, = 23,3 log2(16)= = 24 log2(1024)= = 210 log2( )= = 220 log2( )= = 230

27 funzione logaritmo: log2(n) = x inversa di n = 2x
da ricordare alcuni valori: log2(0,5)= ,5= 2-1 log2(1)= = 20 log2(2)= = 21 log2(4)= = 22 log2(8)= = 23 log2(10)=3, = 23,3 log2(16)= = 24 log2(1024)= = = 1Kilo log2( )= = = 1Mega log2( )= = 1Giga log2(x) x 0,5 1 -2 -

28 informazione: I = log2(1/probabilita')
il legame tra probabilita’ e quantita’ di informazione e’ di tipo logaritmico: I = log2(1/p) informazione probabilita'

29 informazione: I = log2(1/probabilita')
il legame tra probabilita’ e 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 ) Info Prob

30 unita’ di informazione
si definisce quantita’ di informazione unitaria di bit cioe' l'unita' di informazione: e' l'informazione contenuta in un messaggio o in un dato di probabilita' 1/2 Es.: il messaggio relativo al risultato di un lancio di una moneta non truccata a testa o cifra ha un contenuto di un bit di informazione : I = log2( 1/probab ) = log2( 1/ ( 1/2 ) ) = log2 ( 2 ) = 1

31 Relazione tra informazione e probabilita' :
informazione - 5 esempi Relazione tra informazione e probabilita' : I = log2( 1/p ) = -log2( p ) = log2( N ) esempi: *1) informazione relativa ad un dato su sedici (una cifra esadecimale) I = log2 (16) = 4 bit *2) informazione relativa ad evento certo (p=1): I = log2 (1) = 0 bit *3) quantita' di inform. di un dato composto da un simbolo (una lettera) dell'alfabeto inglese (25 lettere) I = log2 (25) = 4,64 bit

32 Relazione tra informazione e probabilita' :
informazione - 5 esempi Relazione tra informazione e probabilita' : I = log2( 1/p ) = -log2( p ) = log2( N ) *4) informazione di una cifra decimale I = log2(10) = 3,32 bit ( 2 alla 3 = 8, alla 3,3 = 10, 2 alla 4 = )

33 Relazione tra informazione e probabilita' :
informazione - 5 esempi Relazione tra informazione e probabilita' : I = log2( 1/p ) = -log2( p ) = log2( N ) *5) informazione di una cifra ottale (otto simboli da 0 a 7) I = log2( 8 ) = 3 bit

34 quantita’ di informazione di una cifra binaria: I = log2(2) = 1 bit
informazione - 5 esempi *6) 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: I = log2 (16) = 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, I = log2(2) = 1 bit

35 quantita’ di informazione di una cifra binaria: I = log2(2) = 1 bit
informazione - 5 esempi legame quantita’ di informazione - probabilita’: I = log2(1/p) = -log2(p) = log2(N) quantita’ di informazione di una cifra binaria: probabilita’ di scelta tra "0" e "1" : p = 1/2, I = log2(2) = 1 bit e questo anche risponde al perche' della scelta di I = log2(1/p) e non ad es. log3(1/p) o log10 (1/p) o log7(1/p) o altro ...

36 Informazione - dato semplice
esercizi: a) quanta informazione ha il simbolo + scelto tra i dieci simboli * / , ! ? ; : b) quanta informazione ha il dato vocale E scelto tra i cinque simboli A E I O U c) quanta informazione ha una cifra esadecimale E scelta tra 16 simboli A B C D E F d) quanta informazione ha il dato P scelto tra i 33 simboli dell’alfabeto russo ( segue soluzione )

37 Informazione - dato semplice
soluzioni: a) quanta informazione ha il dato + (scelto tra i dieci simboli * / , ; : ! ? ) n= log2(1/p) = log2(n) = log2(10 ) = 3,32 bit b) quanta informazione ha il dato E (scelto tra i cinque simboli A E I O U ) n= log2(1/p) = log2(n) = log2(5 ) = 2,32 bit

38 А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я A B V G D JE E Ž Z I I K L M N O P R S T Y F H C Č Š Š trd i mh E JU JA

39 Informazione - dato semplice
soluzioni: c) quanta informazione ha il dato E scelto tra i 16 simboli A B C D E F n= log2(1/p) = log2(n) = log2(16 ) = 4 bit d) quanta informazione ha il dato P scelto tra i 33 simboli dell’alfabeto russo (*) n= log2(1/p) = log2(n) = log2( 33 ) = 5,03 bit (*) А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я A B V G D JE JO Ž Z I Ikr K L M N O P R S T Y F H C Č Š Š trd i mh E JU JA

40 Informazione - dato semplice
e) quanta informazione ha un dato K scelto tra i 45 simboli dell’alfabeto giapponese? n=45 ... (provare!!)

41 Informazione - dato composto
Abbiamo visto come l' informazione relativa ad un dato K scelto da un insieme di N simboli e' data dal logaritmo I = log2( 1 / p ) = log2( 1 / (1/N) ) = log2( N ) nel caso di un dato composto ? la relazione I = log2( 1 / p ) rimane, cambia il calcolo della probabilita' p di un dato composto : ad es. se ho un dato ( A,B ) con A e B dati scelti da un insieme di N simboli, la probabilita' di (A,B) e' diversa dalla probabilita' di A da solo o di B da solo;

42 informazione - dati composti
quantita' di informazione contenuta in un dato composto: quanta informazione contengono i dati seguenti : "operator overloading can be dangerous" "fahbgawxybmcdeifghjpqrklsuvtzcdeinojk" " " Le quantita' di informazione dei tre dati sono diverse ? ... "a prima vista" si "intuisce" che sono diverse ....

43 informazione - dati composti
quanta informazione hanno i tre dati composti seguenti (tutti di 8 simboli) : “ 7 A F F 0 0 ” “ B F U W R Q E A ” “ P a p e r i n a ” da un esame superficiale si "sospetta" che i 3 dati NON 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, perche' nei dati sopra (composti da piu’ simboli) i singoli simboli NON sono sempre indipendenti tra loro

44 informazione - dati composti
Per calcolare quanta informazione ha un dato composto da piu’ simboli, come i tre dati visti: 1) “ 7 A F F ” 2) “ B F U W R Q E A ” 3) “ P a p e r i n a ” 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)

45 inoltre spesso i singoli simboli hanno nei dati frequenze diverse e quindi probabilita' diverse - vedremo in seguito cosa implica questo ...

46 informazione di dati composti
1) dati composti da piu' simboli indipendenti tra loro (indipendenti: la presenza dei primi (o ultimi) 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) ne segue che 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) (a,b simboli indipend.) . .

47 informazione con dato di n simboli indipendenti
Informazione contenuta nella parola di n lettere: e’ la somma delle informazioni dei n singoli simboli se le lettere sono indipendenti tra loro: es.: dato di 6 lettere indipendenti: "ZHWITQ" I(lettera)= 4,6 bit = log2(25) (alfab.di 25 lettere), quindi 6 * 4,6 bit = 27,6 bit (28 bit = inform. per la scelta di un dato tra 2^28 = 256 milioni di dati possibili-circa, ovvero la scelta di un dato tra 25^6 = dati possibili di 6 lettere) (quanto detto vale se le lettere sono equiprobabili e quindi l’informazione per simbolo e’ costante)

48 informazione per dati composti
L'informazione contenuta nel dato (numero decimale di 4 cifre): "1870" sappiamo che per una cifra decimale il contenuto di informazione e' 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 possibili (appunto 1863 scelto tra i dati )

49 esercizi informazione per dati composti
esercizio: quanta informazione hanno i dati: a) (num.telefonico di 7 cifre) b) さ よ な ら (*) (parola giapponese di 4 sillabe, dove in giapponese ci sono 45 sillabe) c) corrompevolissimo (parola di 17 lettere) d) 4 x 4 = (un elemento di una tabella di quadrati dai numeri da 1 a 9) segue soluzione (*) leggi "sa yo na ra" in scrittura hiragana

50 esercizi informazione per dati composti - soluzione
a) (num.telefonico di 7 cifre): dato x x x x x x x (dove x sta per una cifra), con I(x) = log2(10) = 3,3 -> I(dato)= 7*3,3= 23.1 bit b) さ よ な ら (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

51 esercizi informazione per dati composti - soluzione :
c) corrompevolissimo (parola di 17 lettere, vi sono 21 lettere) dato xxxx xxxx xxxx con I(x) = 4,4 bit -> I(dato) = 17 * 4,4 = 46,8 bit d) 4 x 4 = (un elemento di una tabella di quadrati dei numeri da 1 a 9) dato x * x = zz (x cifra da 1 a 9, il resto e’ fissato) con I(x) = 3,3 -> I(dato) = 2*3,3 = 6,6 bit

52 informazione dati composti simboli dipendenti
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

53 informazione dati composti simboli dipendenti "carota"
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, ^ 6 = : scelta di un dato tra i 244 M di dati composti da 6 lettere, tipo: AAAAAA, AAAAAB, .. AAAAAZ, AAAABA, ... ... ZZZZZW, ZZZZZX, ZZZZZY, ZZZZZZ)

54 informazione dati composti simboli dipendenti "carota"
n simboli non equiprobabili , non indipendenti tra loro calcolo della quantita' di informazione contenuta nella parola "CAROTA" se le lettere sono indipendenti tra loro: I = 6 * 4,6 bit = 27,6 bit (scelta di uno tra 256 = dati possibili ) MA le lettere non sono indipendenti, se scrivo CAROxy i simboli x,y non hanno prob. di 1/25 ma molto meno: x e y dipendono dai simboli precedenti: ai quattro simboli CARO non puo' seguire una qualunque lettera dell'alfabeto da a fino a z, ma solo alcune: (c,g,n,s,t,v) CAROCcio CAROgna CAROnte CAROsello CAROta CAROte CAROtide CAROvana CAROvita quindi x ha una probabilita' di scelta tra 9 simboli (3,1 bit),

55 informazione dati composti simboli dipendenti "carota"
quantita' di informazione della parola "CAROTA" MA le lettere non sono indipendenti, se scrivo CAROxy i simboli x,y non hanno prob. di 1/25 ma molto meno: x e y dipendono dai simboli precedenti, abbiamo visto che x ha una probabilita' di scelta tra 8 simboli (3 bit), y ancora meno: per CAROTy sara' y scelto tra i tre casi possibili CAROTa, CAROTe, CAROTide valutazione approssimata: osservo che CAROTA e'una parola della lingua italiana; uso un dizionario "medio" con parole, allora l' informazione e' relativa ad un dato su , ovvero I = log2 ( ) = 16 bit (non 27,6 !! ) (scelta di una parola tra "a", "abaco", "abate", "abbacchiare", ... "zuppa", "zuppiera", "zuppo", "Zurigo", "zuzzurullone" (R.C.Melzi, Bantam ed.1976)

56 informazione dati composti simboli dipendenti "irraggiungibile"
Ancora: informazione parola "IRRAGGIUNGIBILE" con le lettere indipendenti tra loro: 15*4,6 bit = 69 bit (scelta di uno tra 2^69 = 10 ^ 21 dati possibili piu’ precisamente, 25 ^ 1 = 9,3E+20) ---> MA: le lettere non sono indipendenti, se scrivo IRRAGGIUNGIBxyz allora i simboli x,y,z non hanno prob. di 1/25 ma molto meno !; una valutazione grezza si ha ipotizzando che la parola IRRAGGIUNGIBILE e'una parola tratta da un dizionario della lingua italiana con parole, allora l' informazione e' relativa ad un dato su , ovvero log2 ( ) = 16 bit come nell'esempio precedente, e non 69 bit !!

57 informazione dati composti simboli dipendenti "Caltanisetta"
3) esempio: quantita’ info. di una stringa di 8 caratteri (alfabeto inglese di 25 lettere): I("CALTANISETTA") = 12 * 4,6 bit = 55,2 bit (se ho 12 lettere equiprobabili e indipendenti) ma - se considero la quantita’ di informazione di I(Caltanisetta) nel caso in cui so che Caltanisetta 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 !!! (invece di 56 bit abbiamo 10 bit ->compressione! - ritorneremo)

58 informazione dati composti simboli dipendenti "carota"
continua caso dato composto simboli NON indipendenti: dato “CAROTA” , parola della lingua italiana, la proba- bilita’ delle singole lettere cambia: per la prima ha p= 1/21 (molto circa (*) ): “C” la seconda lettera deve essere o vocale, oppure h,r,l,s,n, quindi (molto circa) probabilita’ 1/ “CA” la 3.a lettera deve essere (b,c,d,f,g,i,l,m,n,o,p,r,s,t,u,v,z) la terza lettera (prob.1/17) e' “CAR” la quarta lettera deve essere scelta tra a,b,c, d,e,i,l, m,n, o, p,r,s,t, qui e' "o", con p(“O”)>1/ “CARO” ora seguono (c,g,n,s,t,v), p("T")=1/6, “CAROT” l’ultima lettera .. solo A,E,I p("A")=1/3, “CAROTA” allora I = (1/21)*(1/10)*(1/17)*(..)= 1/899640=10 bit (circa) < 16! (*) le lettere di un testo in italiano non sono equiprobabili !!

59 dati composti simboli dipendenti "fondamenti di informxxxxx"
2) es. di dato composto da piu’ simboli - es.: “fondamenti di informxxxxx” L’ informazione di xxxxx e’ praticamente zero (*) in generale: l' informazione contenuta in 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 ) ___________________ (*) Quanta e’ la quantita’ di informazione media (per ora) ricevuta da uno studente medio del corso di fondamenti di informatica ? E l'informazione media per ora trasmessa dal docente ? ]

60 dati composti - simboli dipendenti e non equiprobabili -
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 ( NumLettereAlfabeto) devo considerare due aspetti: a) i simboli non sono equiprobabili (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

61 simboli non equiprobabili - cenni
DATO CON SIMBOLI NON EQUIPROBABILI es: 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 (dato con 28 croce e 4 testa) assumo quindi nc nt PC = 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 Quanto vale I(dato complessivo) = ?

62 simboli non equiprobabili - inform. del dato
continua caso di simboli indipendenti ma non equiprobabili: se su 32 lanci di una moneta truccata ottengo 28 valori croce e 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 C allora p( C ) = 28/ 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, * 3 = 5, = 17,6 molto meno di 32 bit del caso di T,C equiprobabili

63 simboli non equiprobabili - inform. media per simbolo
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) = log2(1,14286)=0,19 (circa) p(T)= 4/32; I (T) = log2(32/4)= log2(8)=3 I(dato completo) = 28 * 0, * 3 = 5, = 17,6 Il contenuto informativo medio per simbolo (dato composto da 2 simboli non equiprobabili): I I(tot.dato) med = num.simboli del dato qui sara' Im = 17,6 / 32 = 0,55 bit (circa) e non 1 !!

64 simboli non equiprobabili - inform. media per simbolo
DUE simboli non equiprobabili, I media / simbolo: il contenuto informativo medio per simbolo (dato composto da 2 simboli non equiprobabili): I(tot.dato) Imed = = num.simboli del dato I(tot.dato) nc*Ic + nt*It = = = nc+nt nc + nt nc nt = ----* Ic * It = p(c)*Ic + p(t)*It nc+nt nc+nt quindi (28/32)*0,19 +(4/32)*3 = 0,54125

65 simboli non equiprobabili - inform. media per simbolo
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 e quindi 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:

66 Infmedia 1 1/2 1 P(a) I media = p(a)*Ia + p(b)*Ib =
inform. media per simbolo caso 2 simboli non equiprobabili 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) = p(a) --> quindi : Infmedia 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, oppure zero se p(a) = 1 1 1/2 1 P(a)

67 informazione media (carattere)
l’informazione media per simbolo per un dato composto da n simboli con probabilita’ diversa: per 4 simboli: I med = p1*I1 + p2*I2 + p3*I3 + p4*I4 per n simboli: ( ∑ = simbolo di sommatoria ) Imed = ∑ i p(i) * I (i) cioe’ Imed = ∑ i { p(i) * (-log2 (p(i) ) ) }

68 informazione media (carattere)
l’informazione media per simbolo per un dato composto da n simboli con probabilita’ diversa: Imed=  i p(i)*I(i) Imed=  i { p(i)*(-log2 (p(i) ) ) } In un testo di lettere casuali (alfabeto di 21 lettere) a distribuzione uniforme (tutte le lettere hanno la stessa probabilita', avremo la frequenza di 476 volte per 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, e l' informazione media per lettera e' piu' piccola.

69 informazione media (carattere)
lettere non equiprobabili: I med = -  i { p(i) * log2 (p(i) ) } si puo' vedere che in un testo italiano di lettere avremo circa: 1300 e o z j 1100 i r f 1000 a l 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

70 informazione media per lettera di un testo in italiano
con un ragionamento semplificato: testo di lettere, ipotesi di lm =6 = lunghezza media per parola, piu'spazio => /7 = 1428 parole, se le parole sono prese da un dizionario di 65k parole allora ho 1428*16 bit di informazione = bit, diviso = 2,2 bit per lettera... ... valore piu' piccolo perche' le lettere (*) non sono equiprobabili e (**) le lettere di una parola non sono indipendenti tra loro

71 informazione 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 il contenuto di informazione medio reale per una lettera in un testo di italiano e’ ancora molto piu’ piccolo, perche' le lettere in un testo NON sono indipendenti tra loro vediamo ...

72 I 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 con un ragionamento semplificato gia' visto, ipotizzando un testo di lettere, con ipotesi di lunghezza media per parola, lm = 6, piu'spazio lm=7, ho /7 = 1428 parole; se le parole sono prese da un dizionario di 65k parole ho 16 bit per parola, in tutto ho 1428 * 16 bit di informazione = bit, totale diviso lettere da' 2,2 bit per lettera. Valore piu'piccolo perche'le lettere 1) non sono equiprobab.i e 2) in una parola non sono indipendenti tra loro ... (e' un ragionamento approssimato: ma ... se in media le parole hanno 7 lettere, o se le parole in media sono lunghe 5 lettere ?)

73 I 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 che anche le parole sono dipendenti dal contesto cioe' che anche le parole non sono indipendenti tra loro , si arriva ad un valore approssimativo di : 1 bit per lettera

74 I N F O R M A Z I O N E - info media (carattere)
In un generico testo (es.in italiano) la quantita’ di informazione media per lettera e’ di circa un bit esempio: per memorizzare un testo di 800 pagine con 40 righe per pagina e 13 parole per riga, in media 6 lettere per parola, circa 90 caratteri per riga (piu' uno spazio di separazione, piu' i simboli di interpunzione,meno gli spazi di fine capitolo ecc), ho: 800*40*90= caratteri= byte = 5,7Mb (senza altra informazione di impaginazione), mentre con 1 bit per lettera ho /8= byte, = 0,36Mb e' il contenuto di informazione - 16 volte di meno - questo e' il limite di una memorizzazione piu'compressa !

75 I N F O R M A Z I O N E - info media (carattere)
Lettere, cifre, segni di interpunzione: la rappresentazione standard in un calcolatore delle lettere, cifre, simboli di interpunzione e aritmetici e’ data dalla codifica ASCII (Americ.Standard Code for Inform. Interchange, anni 70) il codice ASCII usa 8 bit per lettera oggi (anni dal ) sempre piu' in uso il codice UNICODE a 16 bit (vedremo)

76 I N F O R M A Z I O N E - info media (carattere)
si noti che il problema della codifica "economica" rimane attuale anche se la tecnologia offre continuamente dispositivi e mezzi di memoria sempre piu' capienti:

77 I N F O R M A Z I O N E - info media (carattere)
si noti che il problema della codifica "economica" rimane attuale: 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 200 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 ... 2007 ? tra 5 anni ? ... si provi estrapolare la situaz. di 5 anni fa (del 2002)

78 se voglio salvare un filmato o un video da 90 minuti,
codifica dati se voglio salvare un filmato o un video da 90 minuti, con 24 immagini al secondo, precisione NTSC (VGA) di 640x480, avro': schermo a bassa risoluzione, dato da 640*480 pixel (punti immagine) ciascun pixel richiede 3 byte, quindi 640*480*3 = *3 = byte = 1M byte 24 immagini al secondo significa 24 * 1M = 24M, 90 minuti = 90*60 secondi = 5400 secondi quindi in totale 5400 * 24 immagini, immagini e quindi * = byte = = 119 G byte per un video (di bassa qualita') non compresso ...

79 24 immagini al secondo significa 24 * 3M = 72M,
codifica dati con risoluzione maggiore, schermo da 1200 x 900 pixel (punti immagine) con 3 byte per pixel, quindi 1200 x 900 x 3 = byte, circa 3 Mega pixel, 24 immagini al secondo significa 24 * 3M = 72M, 90 minuti = 90*60 secondi = 5400 secondi quindi in totale 5400 * 24 immagini, immagini e quindi * = = 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

80 fine " ... informazione (cenni) "
segue: CODICI

81 CODICI - argomenti presentati: codici, rappresentazione, dati
codifiche binarie codice ASCII codice UNICODE codici a controllo di errore codici a correzione di errore bibliografia esercizi

82 Dati = " fenomeni fisici scelti per convenzione
codici 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"

83 Ogni dispositivo (supporto fisico) capace di assumere
codici 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)

84 Ogni dispositivo (supporto fisico) capace di assumere
codici 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 antica e ha piu’ di 6000 anni (proto sumero e proto egiziano) il passaggio dagli ideogrammi ad un sistema alfabetico con un numero di simboli minore avviene circa 1500 anni prima di Cristo (ambiente egiziano-fenicio), poi adottato dai greci, arabi, egiziani, poi dai latini ...

85 esempio: il dato " 1.a lettera dell'alfabeto, "A" " :
codici 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:

86 per lo stesso dato "vocale a" abbiamo diversi codici:
codici 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; / vedremo tra 2 pagine ... . - codice Morse, usa combinazioni di tre simboli (punto,linea e spazio), supporto: carta/ conduttore elettrico;

87 simbolo dell’alfabeto sillabico
codici e dati 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 ASCII - codice interno al calcolatore, binario, destinato ad una macchina (supporti vari),

88 il primo alfabeto (fenicio)

89 il primo alfabeto (fenicio)
Byblos = porto fenicio con cui commerciavano i greci A, α

90 il primo alfabeto (fenicio)
nota: molti sistemi antichi di scrittura alfabetica (semitici) non scrivevano le vocali, per cui Bt, Bet, Bait, Beta, Beth, sono ipotesi (come T'th'n'k'm'n)...

91 fine della divagazione
α fine della divagazione sull' alfabeto ω

92 un codice per un insieme di simboli e' una tabella
di corrispondenza tra i simboli da codificare e delle stringhe di simboli dati con cui scriviamo il codice: dati 4 simboli - es.: * # @ ? 1)codifico con un (altro) insieme di simboli prestabilito, es. con le tre lettere A,B,C: * con A, # con B, @ con C, ? con AB, e ho il codice a destra, 2) con i quattro simboli p q t u e ho ad es: * con p # con q @ cont ? conu e ho il codice a destra in basso: * A # B @ C ? AB * p # q @ t ? u

93 codifico con quattro lettere: * scrivo con A, # con B,
codici e dati * A # B @ C ? D altre codifiche: 3) dati 4 simboli * # @ ? codifico con quattro lettere: * scrivo con A, # con B, @ con C, ? con D, 4) codifica con cifre decimali: * 1 # 2 @ 3 ? 4 * 1 # 2 @ 3 ? 4

94 codifica con cifre decimali, in due modi diversi, 4) e 5)
codici e dati altre codifiche: dati 4 simboli - es.: * ? codifica con cifre decimali, in due modi diversi, 4) e 5) come riportato a destra ... oppure codifica con cifre binarie, qui usati x e y; es. 6) codice a lunghezza fissa es. 7) cod. a lunghezza variabile * 1 # 2 @ 3 ? 4 * 113 # 224 @ 557 ? 668 4) 5) * xxx # xxy @ xyx ? xyy * xy # xyy @ xyyy ? x 6) 7)

95 ancora, dati 4 simboli - es.: * # @ ?
codici e dati ancora, dati 4 simboli - es.: * # @ ? posso codificarli utilizzando un solo simbolo, ad esempio (codice numero 8) : * x # xx @ xxx ? xxxx (codifica con codici a lunghezza diversa!)

96 un dato "scritto" con i 4 simboli * # @ ? ad es: * * @ ? # # * @ ?
codici e dati * A # B @ C ? AB un dato "scritto" con i 4 simboli * ? ad es: * ? # # ? nei codici visti diventa: 1) A A C AB B B A C AB 2) p p t u q q p t u 3) A A C D B B A C D 4) * * @ ? # # * @ ? 5) 6) xxx xxx xyx xyy xxy xxy xxx xyx xyy 7) xy xy xyyy x xyy xyy xy xyyy x 8) x x xxx xxxx xx xx x xxx xxxx * p # q @ t ? u * A # B @ C ? D * 1 # 2 @ 3 ? 4 * 113 # 224 @ 557 ? 668 * xxx # xxy @ xyx ? xyy * xy # xyy @ xyyy ? x * x # xx @ xxx ? xxxx

97 il dato * * @ ? # # * @ ? nei codici visti si scrive:
codici e dati il dato * ? # # ? nei codici visti si scrive: 1) A A C AB B B A C AB 3) A A C D B B A C D 4) * * @ ? # # * @ ? 7) xy xy xyyy x xyy xyy xy xyyy x 8) x x xxx xxxx xx xx x xxx xxxx nota la presenza del separatore spazio, essenziale per i codici 1) e 8) ma non per gli altri; nel codice 7, dato scritto senza spazi si legge ancora xyxyxyyyxxyyxyyxyxyyyx , nel codice 8) invece no: xxxxxxxxxxxxxxxxxxxxx con il codice 1) se tolgo gli spazi: AACABBBACAB puo' essere letto A B B B A C A B oppure AB B B A C AB

98 a 2 stati soli sono piu’ sicuri !!
codici e dati il calcolatore usa la codifica binaria, DUE 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 ancora

99 nella codifica binaria, si usano due soli simboli,
codici e dati nella codifica binaria, si usano due soli simboli, di solito indicati con zero o falso 1 uno o vero usati 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: per cui il dato: # # # @ & & # @ # si rappresenta:

100 codici 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 B C D 2) A 101 B 1001 C D 4) A 01 B 10 C 11 D 00

101 es.: codice Hufmann, non trattato qui.
codici 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 (analogia con scelta da Morse per il suo codice telegrafico); es.: codice Hufmann, non trattato qui.

102 lo schema di codifica piu' usato e' a numero di bit fisso:
codici 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 quattro simboli A 00 B 01 C 10 D 11 tre bit per cinque, A 000 B 001 C 010 sei, sette o D 011 E 100 otto simboli, quattro bit per nove..sedici simboli, cinque per simboli, eccetera ...

103 devo usare almeno due bit per quattro simboli,
codici 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 11 oppure: A 11 B 00 C 10 D 01 oppure: A 10 B 11 C 00 D 01 oppure ancora: A 01 B 11 C 00 D 10 ecc Quante codifiche con n bit (n fisso) per K simboli? (deve essere n >= log2(K) ) - qui n=2, K=4

104 Quante codifiche con n bit (n fisso) per K simboli?
codici 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 B C D

105 Quante codifiche con n bit (n fisso) per N simboli? (n >= log2(N) )
codici 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 * * 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 <--> quindi A = 00, B = 01, C = 10, D = 11

106 ricorda la numerazione binaria
codici e dati ricorda la numerazione binaria decimale binario(in base due, cifre 0,1) (uno= due alla zero) (due, = due alla uno) (in base due, cioe’ due(=10) piu’ 1) (quattro = due alla due) (cinque=quattro+uno) (sei = quattro + due) (sette=quattro+due+uno) (otto = due alla tre) (nove=8+1) (dieci = 8+2) ecc

107 due bit per tre o quattro simboli: A 00 B 01 C 10 A 00 B 01 C 10 D 11
codici 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 101 A 000 B 001 C 010 D 011 E 100 F 101 G 110 A 000 B 001 C 010 D F 101 G 110 H 111

108 quattro bit per codificare da 9 a 16 simboli:
codici e dati quattro bit per codificare da 9 a 16 simboli: A 0000 B 0001 C 0010 D (1..4) E 0100 F 0101 G 0110 H (5..8) I (9) ... I 1000 J 1001 K 1010 L (9..12) M 1100 N 1101 O 1110 P (13..16)

109 con 5 bit posso rappresentare fino 32 simboli
codici 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 caratteri) con 8 bit -> 256 simboli (codice ASCII esteso) quanti bit per rappresentare i simboli della scrittura cinese? (10 bit: 1024, 12 bit: 4096, 14 bit: 16384) => almeno 14

110 (codice ASCII di 32 + 96 caratteri)
codici e dati con 7 bit -> 128 simboli (codice ASCII di caratteri) con 8 bit -> 256 simboli (codice ASCII esteso) con 16 bit -> 2*32768 simboli (unicode) (e per un po’ basta)

111 schede perforate usate nel telaio automatico del 1801
codici e dati uno dei primi supporti dati ormai in disuso: schede perforate usate nel telaio automatico del 1801 di Joseph Jacquard, Lyon, per "registrare" o memoriz- zare l'informazione sul controllo dell'ordito mediante dei codici binari (buco presente/assente) su un supporto di cartone (schede); in 20 anni si era diffuso in tutta l'Europa, e Babbage ne era a conoscenza il telaio Jacquard (museo della scienza e della tecnica, Manchester, GB )

112 Telaio Jacquard The Jacquard loom was the first machine to use punch cards to control a sequence of operations. Although it did no computation based on them, it is considered an important step in the history of computing hardware. The ability to change the pattern of the loom's weave by simply changing cards was an important conceptual precursor to the development of computer programming (Wikipedia) Telaio J.: le schede perforate per il controllo dell'ordito

113 curiosita' storica ... ancora due "supporti dati" ormai in disuso:
codici e dati curiosita' storica ... ancora due "supporti dati" ormai in disuso: il nastro perforato per "registrare" o memorizzare un dato = perforare dei codici binari su nastro; in figura, * sta per perforazione) es. codice di A: (41 esadecimale) es. codice di C: (43 esadecimale) era il supporto dati principale del primo computer IBM1620 dell' univ. di Trieste, anni A B C D E F G H I ... Y Z * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1 2 3 4 5 6 7 8

114 codici 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) I calcolatori del Centro di Calcolo dell' Universita' di Trieste dal 1967 (IBM7044) al (CDC7400) utilizzavano come principale supporto dati (e programmi) le schede perforate; ancora nel 1985 esistevano un lettore ed un perforatore di schede, il lettore di schede e’ rimasto in uso fino al 90...

115 La scheda perforata e' andata in disuso con l'avvento
codici e dati La scheda perforata e' andata in disuso con l'avvento dei sistemi in multiutenza (e quindi l'introduzione di terminali alfanumerici, anni 70..) e dei personal (TRS, Commodore, Apple, anni ). oggi e' possibile leggere schede perforate solo in una macchina di un museo di informatica...

116 scheda perforata: codice a 12 bit, 80 caratteri (colonne)
codici e dati scheda perforata: codice a 12 bit, 80 caratteri (colonne) il codice di A: , (qui sotto, * sta per il codice di B: posizione perforata) 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 A B B B B B B B B B B B B B B B B B B B B * * B B B B * * * * * 1 * * * 2 2 * * * 3 3 3 * * * * * * * * * 6 6 6 * * * 7 7 * * * 8 * * *

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

118 A S C I I il codice (leggi: eski... ma anche asci)
codici e dati il codice A S C I I (leggi: eski... ma anche asci) American Standard Code for Information Interchange

119 il codice ASCII per rappresentare un testo semplice:
codici 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)

120 ricorda i codici numerici: il numero 10 ha diverse codifiche
decimale: ottale esadecimale binario ... A B .. E F

121 codici 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: “6” = codice numero 54, esadecimale: 36 binario: “A”= codice numero 65, esadecimale: 41 binario: “a”= codice numero 97, esadecimale: 61 binario: “}”= codice numero 125, esadecimale: 7D binario:

122 codici 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: NUL SOH STX ETX EOT ENQ ACK BEL BS HT A LF B VT 12 C FF D CR E SO F SI DLE DC DC DC3 DC NAK SYN ETB CAN EM A SUB B ESC 28 1C FS D GS E RS F US

123 codici e dati - tabella ASCII - cont.
nota: per ottenere uno di questi caratteri speciali con codice su una tastiera [di solito] si deve premere assieme il tasto CTRL piu' un altro carattere, es: 3 (EndOfText=CTRL-C); (BackSpace=CTRL-H); 9 (TABula); (LineFeed=caporiga); 12 (FormFeed=capopagina); 13 (Carriage Return= RitornoCarr); 26 (EndOfText in MSDOS); 27 (escape).. prova ctrl-G ... alcuni caratteri speciali corrispondono ad un tasto singolo: BackSpace [ 8 ], Esc [ 27 esad. 1B ], Return [ 13 esad. D ],

124 codici 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) ...

125 codici e dati - cont. codici ASCII - codici da 32 a 79 :
spaz ! " # $ % & ' ( ) A * B + 44 2C , D E F / A : B ; 60 3C < D = E > F ? @ A B C D E F G H I A J B K 76 4C L D M E N F O (cont.pag.seg.) es. lettura tabella: ! = codice n.ro 33, esadec. 21, binario C = codice n.ro 67, esadec, 43, binario

126 codici e dati - cont. codici ASCII - codici da 80 a 127 :
P Q R S T U V W X Y A Z B [ 92 5C \ D ] E ^ F _ ` a b c d e f g h i A j B k 108 6C l D m E n F o p q r s t u v w x y A z B { 124 7C | D } E ~ F DEL es. lettura tabella: u = codice n.ro 117, esadec. 75, binario ~ = codice n.ro 126, esadec. 7E, binario

127 => ancora codice ASCII, ... tabella completa :
32 ! 33 " 34 # 35 $ 36 % 37 & 38 ' 39 ( 40 ) 41 * 42 + 43 , / : 58 ; 59 < 60 = 61 > 62 ? 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.

128 il codice corrente ('80..'90) ASCII prevede 8 bit;
codici e dati il codice corrente ('80..'90) 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 e font: inglese, italiano, francese, croato,..) ad es: ò oppure ç oppure ž ...

129 seguono cenni sul CODICE UNICODE vedi su rete

130 UNICODE - un codice “per tutti” a 16 bit
il codice UNICODE (ISBN , 1990) usa 16 bit per rappresentare un simbolo, e quindi puo’ rappresentare 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 )

131 UNICODE - 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 lingue "riconosciute", ma non altrettanti codici UNICODE ) anche i simboli per le cifre decimali (i numeri) delle varie lingue sono talvolta diversi (arabo, cinese, giapponese ...) .... infine sono definiti dei set di simboli piu’ usati (valute, frecce, simboli matematici, “dingsbat” ecc) cioe’ molti set di ideogrammi standardizzati (da , wikipedia, ... e libri ad es. “The Java Programming Language” di K.Arnold e J.Gosling, 1996):

132 ricordiamo i numeri (india->arabi->maghreb->italia->europa)

133 un cenno alla compressione dei dati

134 codifica suoni, immagini, filmati
L'argomento della codifica di suoni, immagini e filmati e' troppo vasto per poter essere trattato meglio qui; (sara' trattato in breve in una parte successiva) rimane da ricordare alcuni formati di file audio, immagini e video che oltre la codifica dell'informazione di partenza prevedono abitualmente anche una compressione dei dati (di due tipi principali: compressione fedele, che permette la ricostruzione dell'originale senza perdite, e compressione con perdita (piu' o meno accettabile) che NON permette la ricostruzione esatta dell'originale)

135 al limite, tanti bit quanto e'il contenuto di informazione
compressione Con opportuni algoritmi di compressione si puo' codificare un insieme (grande) di dati con meno bit: se vogliamo conservare l'originale non alterato, si ha il limite della compressione quando elimino tutta la parte ridondante - compressione senza perdita: si arriva al limite, tanti bit quanto e'il contenuto di informazione se invece si ammette " un po' " di perdita di qualita' (suono / immagine / filmato) allora si puo' comprimere ancora, con metodi che eliminano le parti "marginali" (quelle che il nostro udito o la nostra vista recepiscono di meno) in questo caso non c'e' un netto limite ...

136 "testo con ********* nove asterischi" diventa-
compressione es. semplice: codifica compressa di simboli ripetuti piu' volte: memorizzo il simbolo e poi il numero di volte che il simbolo va ripetuto: "testo con ********* nove asterischi" diventa- "testo con [esc]*9 asterischi" (uso un carattere speciale [esc] ) oppure "testo con ***9 asterischi" (ripeto 3 volte il carattere che poi e' seguito dal numero di ripetizioni) schema e' usato nella codifica GIF (CompuServe graphics interchange format) va bene per immagini con parti estese dello stesso colore (piatte), con poca tessitura a grana fine

137 es.noto [e antico]: il codice telegrafico di Morse),
compressione un'altro esempio di codici piu' efficienti sono i codici a lunghezza variabile es.noto [e antico]: il codice telegrafico di Morse), anno 1835 circa ... un esempio di codifica di simboli a frequenze diverse con codici a lunghezza variabile e' il codice Huffmann, dove i simboli che sono piu' frequenti hanno un codice breve, i simboli meno frequenti hanno un codice lungo; non si riporta il procedimento di codifica ...

138 per un pixel ho 24 bit, ovvero la scelta tra 16 milioni di colori.
compressione - CLUT una tecnica di risparmio di spazio di codifica di un' immagine e' data dall' uso della "tavolozza di colori" o color palette, (Color Look-Up Table) (molto usata 10 o 15 anni fa, lo schema piu' diffuso era la VGA) Immaginiamo di usare 8 bit per colore (intensita' colore a 256 livelli), per i tre colori Red Green Blue) per un pixel ho 24 bit, ovvero la scelta tra 16 milioni di colori. Ma un'immagine ad es. a 1200x800= pixel ha meno di un milione di pixel e quindi sicuramente meno di un milione di colori; se mi limito a 256 colori, allora mi bastano 8 bit per indicare un colore (della tabella "palette")

139 Tavolozza di colori, color palette, ColorLookUpTable:
compressione - CLUT Tavolozza di colori, color palette, ColorLookUpTable: invece di 24 bit per pixel (24bit=16M colori ... questo schermo ;-) uso solo 8 bit per pixel, limito il numero dei colori diversi a 256, ma questi colori sono codificati a 24 bit nella (la tavolozza) specifico in una tabella di 256 elementi (la CLUT) quali colori uso, ogni colore della CLUT e'codificato a 24 bit e poi memorizzo per ogni pixel non il colore (24bit) ma l'indice del colore nella tavolozza (8 bit) (schema della VGA, anni '80) - invece di memorizzare 0,96Mbyte x24 bit=2,88 M byte ho 0,96 Mbyte ...

140 - algoritmi di compressione -
a seconda del campo di applicazione (immagini di vario tipo, segnali audio, filmati di vario tipo) esistono vari algoritmi di compressione. Un algoritmo molto usato e' la codifica LZW di Lempel Ziv Welch (Unix 1984, GIF87,...), oneroso in termini di compressione (costruisce delle tabelle di frequenze di simboli ma anche di sequenze di simboli che si ripetono (stringhe), e codifica un numero al posto della stringa; molto meno oneroso in termini di decompressione

141 - formati di dati compressi - esistono molti formati di dati compressi
compressione - formati di dati compressi - esistono molti formati di dati compressi per motivi storici, di proprieta' (GIF proprieta'di una ditta, MPG proprieta' di un consorzio.., altri pubblici..) di tipo di algoritmo di compressione, di tipo di dato da comprimere... a seconda del campo di applicazione audio: mp3 (parte del MPEG-1 a livello 3) immagini: formati TIFF, JPEG, MPG, video: DV, MPG-2... riprenderemo questo discorso in un'altra parte ..

142 CODICI A CONTROLLO DI ERRORE
.. CODICI A CONTROLLO DI ERRORE

143 codici e trattamento dell'errore legame tra ridondanza/efficienza e
codici 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 * codici a correzione automatica di errori= recupero automatico di errori codici triplicati, controllo incrociato

144 efficienza e = -------- N med e ridondanza r = 1 - e
codici 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

145 esempio: codifica dei 4 simboli: A, B, C, D
1) codice: A B C D <<==== I med = 2 bit (simboli equiprobabili) N bit medio per simbolo: 2 efficienza: I med / N med = 2/2 = 1,0 <-- 2) codice: A B C D <<==== N bit medio per simbolo: ( )/4 = 10/4 = 2,5 efficienza: I med / N med = 2/2,5 = 0,8 <--

146 continua esempio codifica di 4 simboli: A, B, C, D
3) codice: A B C D <<==== I med = 2 bit (simboli equiprobabili) N bit medio per simbolo: 4 efficienza: I med / N med = 2/4 = 0,5 <--

147 codici e dati non equiprobabili
un es. di codici per dati equiprobabili: messaggio con 4 simboli equiprobabili A,B,C,D; codifica 2 bit per lettera, A 00, B 01 C 10 D 11, Nmed(numero bit medio per simb.) = 2 qui prob(A)=prob(B)=prob(C)=prob(D)=1/4, quindi Imed =  i p(i)*I(i) =  i { p(i)*(log2 (1/p(i) ) ) } = 4*( 1/4 * (2) ) = 4*(1/2) = 2 bit per simbolo, efficienza = Imed / Nmed per il messaggio : lunghezza = num. simboli * bitCodiceMedioPerSimbolo informazione = n.simboli * bitInformMediaPerSimbolo qui lungh=inform, = 1, efficienza=1, ridondanza=0

148 codici e dati non equiprobabili
codici per dati NON equiprobabili: es.: messaggio con 4 simboli, ABCD, non equiprobabili; Imed=  i p(i)*I(i) Imed=  i { p(i)*(-log2 (p(i) ) ) } es. prob(A)=13/16=0,8125, I(A)= log2(1,231)=0,3 prob(B)=prob(C)=prob(D)=1/16 = 0,0625; I(B)=log2(16)=4, = 13/16*0,3+3*(1/16*4)=0,81*0,3+3*(1/4)=0,244+0,75= con un codice: A= 1; B=00, C=010, D=011 allora 13/16*1+ 1/16*2+ 1/16*3+1/16*3=21/16 = 1.3 un codice ottimale usa un numero bit medio = contenuto di informazione medio... (zero ridondanza) (non parliamo dei modi per ottenerlo ...)

149 dia luogo a errori di trasmissione/di registrazione,
codici ed errori Problema dell' errore: e' inevitabile che un dispositivo (un supporto fisico, un sistema di trasmissione) dia luogo a errori di trasmissione/di registrazione, anche se la tecnologia fornisce sistemi sempre piu' affidabili. (e la probabilita' di errore per 1M o 1G registrato o trasmesso e' sempre piu' piccola)

150 anche se la tecnologia fornisce sistemi sempre piu' affidabili.
codici 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.

151 Esistono codici che consentono * la rilevazione e anche
codici ed errori Esistono codici che consentono * la rilevazione e anche * la correzione automatica di errori vediamo un esempio "giocattolo"

152 Problema di rilevazione di un errore:
codici ed errori Problema di rilevazione di un errore: Siamo appena stati assunto in una grossa ditta, e per farci notare spediamo un messaggio al capo: dato di partenza: IL PRESIDENTE E' UN GRANDE FILANTROPO 1) registro o trasmetto con una codifica semplice, ad es con codice ASCII, 7 bit/carattere, totale 7*37=259 bit contenuto d'informazione ( ipotizzo un dizionario di 4000 parole [bastano...], quindi 12 bit per parola) 12(bit) * 6(parole) = 72 bit efficienza I / N = 72/259 = 0,28 (prescindiamo dalla semantica del messaggio, o del contenuto di informazione "vero" di un messaggio di questo tipo ;-)

153 rilevazione di un errore: dato di partenza (37 caratteri):
codici 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 12*6 = 72 bit, efficienza I / N = 72/259 = 0,28 se c'e' un errore in registrazione (o di trasmissione) allora uno dei 37 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” ]

154 IL PRESIDENTE E' UN GRANDE FILANTROPO
codici ed errori 2) codifica efficiente: uso un dizionario (a disposizione sia del sistema sorgente sia del ricevente) di 4000 parole; per spedire una parola bastano 12 bit (2^12 = 4096), in tutto sei parole 6*12 = 72 bit (invece dei 37 * 8 = 296 nella codifica di prima con 37 caratteri); ora il dato IL PRESIDENTE E' UN GRANDE FILANTROPO codificato [ parola -> numero ] diventa: -> Suppongo ora che si verifichi un errore, ad es. invece di ricevo decodifico ....

155 2) codifica efficiente con dizionario di 16.000 parole,
codici ed errori 2) codifica efficiente con dizionario di parole, messaggio codificato (6*14= 84 bit invece di 296) se si verifica un errore, es. invece di 1497 ricevo 1897, ottengo: che interpretato con lo stesso dizionario da' IL PRESIDENTE E' UN GRANDE MACACO L'errore NON si rileva (tanto meno si corregge) => un codice efficente NON permette la rilevazione degli errori !!

156 messaggio senza ridondanza: non si rileva l'errore ...
IL PRESIDENTE E' UN GRANDE FILANTROPO codificato [parola->numero (dizionario di 4000 parole] diventa: -> Suppongo ora che si verifichi un errore, ad es. invece di invece di 1497 ricevo 1897, -->> errore -->> che interpretato con lo stesso dizionario da': IL PRESIDENTE E' UN GRANDE MACACO codice efficente : l' errore NON si rileva ... con conseguenze negative per l' autore del messaggio (dipende dal paese dove stanno ...) <:-(

157 ancora un esempio; un messaggio di un ipotetica universita' UX che cerca di acquisire nuovi studenti: l’infochimica vi insegnera’come iniziare una nuova vita [testo di 9 parole in tutto 55 caratteri] codifica: dizionario di parole “numerate” della lingua italiana, da dove trovo i numeri progressivi delle parole. Ad ogni parola sostituisco un numero, un codice: come l’ infochimica nuova iniziare una insegnera’ vi vita

158 quindi il messaggio codificato diventa:
l’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 parole “numerate” come l’ 8411 infochimica nuova 10766 iniziare una insegnera’ vi vita quindi il messaggio codificato diventa: invece di 55 caratteri a 8 bit = bit testo ASCII, ho ora 9 numeri da 14 bit = bit ! risparmio per un fattore di 3,5 ! ma ...

159 codici 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 iniziare una insegnera’ vi vita il messaggio codificato (9 numeri da 14 bit = 126 bit) 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” “ ”

160 a) messaggio spedito in ASCII ( 440 bit), ricevo:
caso 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 riesco anche a correggere !!

161 b) mess. codificato in numeri, (9 num. da 14 bit = 126 bit)
ricevo: ( invece di 7977) “ ” decodifico con l’aiuto del dizionario (parole numerate): come l’ finire nuova infochimica una iniziare vi insegnera’ vita MESSAGGIO (con errore) DECODIFICATO diventa: l’infochimica vi insegnera’come finire una nuova vita -->> non mi accorgo dell’errore! (e l' universita' UX perde studenti...)

162 dall'esempio visto segue che * per consentire
codici 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.

163 ricordiamo la definizione dell’ efficienza; il codice A 00
codici ed errori ricordiamo la definizione dell’ efficienza; il codice A 00 B efficienza: e = Imed / Nmed = 2/2 = 1 C D ridondanza r = 1 - e = 0 A 000 B efficienza: e = Imed / Nmed = 2/3 = 0,66 C D ridondanza r = 1 - e = 0,33

164 Es: 4 simboli, A B C D - codifica:
codici ed errori Es: 4 simboli, A B C D - codifica: 1) non ridondante: uso il minimo di bit A tutti i codici di 2 bit sono legali -> B nessuna ridondanza, massima efficienza, MA C non c' e' possibilita' di rilevare gli errori D ad es: il dato: DABAC codificato e’ se c'e' un errore allora ricevo: da cui decodifico: DADAC (... non mi accorgo dell'errore !! )

165 Es: 4 simboli, A B C D 2) codifica ridondante: uso piu’ bit del minimo necessario A non tutti i codici di 2 bit sono legali, c'e' B ridondanza, --> posso rilevare errori C qui uso 3 bit per 4 simboli... D ad es. il dato: DABAC codifica: se ho un err. al 10.o bit ricevo: > decodifica: DAB?C ma 100 e'illegale -> mi accorgo dell'errore

166 attenzione: non tutti i codici ridondanti vanno bene
codici ed errori attenzione: non tutti i codici ridondanti vanno bene A questo codice a 3 bit e’scelto un po' a caso... B come vedremo subito, C non e' un buon codice perche' D in alcuni casi non mi accorgo dell’errore ... vediamo due esempi: come visto, il codice permette di individuare questo errore: dato DABAC: errore al 10.o bit leggo: --> in decodifica ho il codice illegale -> rilevo l’errore, ottengo DAB?C MA in altri casi questo stesso codice non va bene:

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

168 3) invece del codice senza ridondanza 4 simboli, 2 bit:
codici ed errori 3) invece del codice senza ridondanza 4 simboli, 2 bit: A B C D uso il codice: A qui raddoppio i bit della codifica iniziale B > il codice e' meno efficiente (vedi sotto) C ma posso rilevare piu' errori rispetto il D 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

169 ma ... e’ un codice troppo ridondante!
codici ed errori ricordiamo: un raddoppio di bit permette il controllo di errore; invece del codice a efficienza 1, A B C D uso un codice: A questo codice (con num. bit doppio) ha B efficienza: e = Imed / Nmed = 2/4 = 0,5 C D 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?

170 dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1
codici 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 B C D abbiamo: dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1 dist(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 > ma poi leggo (ricevo) il dato > 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!

171 distanza tra due valori di un codice = il numero di bit
codici 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 B C D 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 - vi sono dati diversi con codifiche distanti di 1 solo bit.

172 dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1
codici ed errori 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 B C D dist(A,B) = 1, dist(A,C) = 1, dist(A,D) = 1 dist(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

173 codici 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)...

174 codici a controllo di parita'.
codici 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 B C D 11.0 con tale codifica il dato B B A D diventa: se ho un errore (ad es. nel 6.o bit): rilevo l'errore nel secondo carattere, perche’ la terna 010 e’ illegale;

175 nota: il codice senza ridondanza era: A 00
codici ed errori nota: il codice senza ridondanza era: A 00 B efficienza: e = Imed / Nmed = 2/2 = 1 C D ridondanza r = 1 - e = 0 il codice con aggiunto un bit di parita' ha: A B efficienza: e = Imed / Nmed = 2/3 = 0,66 C D 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)

176 nota: ricordiamo il codice ASCII con controllo parita’:
codici ed errori nota: ricordiamo il codice ASCII con controllo parita’: se due codici (legali) differiscono di 1 bit, ad es.: a = , A = , aggiungo un bit di parita’, i due codici differiscono di due bit: a = , A = se differiscono di due bit, il bit di parita’ e’lo stesso, e la distanza e’ sempre di due bit: a = , A = , aggiungendo un bit di parita’ la distanza rimane due: a = , A = con questa codifica posso sempre rilevare la presenza di un singolo errore ! ==>> CODICE A CONTROLLO DI ERRORE

177 codice ASCII a 7 bit piu' un bit di parita': a k A
codici ed errori codice ASCII a 7 bit piu' un bit di parita': a k A 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: 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 => bit di controllo calcolato = 0 => bit controllo ricevuto = 1 sono diversi => c’e’ un err !

178 due osservazioni sul codice a controllo parita':
codici 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 a 010 oppure da 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) 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

179 efficienza e ridondanza per il codice ASCII con controllo di parita’ ?
codici 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 efficienza: e = Imed / Nmed = 7 / 8 = 0, 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

180 Normalmente la probabilita' di errore e'
codici 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:

181 su blocchi di bit piu' grandi.
codici 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.

182 se sono diversi c'e' un errore nel blocco.
codici 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, ma l'algoritmo e'piu'complicato) 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.

183 Molto usato e' il codice CIRC
o 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 sono stati definiti gia' negli anni 40 (telecomunicazioni) alcuni nomi: Claude Shannon, Richard Hamming e altri ... (ma e' un altro corso ;-)

184 efficienza: e = Imed / Nmed = 511*8 / 512*8 = 0,998 e la
aggiungo un carattere (8 bit) di controllo ad ogni blocco di 511 caratteri (511*8 bit) (in totale il blocco avra’ 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, 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

185 CODICI A CORREZIONE DI ERRORE
(cenni)

186 e’ un codice che consente la correzione di errore:
codici ed errori senza controllo errore: A 00 B 01 C 10 D 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 raddoppio A B C D 1111 e= Imed / Nmed = 2 / 4 = 0,5; r = 1 - e = 0,5 se triplico i bit del codice senza controllo: A B C D e= Imed / Nmed = 2 / 6 = 0,33; r = 1 - e = 4 / 6 = 0,66 e’ un codice che consente la correzione di errore:

187 ... un codice che consente la correzione di errore!
codici ed errori se triplico i bit del codice senza controllo (2 bit per 4 simboli) ottengo A B C D ... un codice che consente la correzione di errore! es.: dato originale B B A D spedisco i bit: con un errore ricevo ad es.: 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

188 come nel caso di codice a rilevazione di errore
codici 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

189 es.: 16 simboli, codice senza controllo err. (con r=0) uso 4 bit:
codici ed errori es.: 16 simboli, codice senza controllo err. (con r=0) uso 4 bit: A B C F 0000 codice a controllo di errore: aggiungo un bit di parita' (totale 5 bit): A B C 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 B quindi: A = quindi: B =

190 e ricevo (un errore) ad es. 101 010 10
codici 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 B quindi: A = quindi: B = se trasmetto A ovvero e ricevo (un errore) ad es rieseguo il controllo righe/colonne e ho: errore nella seconda riga errore nella seonda colonna -> err. nel bit marcato > correz.ne:

191 e se c’e’ un errore nei bit di controllo parita?
codici ed errori e se c’e’ un errore nei bit di controllo parita? Dato di 16 bit: aggiungo dei bit secondo lo schema: (aggiungo anche un bit di controllo sui bit dell’ ultima riga (riga di controllo), in tutto 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.

192 immagino che ci sia un errore in trasmissione, ricevo:
codici ed errori continua es. con dato a 16 bit: aggiungo dei bit secondo lo schema: (aggiungo anche un bit di controllo sui bit della riga di controllo, in tutto aggiungo 9 bit su 16) immagino che ci sia un errore in trasmissione, ricevo: ricalcolo 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.

193 k bit (dato) + log2(k) bit (controllo)
codici 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 = devo aggiungere almeno n = bit ( vedi codice Hamming, )

194 a caratteri: controllo parita’ sul carattere
codici 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

195 memoria centrale del calcolatore (RAM):
memoria a celle (gruppi di bit) con controllo errore, single err detect code memoria a celle con correz. automatica di err. singolo single err correct code memoria senza controllo (in tal caso il sistema esegue periodicamente [almeno all'avvio] 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!)

196 definire un codice a controllo di errore
ESERCIZI 1) Dati 7 simboli @ # $ % ^ & ” definire un codice a controllo di errore 2) Definire un codice a correzione di errore per / 3) Il codice seguente consente il controllo di errore? A B C D 111 4) Calcolare l’efficienza e la ridondanza del codice dell’esercizio 3 5) Il governo cinese ha deciso di utilizzare un codice a 32 bit per codificare i 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]

197 1) codice a controllo di errore per @ # $ % ^ & ”
esercizi 1) codice a controllo di errore per @ # $ % ^ & ” 7 simboli - 3 bit per codifica almeno, + bit parita’: # $ % 1001 ^ & ” 2) Definire un codice a correzione di errore per / due bit per codifica di 3 simboli, poi triplico i bit: / 3) Il codice seguente consente il controllo di errore? A B C D 111 no: le codifiche di A e di B e di C hanno distanza uno con D -> un errore in A puo’ dare il codice di D

198 4) Calcolare l’efficienza e la ridondanza
esercizi 4) Calcolare l’efficienza e la ridondanza del codice dell’esercizio 3 cioe’ A B C 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 ideogrammi cinesi; calcolare l’efficienza di tale codice. e = I / N = log2(20000)/32 = 14,3 / 32 = 0,45

199 se codifico il numero di matricola in binario, uso
esercizi 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 = 12 x = caratteri se codifico il numero di matricola in binario, uso log2( ) = 27 bit (circa) al posto di 20 x 8 = 160 bit, risparmio 133 bit = 17 car quindi per 20 occorrenze per studenti ho x 17 = caratteri

200 FINE PARTE INFORMAZIONE E CODICI


Scaricare ppt "FONDAMENTI DI INFORMATICA parte - INFORMAZIONE e CODICI"

Presentazioni simili


Annunci Google