Fondamenti di informatica Informatica Università degli Studi di Parma 57 pag. Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) Rappresentazione dell’Informazione S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 1 / 54 Il Linguaggio degli Insiemi (I) Notazione insiemistica I = {a, b, c} I è un insieme (finito) con tre elementi: a, b, c. Nota: J = {a, a, b, b, b, c} è uguale all’insieme I. • b ∈ I: Si legge “b appartiene a I” • h∈ / I: Si legge “h non appartiene a I” I = {a, b, . . . , z} I è l’insieme degli elementi: a, b, . . ., z. Nota: A seconda del contesto, può contenere 21 o 26 elementi. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 2 / 54 Il Linguaggio degli Insiemi (II) Insieme Vuoto I=∅ I è un insieme vuoto, cioè con zero elementi. Nota: Preso un qualsiasi elemento, ad esempio b, b ∈ / I. Sottoinsieme S è sottoinsieme di I se tutti gli elementi di S appartengono anche a I. Si scrive: S⊆I Esempio: Se I = {a, b, c} e S = {a, b}, allora: S ⊆ I S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 3 / 54 Alfabeto e Linguaggio (I) Alfabeto Un insieme non vuoto e finito di simboli è un alfabeto. Esempi: A = {a, b, . . . , z}, A = {♠, ♣, ♥, , . . . , ⋆}, A = {0, 1} Stringhe Dato un alfabeto A, l’insieme delle sequenze finite generabili con i simboli di A si denota con A∗ . Le sequenze vengo dette stringhe. Esempi: A∗ = {ε, a, b, . . . , z, aa, ab, . . . , aaa, aab, . . .}, A∗ = {ε, ♠, ♣, ♥..., ⋆, ♠♠, ♠♣, ♠♥, . . . , ♠♠♠, ♠♠♣, . . .}, A∗ = {ε, 0, 1, 00, 01, 10, 11, 000, 001, . . .} • La stringa vuota si indica tipicamente con ε ∈ A∗ • Non poniamo limite alla lunghezza delle stringhe S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 4 / 54 Alfabeto e Linguaggio (II) Alfabeto Un linguaggio L su un alfabeto A è un sottoinsieme di A∗ . Un linguaggio L può essere definito • In modo estensionale, cioè per enumerazione dei suoi elementi (se il linguaggio è finito) Esempio: A = {0, 1}, L = {0, 00, 01, 10}. • In modo intensionale, cioè mediante regole d’appartenenza, che prendono il nome di grammatica Esempio: A = {0, 1}, L = {S ∈ A∗ tale che S ha esattamente 3 simboli}. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 5 / 54 Alfabeto e Linguaggio (III) Lunghezza di una stringa Data una stringa S ∈ L, è possibile definire la lunghezza della stringa |S|. Esempi: |ε| = 0, |abc| = 3. Concatenazione La concatenazione di due stringhe S, T ∈ L è la stringa S ◦ T che si ottiene facendo seguire la seconda alla prima. • Se S, T ∈ L, allora non necessariamente S ◦ T ∈ L • |S ◦ T | = |S| + |T | • La concatenazione è un’operazione associativa, che ammette la stringa vuota ε come elemento neutro S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 6 / 54 Codifica Binaria • Dato un alfabeto finito A, ogni stringa di A∗ può essere codificata in una stringa (tipicamente più lunga) di simboli presi da un alfabeto B di due simboli B = {0, 1}. • In codifica binaria, i simboli vengono detti bit (binary digit). Esempio • A = {a, b, c, d} • a → 00, b → 01, c → 10, d → 11 • S = abbccdd → S = 00010110101111 Domanda: come fare se A = {a, b, c, d, e}? S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 7 / 54 Codifiche Invertibili e Codifiche a Lunghezza Costante Codifica Invertibile Una codifica da A a B si dice invertibile se ogni stringa in A∗ può essere codificata in maniera univoca come stringa in B ∗ e viceversa. Codifica a Lunghezza Costante Una codifica da A a B si dice a lunghezza costante se tutte le stringhe in B ∗ che codificano i simboli di A hanno la stessa lunghezza. Esempi • La codifica nella slide precedente è invertibile e a lunghezza costante. • La seguente codifica è non invertibile e a lunghezza costante. - A = {a, b, c, d}, a → 00, b → 01, c → 00, d → 11 • La seguente codifica è non invertibile e a lunghezza variabile. - A = {a, b, c, d, e}, a → 00, b → 01, c → 10, d → 11, e → 000 S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 8 / 54 Codifica Binaria a Lunghezza Costante • Da un alfabeto di 2 simboli è possibile generare 2n stringhe diverse di lunghezza n • Quando si parla di lunghezza di stringhe binarie si usano dei prefissi • Approssimazioni con potenze di 2 di quelli usati comunemente, ad esempio, in fisica • Spesso si parla in termini di byte, blocchi di 8 bit S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 9 / 54 Simboli e Informazione • Trasmettitore (sorgente) di simboli: rappresenta l’informazione che si vuole inviare nei termini di una stringa di simboli da trasmettere • Ricevitore (destinazione) di simboli: interpreta l’informazione partendo dalla stringa di simboli ricevuta • Le stringhe rappresentano l’informazione • Le stringhe possono essere codificate in forme diverse • Esistono codifiche diverse per scopi diversi S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 10 / 54 Probabilità (I) Evento Un evento E è un qualsiasi avvenimento che possa essere osservato. Un evento può essere • certo Esempio: il risultato del lancio di un dado a 6 facce è un numero positivo minore di 7 • impossibile Esempio: il risultato del lancio di un dado a 6 facce è -1 • casuale Esempio: il risultato del lancio di un dado a 6 facce è 1 S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 11 / 54 Probabilità (II) Definizione Classica Indichiamo con Ω l’insieme dei possibili eventi. Ω ha n elementi (n > 0). La probabilità di un evento E è il rapporto tra i numero nE dei casi favorevoli all’evento e il numero dei casi possibili n nE P{E} = (0 ≤ P{E} ≤ 1). n Esempio: lancio di un dado a 6 facce, Ω = {1, 2, 3, 4, 5, 6} nE1 1 P{E1 } = = . E2 : risultato pari. n 6 nE3 5 = . E3 : risultato maggiore di 1. P{E3 } = n 6 nE4 0 E4 : risultato 7. P{E4 } = = = 0. n 6 E1 : risultato 1. P{E2 } = nE2 n = 3 . 6 • Due eventi E1 e E2 si dicono indipendenti se P{E1 } non dipende da P{E2 } (e viceversa). In tal caso, la probabilità che accadano entrambi è data da P{E1 e E2 } = P{E1 }P{E2 }. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 12 / 54 Misura dell’Informazione (I) Informazione L’informazione I(a) portata da un simbolo a ∈ A è legata alla probabilità di ricevere il simbolo a P{x ′ = a}. • P{x ′ = a} ≃ 1: I(a) è piccola • P{x ′ = a} ≃ 0: I(a) è grande Definizione di Shannon Richiediamo che l’informazione associata ad un simbolo sia una quantità positiva e additiva I(a) = − log2 P{x ′ = a}. Se A = {0, 1}, l’unità di misura è il bit. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 13 / 54 Misura dell’Informazione (I) Informazione L’informazione I(a) portata da un simbolo a ∈ A è legata alla probabilità di ricevere il simbolo a P{x ′ = a}. • P{x ′ = a} ≃ 1: I(a) è piccola • P{x ′ = a} ≃ 0: I(a) è grande Definizione di Shannon Richiediamo che l’informazione associata ad un simbolo sia una quantità positiva e additiva I(a) = − log2 P{x ′ = a}. Se A = {0, 1}, l’unità di misura è il bit. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 13 / 54 Approfondimento Simboli Indipendenti • Due simboli a e b di un alfabeto A si dicono indipendenti se la probabilità di ricevere b non dipende dalla probabilità di ricevere a (e viceversa). • Se due simboli a e b sono indipendenti, allora la probabilità di ricevere ab è data dalla probabilità di ricevere a per la probabilità di ricevere b. In formule∗ : (1) P{ab} = P{a}P{b}. Informazione • Poiché, per ogni simbolo a, la probabilità di ricevere a è compresa tra 0 e 1, si ha che log2 P{a} < 0, quindi I(a) è una quantità positiva. • Dall’uguaglianza (1), usando le proprietà dei logaritmi, si ottiene la seguente catena di uguaglianze I(ab) = − log2 P{ab} = − log2 (P{a}P{b}) = − log2 P{a} − log2 P{b} = I(a) + I(b) Pertanto, si può concludere che l’informazione sia additiva. • Se l’alfabeto è B = {0, 1} e se i simboli 0 e 1 sono equiprobabili, la scelta della base due nel logaritmo comporta I(0) = 1 e I(1) = 1 e l’unità di misura è il bit. ∗ Qui si usa una notazione semplificata rispetto alla slide precedente, scrivendo P{a} al posto di P{x ′ = a} S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 14 / 54 Misura dell’Informazione (II) Perché? Misurare l’informazione consente di • Misurare la ridondanza di un messaggio. Come posso ridurre la lunghezza della stringa trasmessa? • Misurare la perdita d’informazione nella trasmissione. Quando veloce posso trasmettere accettando un certo errore? • Misurare la perdita di informazione nella codifica. Quale parte della stringa trasmessa posso tralasciare accettando un certo errore? • Studiare codifiche migliori per scopi diversi S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 15 / 54 Rappresentazione dei Testi (I) Testi Un testo è una sequenza di caratteri Un carattere può essere • Una lettera • Un numero • Un simbolo speciale (punteggiatura, spazio, ...) Codifiche • Codifica per caratteri • Si potrebbe usare anche una codifica per parole S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 16 / 54 Rappresentazione dei Testi (II) Codifica ASCII • American Standard Code for Information Interchange • Introdotta per definire uno standard per l’input/output da/verso terminali • È una codifica binaria a lunghezza costante • Identifica una corrispondenza biunivoca tra un carattere e un numero Comprende 127 caratteri • 7 bit in codifica binaria • L’ottavo bit è di verifica (parity bit) • ASCII è stato esteso utilizzando l’ottavo bit per caratteri non-USA S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 17 / 54 Rappresentazione dei Testi (III) Codifica ASCII Comprende • Caratteri stampabili • Caratteri di controllo, ad esempio: - a capo - torna indietro - spazio Esempi A sinistra è riportata una tabella parziale con alcuni esempi S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 18 / 54 Rappresentazione dei Testi (IV) Codifica Unicode • Estende ASCII • Un unico formato per tutte le lingue • Formati a lunghezza fissa o variabile (in base al valore dell’ottavo e/o del sedicesimo bit) • Vari UTF (Unicode Transformation Format) possibili - UTF-8 lunghezza variabile fino a 32 bit (da 1 a 4 byte) - UTF-16 lunghezza variabile di almeno 16 bit (2 o 4 byte) • Sono codifiche - binarie - invertibili - a lunghezza variabile S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 19 / 54 Rappresentazione dei Testi (V) Codifica UTF-8 • 1 byte: 0XXXXXXX - Il primo bit è 0 - Equivalente ad ASCII • 2 byte: 110XXXXX 10XXXXXX - Il primo byte inizia con 110 - Il secondo byte inizia con 10 • 3 byte: 1110XXXX 10XXXXXX 10XXXXXX - Il primo byte inizia con 1110 - Il secondo e il terzo byte iniziano con 10 • 4 byte: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX - Il primo byte inizia con 11110 - Il secondo, il terzo e il quarto byte iniziano con 10 S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 20 / 54 Rappresentazione dei Suoni (I) Suoni Un suono è un fenomeno fisico continuo • Pressione dell’aria sulla membrana del microfono • Tensione elettrica a valle del microfono Digitalizzazione di un suono Per trattare un suono è spesso necessario digitalizzarlo • Campionamento: il suono viene misurato solo in alcuni istanti di tempo • Quantizzazione: il valore di ogni campione viene discretizzato e limitato in un intervallo Campionamento e quantizzazione sono fonte di errori. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 21 / 54 Rappresentazione dei Suoni (II) Qualità della digitalizzazione • fc frequenza di campionamento • ℓ numero di livelli (di solito ℓ = 2k ) Esempio Quantizzazione a 8 bit: 28 = 256 livelli S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 22 / 54 Rappresentazione dei Suoni (III) Aumentando fc e/o ℓ • Migliora la qualità del suono • Aumenta la memoria necessaria Diversi valori forniscono diverse qualità di digitalizzazione • Telefono, fc = 8 kHz, ℓ = 28 (8 bit), mono • CD, fc = 44.1 kHz, ℓ = 216 (16 bit), stereo La qualità può essere sinteticamente misurata con la bit-rate con ℓ = 2k b = fc · k · n e n numero di canali. • Telefono, b = 8000 byte/s (circa 7.8 Kbyte/s) • CD, b = 176400 byte/s (circa 172.2 Kbyte/s; 4 minuti su CD: circa 41.3 Mbyte) S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 23 / 54 Codifica delle Immagini (I) Immagini • Le immagini vengono digitalizzate in pixel (picture element) • Ogni pixel è rappresentato con 3 canali: R (red), G (green), B (blue) • Di solito i valori sono compresi tra 0 e 255 S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 24 / 54 Codifica delle Immagini (II) Immagini • Campionamento in base alla risoluzione r - Fotocamera economica: r = 2272 × 1704 (∼ 4 Mpixel) - Tipicamente in rapporto 4/3 o 16/9 • Quantizzazione su 24 bit - 8 per ognuno dei 3 canali R (red), G (green) e B (blue) Per una fotografia digitale servono circa 11 Mbyte S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 25 / 54 Codifica dei Video VIdeo • Campionamento nello spazio e nel tempo - Ogni fotogramma è codificato come un’immagine - 24 − 30 fotogrammi al secondo per il cinema • La bit rate di un video di media qualità (e.g., 1280 × 720) a 24 fotogrammi al secondo è circa b = 63.2 Mbyte/s Moltiplicando per 3600, si può osservare che per memorizzare un’ora di video servono circa 222.4 Gbyte S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 26 / 54 Codifiche Lossless e Codifiche Lossy Codifiche Lossless Sono codifiche invertibili. • Aggiunta di ridondanza - bit di parità - codifica di Hamming • Aumento dell’informazione portata dai singoli simboli - codifica di Huffman Codifiche Lossy Sono codifiche non invertibili. • Ammettono che la stringa ricostruita abbia qualche errore • Usate quando il destinatario è una persona (audio, immagini, video) S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 27 / 54 Codifica delle Immagini Formati • Esistono vari formati per le immagini • I formati si differenziano in base al tipo di codifica - Codifiche lossless - Codifiche lossy • Immagini raster: sono composte da una griglia di pixel, il cui colore è codificato tramite una o più sequenze di bit • Immagini vettoriali: sono composte dalla descrizione degli elementi primitivi (rette, curve, poligoni, . . . ) S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 28 / 54 Immagini Raster Lossless Due tipologie • True color (24 bit) • Con palette: ogni pixel è associato a un numero piccolo di bit (1, 4 o 8), che corrispondono, tramite la palette, a un colore (24 bit) I formati più comuni sono • BMP (Bitmap): tipico di Microsoft Windows • PNG (Portable Network Graphics): pensato per la trasmissione su rete e può essere compresso • GIF (Graphics Interchange Format): simile a PNG, ma più datato S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 29 / 54 Immagini Vettoriali Caratteristiche Principali • Non contengono la descrizione dei singoli pixel, ma la descrizione geometrica dell’immagine • Sono indipendenti dalla risoluzione di visualizzazione o stampa • Possono essere convertite facilmente a immagini raster (non vale il viceversa) I formati più comuni sono • PDF (Portable Document Format): il più usato oggi • SVG (Scalable Vector Graphics): pensato per il Web • PS (Postscript): usato principalmente per la stampa • EPS (Encapsulated Postscript): variante del PS per LATEX S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 30 / 54 Esempio di PS %!PS newpath 20 20 moveto 20 220 lineto 220 220 lineto 220 20 lineto closepath 2 setlinewidth stroke showpage S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 31 / 54 Immagini Raster Lossy Codifica JPEG • Joint Picture Expert Group • Standard parametrico • Si basa su una codifica lossy dell’immagine a blocchi di 8 × 8 pixel • Ogni blocco è codificato separatamente dall’altro S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 32 / 54 Esempio JPEG S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 33 / 54 Codifica dei Video Formati più comuni • Tutti i formati consentono di descrivere sia audio che video • La codifica del video (o dell’audio) viene specificata all’inizio del file - AVI (Audio Video Interchange), tipico di Microsoft Windows, è pensato per contenere diversi tipi di codifica - MPEG specifica anche quali sono le codifiche possibili • La codifica viene specificata indicando lo specifico codec (codificatore/decodificatore) • Esisono molti formati, che si differenziano solo per la codifica del file e portano le stesse informazioni S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 34 / 54 Codifica MPEG (I) MPEG • Motion Picture Expert Group • Nato per codificare video e il relativo audio con qualità VHS su supporto CD Vari standard • MPEG-1, comunemente usato per l’audio (il livello 3 viene detto comunemente MP3) • MPEG-2, comunemente usato nei DVD e nei canali della televisione digitale terrestre • MPEG-4, pensato per il Web e simile alla codifica usata da Youtube S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 35 / 54 Codifica MPEG (II) MPEG MPEG identifica tre tipi di fotogrammi • Intra Picture (I-Picture), codificati indipendentemente dagli altri fotogrammi. Sono i punti di ancoraggio per la navigazione del video. • Predicted Picture (P-Picture), codificati per differenza rispetto al più vicino I-Picture precedente. Possono essere usati come punti di ancoraggio per la navigazione del video. • Bidirectional Picture (B-Picture), codificati per differenza rispetto ai più vicini fotogrammi precedenti e successivi. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 36 / 54 Codifiche Ridondanti (I) Ridondanza • Spesso, i linguaggi impongogno delle regole grammaticali per cui i messaggi risultano ridondanti • Un messaggio è ridondante se richiede più simboli del necessario Esempi • Tipcamnte le parole lnghe contngno parcchi cartteri che potrbbro essre elimnati • Seocndo uno stiduo di una Univretisà Inlegse l’oridne dlele letetre all’intreno di una praola non è improtatne, ciò che improta è la pirma e l’utlima letetra S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 37 / 54 Codifiche Ridondanti (II) Come sfruttare la ridondanza In caso di linguaggi ridondanti, abbiamo due possibilità • Codificare in un altro linguaggio togliendo la ridondanza - Tipicamente, si ottengono messaggi più brevi • Sfruttare la ridondanza per altri altri scopi - Forward Error Detection, scoprire eventuali errori (di trasmissione o di memorizzazione) - Forward Error Correction, correggere eventuali errori (di trasmissione o di memorizzazione) S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 38 / 54 Codifica di Hamming (I) • Usato principalmente per individuare errori su singoli bit • È anche possibile la correzione aumentando la ridondanza • Codifica delle cifre da 0 a 9 utilizzando 5 bit (anziché 4) • Si associa ad ogni cifra una stringa binaria in cui sono presenti sempre due 1 e tre 0 (o viceversa) • In caso di errore, la stringa potrebbe assumere una delle altre 22 configurazioni S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 39 / 54 Codifica di Hamming (II) • Tabella 1: Altra codifica • Tabella 2: Codifica di Hamming 0 1 2 3 4 5 6 7 8 9 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Tabella 1 S. Monica Tabella 2 Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 40 / 54 Codifica di Huffman (I) Caratteristiche • Codifica binaria a lunghezza variabile • Codifica invertibile • Massimo rapporto di compressione - lunghezza finale / lunghezza iniziale • Deve considerare l’intera stringa da codificare (lenta) - Per la costruzione del codice si parte dalle probabilità dei singoli simboli (approssimata con la relativa frequenza) • È alla base del formato ZIP S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 41 / 54 Codifica di Huffman (II) Passo 1: si costruisce un nodo foglia per ogni lettera, etichettandolo con la frequenza del simbolo Passo 2: si rimuovono due nodi con frequenze minori S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 42 / 54 Codifica di Huffman (III) Passo 3: Si collegano i nodi ad un nodo padre etichettato con la somma delle frequenze Passo 4: Si aggiunge il nuovo nodo alla lista S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 43 / 54 Codifica di Huffman (IV) Passo 5: Si ripetono i passi dal 2 al 4 finché resta un solo nodo nella lista S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 44 / 54 Codifica di Huffman (V) Abbiamo ottenuto un albero binario S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 45 / 54 Codifica di Huffman (VI) È la codifica più breve • Simboli più probabili: sequenze più corte • Simboli meno probabili: sequenze più lunghe a=0 b = 101 c = 100 d = 111 e = 1101 f = 1100 S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 46 / 54 Esercizi (I) Esercizio: Sia A = {a, b, c, d, e, f } e sia L = {stringhe in A∗ che abbiano un numero dispari di simboli d}. Si considerino le seguenti stringhe: S = abc, T = gcd, U = ade, W = def . Dire quali delle seguenti affermazioni sono vere (V) e quali false (F). S ∈ A∗ S ◦ T ∈ A∗ S∈L S◦T ∈L |S| = 5 T ∈ A∗ S ◦ U ∈ A∗ T ∈L S◦U ∈L |T | = 3 U ∈ A∗ S ◦ W ∈ A∗ U∈L S◦W ∈L |U ◦ S| = 4 W ∈ A∗ W ◦ T ∈ A∗ W ∈L W ◦U ∈L |S ◦ U| = 6 Nota: Le concatenazioni che appaiono nell’esercizio precedente sono: S ◦ T = abcgcd W ◦ T = defgcd S. Monica S ◦ U = abcade W ◦ U = defade Fondamenti di Informatica S ◦ W = abcdef U ◦ S = adeabc A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 47 / 54 Esercizi (I) Esercizio: Sia A = {a, b, c, d, e, f } e sia L = {stringhe in A∗ che abbiano un numero dispari di simboli d}. Si considerino le seguenti stringhe: S = abc, T = gcd, U = ade, W = def . Dire quali delle seguenti affermazioni sono vere (V) e quali false (F). S ∈ A∗ S ◦ T ∈ A∗ S∈L S◦T ∈L |S| = 5 T ∈ A∗ S ◦ U ∈ A∗ T ∈L S◦U ∈L |T | = 3 U ∈ A∗ S ◦ W ∈ A∗ U∈L S◦W ∈L |U ◦ S| = 4 W ∈ A∗ W ◦ T ∈ A∗ W ∈L W ◦U ∈L |S ◦ U| = 6 Nota: Le concatenazioni che appaiono nell’esercizio precedente sono: S ◦ T = abcgcd W ◦ T = defgcd S. Monica S ◦ U = abcade W ◦ U = defade Fondamenti di Informatica S ◦ W = abcdef U ◦ S = adeabc A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 47 / 54 Esercizi (I) Esercizio: Sia A = {a, b, c, d, e, f } e sia L = {stringhe in A∗ che abbiano un numero dispari di simboli d}. Si considerino le seguenti stringhe: S = abc, T = gcd, U = ade, W = def . Dire quali delle seguenti affermazioni sono vere (V) e quali false (F). In rosso le affermazioni vere. S ∈ A∗ S ◦ T ∈ A∗ S∈L S◦T ∈L |S| = 5 S. Monica T ∈ A∗ S ◦ U ∈ A∗ T ∈L S◦U ∈L |T | = 3 U ∈ A∗ S ◦ W ∈ A∗ U∈L S◦W ∈L |U ◦ S| = 4 Fondamenti di Informatica W ∈ A∗ W ◦ T ∈ A∗ W ∈L W ◦U ∈L |S ◦ U| = 6 A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 48 / 54 Esercizi (II) Esercizio: Si consideri l’alfabeto A = {a, b, c, d} e sia L il linguaggio definito nel seguente modo: L = {S ∈ A∗ tali che |S| = 2}. Scrivere le stringhe del linguaggio L in modo estensionale. Svolgimento: aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd Esercizio: Si consideri l’alfabeto A = {x, y , z} e sia L il linguaggio definito nel seguente modo: L = {ε, x, y , z, xx, xy , xz, yx, yy , yz, zx, zy , zz}. Scrivere le stringhe del linguaggio L in modo intensionale. Svolgimento: L = {S ∈ A∗ tali che |S| ≤ 2}. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 49 / 54 Esercizi (II) Esercizio: Si consideri l’alfabeto A = {a, b, c, d} e sia L il linguaggio definito nel seguente modo: L = {S ∈ A∗ tali che |S| = 2}. Scrivere le stringhe del linguaggio L in modo estensionale. Svolgimento: aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd Esercizio: Si consideri l’alfabeto A = {x, y , z} e sia L il linguaggio definito nel seguente modo: L = {ε, x, y , z, xx, xy , xz, yx, yy , yz, zx, zy , zz}. Scrivere le stringhe del linguaggio L in modo intensionale. Svolgimento: L = {S ∈ A∗ tali che |S| ≤ 2}. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 49 / 54 Esercizi (IIIa) Esercizio: Sia A = {x, y , z, w}. Sia L il linguaggio definito usando la notazione intensionale nel seguente modo L = {S ∈ A∗ tali che il primo simbolo di S sia x}. Dire quale delle seguenti affermazioni è vera. 1 La concatenazione di due stringhe del linguaggio appartiene sempre al linguaggio. 2 La concatenazione di due stringhe del linguaggio non appartiene mai al linguaggio. 3 La concatenazione di due stringhe del linguaggio può appartenere al linguaggio. La risposta corretta è la (1). Comunque si scelgano S ∈ L, T ∈ L, il primo simbolo di S ◦ T coincide con il primo simbolo di S, cioè con x. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 50 / 54 Esercizi (IIIb) Esercizio: Sia A = {x, y , z, w}. Sia L il linguaggio definito usando la notazione intensionale nel seguente modo L = {S ∈ A∗ tali che |S| = 2}. Dire quale delle seguenti affermazioni è vera. 1 La concatenazione di due stringhe del linguaggio appartiene sempre al linguaggio. 2 La concatenazione di due stringhe del linguaggio non appartiene mai al linguaggio. 3 La concatenazione di due stringhe del linguaggio può appartenere al linguaggio. La risposta corretta è la (2). Comunque si scelgano S ∈ L, T ∈ L, |S ◦ T | = 4, quindi S ◦ T ∈ / L. S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 51 / 54 Esercizi (IIIc) Esercizio: Sia A = {x, y , z, w}. Sia L il linguaggio definito usando la notazione intensionale nel seguente modo L = {S ∈ A∗ tali che il numero di y nella stringa sia minore di 2}. Dire quale delle seguenti affermazioni è vera. 1 La concatenazione di due stringhe del linguaggio appartiene sempre al linguaggio. 2 La concatenazione di due stringhe del linguaggio non appartiene mai al linguaggio. 3 La concatenazione di due stringhe del linguaggio può appartenere al linguaggio. La risposta corretta è la (3). Si considerino le seguenti stringhe appartenenti al linguaggio: S = xy , T = zzw, U = ywz. • S ◦ T = xyzzw ∈ L • S ◦ U = xyywz ∈ /L S. Monica Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 52 / 54 Esercizi (IV) Esercizio: Sia A = {a, b, c, d, e, f }. Scrivere una codifica binaria, a lunghezza costante e invertibile dei simboli di A, facendo in modo che tale codifica non sia ridondante (cioè, usando il minor numero di bit). Svolgimento: Per codificare i 6 simboli dell’alfabeto A con una codifica binaria, a lunghezza costante e invertibile, abbiamo bisogno di almeno 3 bit. • 2 bit non sono sufficienti, poiché esisono solo 22 = 4 stringhe binarie diverse di lunghezza 2 e tali stringhe non consentono di costruire una codifica invertibile dei 6 simboli di A. • 3 bit sono sufficienti, poiché esisono 23 = 8 stringhe binarie diverse di lunghezza 3 (possiamo usarne 6 diverse per codificare i 6 simboli di A). • Usare un numero maggiore di bit aggiunge ridondanza. Un esempio di codifica binaria, a lunghezza costante e invertibile, ottenuta usando il minor numero di bit è: S. Monica a → 000 d → 100 b → 001 e → 110 c → 010 f → 111 Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 53 / 54 Con riferimento alle slide 23, 25, 26: • bit-rate telefono: b = 8000 · 8 · 1 bit/s = 8000 · 8 · 1 8000 · 8 · 1 byte/s = Kbyte/s ≃ 7.8 Kbyte/s. 8 8 · 210 • bit-rate CD: b = 44100 · 16 · 2 bit/s = = 44100 · 16 · 2 byte/s 8 44100 · 16 · 2 Kbyte/s ≃ 172.2 Kbyte/s. 8 · 210 • Immagine: 2272 · 1704 pixel. 2272 · 1704 · 24 bit = 2272 · 1704 · 3 byte = 2272 · 1704 · 3 Mbyte ≃ 11 Mbyte. 220 • Video: 1280 · 720 pixel per ogni fotogramma, cioè 1280 · 720 · 3 byte per fotogramma. 24 fotogrammi al secondo. 1280 · 720 · 3 · 24 byte/s = S. Monica 1280 · 720 · 3 · 24 Mbyte/s ≃ 63.2 Mbyte/s. 220 Fondamenti di Informatica A.A. 2017/2018 Document shared on www.docsity.com Downloaded by: gabriele-solimeo-1 (gabriele.solimeo@studenti.unipr.it) 54 / 54