Algoritmi e Strutture Dati Laboratorio 15/12/2008. Daniele Loiacono

Documenti analoghi
Heap e code di priorità

Algoritmi e strutture dati. Codici di Huffman

Alberi binari di ricerca

ADT Coda con priorità

Algoritmi e Strutture Dati. HeapSort

Codifica dell Informazione

2) Codici univocamente decifrabili e codici a prefisso.

Alberto Montresor Università di Trento

Tecniche di compressione senza perdita

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Strutture di accesso ai dati: B + -tree

Entropia. Motivazione. ? Quant è l informazione portata dalla sequenza? Abbiamo una sequenza S di N simboli (campioni audio, pixel, caratteri,...

Codifica dell Informazione

La codifica dell informazione

Informatica A a.a. 2010/ /02/2011

Progettazione di Algoritmi

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F

Algoritmi e Strutture Dati

FILE E INDICI Architettura DBMS

Esercizi Capitolo 6 - Alberi binari di ricerca

Laboratorio di Algoritmi e Strutture Dati

Numeri Frazionari. Numeri Frazionari

Alberi Bilanciati di Ricerca

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

= < < < < < Matematica 1

IL CODICE EAN (European Article Number)

Informatica Teorica. Macchine a registri

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Esercizi per il corso di Algoritmi e Strutture Dati

Linguaggio C: introduzione

Problema: calcolare il massimo tra K numeri

Corso di Informatica

Programma svolto di INFORMATICA. Classe 3M - indirizzo MERCURIO A.S. 2010/2011

I Grafi ad Albero..Strumenti per aiutare a ragionare

Elementi base per la realizzazione dell unità di calcolo

INFORMATICA CORSO DI ABILITA' INFORMATICHE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO

La codifica. dell informazione

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Codifica dati e istruzioni. Lezione 9. Codifica dati e istruzioni. Codifica dati e istruzioni. Codifica binaria dell informazione

Esercizi Capitolo 5 - Alberi

Algebra di Boole Algebra di Boole

Programma svolto di INFORMATICA. Classe 3 - indirizzo MERCURIO A.S. 2009/2010

Esercizi Capitolo 14 - Algoritmi Greedy

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Parte 6 Esercitazione sull accesso ai file

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

I B+ Alberi. Sommario

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Le Macchine di Turing

Il comando provoca il salvataggio dello stato e la terminazione dell esecuzione.

Concetti Introduttivi. Rappresentazione delle informazioni

Linguaggi e Grammatiche Liberi da Contesto

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

alberi binari e ricorsione

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Il problema del commesso viaggiatore: da Ulisse alla Logistica integrata. Luca Bertazzi

Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006

Prova d esame di Reti Logiche T 10 Giugno 2016

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

Università di Cassino. Esercitazioni di Statistica 1 del 29 Gennaio Dott. Mirko Bevilacqua

Rappresentazioni numeriche

Esercitazione n o 3 per il corso di Ricerca Operativa

Esercizi di Algoritmi e Strutture Dati

L estensione per entrambe le mani è completa e riguarda le note: Sol, La, Si, Do, Re. Gli stessi consigli del n. 32, anche qui disponi di 3 filmati.

Corso di Elementi di Bionformatica

Il calcolatore. Architettura di un calcolatore (Hardware)

Corso di Calcolo Numerico

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Guida a SacramentiWeb 1.2

Alberi di ricerca binari

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Un insieme si dice finito quando l operazione consistente nel contare i suoi elementi ha termine.

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Gestione di files Motivazioni

La struttura dati ad albero binario

Mini-Corso di Informatica

Codifica binaria dei numeri relativi

Software di compressione

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

TECNICHE DI COMPRESSIONE DATI

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Corso di Informatica A (A-L) Corso di Laurea in Scienze e Tecniche Psicologiche a.a 2005/06. Obiettivi del corso. Prof. ssa Maria Luisa Sapino

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

Algoritmi e Strutture Dati

INDICE. Vista Libretto Livello Digitale 2. Importazione di dati da strumento 3. Inserisci File Vari 5. Compensazione Quote 5.

Come utilizzare i riferimenti assoluti e relativi in Microsoft Excel

Sistemi di Elaborazione delle Informazioni

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Corso: Strutture Dati Docente: Annalisa De Bonis

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

GRIGLIA DI CORREZIONE Matematica Classe I Scuola secondaria di I grado

Algoritmi di ordinamento. Algoritmi. Selection sort semplificato - I. Selection sort semplificato - II

Fondamenti VBA. Che cos è VBA

Rappresentazione dei numeri in un calcolatore

Esercitazione 4. Comandi iterativi for, while, do-while

Transcript:

Algoritmi e Strutture Dati Laboratorio 15/12/2008

Problema della compressione Rappresentare i dati in modo efficiente Impiegare il numero minore di bit per la rappresentazione Goal: risparmio spazio su disco e tempo di trasferimento Una possibile tecnica di compressione: codifica di caratteri Tramite funzione di codifica f: f(c) = x c è un possibile carattere preso da un alfabeto Σ x è una rappresentazione binaria c è rappresentato da x

Rappresentazione ad albero per la decodifica Rappresentazione come alberi binari Figlio sinistro: 0 Figlio destro: 1 Caratteri dell'alfabeto sulle foglie 1 0 Algoritmo di decodifica: 1. parti dalla radice 2. leggi un bit alla volta percorrendo l'albero: 0: sinistra 1: destra 3. stampa il carattere della foglia 4. torna a 1 A 0 1 0 1 B C 0 D 0 1 E A: 00 B: 010 C: 011 D: 100 E: 101

Algoritmo di Huffman Principio del codice di Huffman Minimizzare la lunghezza dei caratteri che compaiono più frequentemente Assegnare ai caratteri con la frequenza minore i codici corrispondenti ai percorsi più lunghi all interno dell albero Un codice è progettato per un file specifico Si ottiene la frequenza di tutti i caratteri Si costruisce il codice Si rappresenta il file tramite il codice

Algoritmo di Huffman Passo 1: Costruire una lista di nodi foglia per ogni carattere, etichettato con la propria frequenza f : 5 e : 9 c : 12 b : 13 d : 16 a : 45

Costruzione del codice Passo 2: Rimuovere i due nodi più piccoli ( minori (con frequenze Passo 3: Collegarli ad un nodo padre etichettato ( sommata ) con la frequenza combinata 14 c : 12 b : 13 d : 16 a : 45 f : 5 e : 9

Costruzione del codice Passo 4: Aggiungere il nodo combinato alla lista. c : 12 b : 13 14 d : 16 a : 45 f : 5 e : 9

Costruzione del codice Ripetere i passi 2-4 fino a quando non resta un solo nodo nella lista 14 d : 16 25 a : 45 f : 5 e : 9 c : 12 b : 13

Costruzione del codice Ripetere i passi 2-4 fino a quando non resta un solo nodo nella lista 25 30 a : 45 c : 12 b : 13 14 d : 16 f : 5 e : 9

Costruzione del codice Ripetere i passi 2-4 fino a quando non resta un solo nodo nella lista a : 45 55 25 30 c : 12 b : 13 14 d : 16 f : 5 e : 9

Costruzione del codice Al termine, si etichettano gli archi dell'albero con bit 0-1 0 100 1 a 0 55 1 25 30 1 1 0 0 c b 0 14 1 d f e

Algoritmo in pseudo-codice Huffman(f[1..n], c[1..n]) Q := new PriorityQueue() for i := 1 to n z = new Tree(f[i], c[i]) Q.enqueue(z) for i := 1 to n - 1 z1 = Q.dequeue() z2 = Q.dequeue() z = new Tree(z1.f + z2.f, '') z.left = z1 z.right = z2 Q.enqueue(z) return Q.dequeue() Tree: f c left right Complessità θ(n log n) // frequenza (key) // carattere // figlio sinistro // figlio destro

Esercizio 1 Si scriva una funzione che implementa l algoritmo descritto in precedenza per costruire un albero di decodifica Si supponga che la funziona riceva come parametri in ingresso un vettore contenente i caratteri ed un vettore contenente le relative frequenze Si supponga che i due vettori NON siano in alcun modo ordinati. La funzione deve restituire come output un albero di decodifica

Esercizio 2 Come si può costruire una tabella di codifica a partire dall albero di decodifica? Implementare una funzione che riceva come input un albero di decodifica e come output una tabella di codifica Si implementi la tabella di codifica come una tabella che associa a ciascun carattere nel codice ASCII (cioè a ciascuno dei caratteri con codice fra 0 e 255) una stringa che ne rappresenta la codifica o la stringa vuota laddove non è prevista alcuna codifica per il carattere

Esercizio 3 Utilizzando le funzioni implementate in precedenza, implementare una funzione che data una stringa in ingresso la codifica utilizzando il codice con costo ottimo La funzione riceve in ingresso solo la stringa da codificare e deve perciò costruire una tabella di codifica opportuna L output della funzione dovrà essere la stringa opportunamente codificata e un albero di decodifica