Programmazione Greedy I codici di Huffman
|
|
|
- Romina Marrone
- 8 anni fa
- Просмотров:
Транскрипт
1 Programmazione Greedy I codici di Huffman Codifica dell informazione La rappresentazione ordinaria dell informazione prevede l impiego di un numero costante di bit; per esempio ad ogni carattere del codice ASCII è associata univocamente una stringa binaria di 8 bit. Relazioni di questo tipo prendono il nome di codici a lunghezza fissa. Supponiamo di avere un alfabeto A={a, b, c, d,e}, per poterne fornire una rappresentazione tramite codice a lunghezza fissa dobbiamo impiegare almeno 3 bit: a d b e c Prendiamo in esame una semplice stringa formata dai simboli dell alfabeto A, ad esempio aaabcde. La codifica complessiva della stringa richiede 2 bit (3 bit per ogni carattere). Ammettendo di considerare altre informazioni si può operare secondo una strategia diversa. Se si conoscono a priori le frequenze con cui i caratteri occorrono all interno di un file, allora conviene adottare un codice a lunghezza variabile il cui scopo è quello di assegnare meno bit in corrispendenza dei caratteri più frequenti e aumentare progressivamente il dispendio della memoria con il diminuire della frequenza. Tornando all esempio precedente relativo all alfabeto A e alla stringa aaabcde, una possibile codifica progressiva sarebbe: a (carattere più frequente) b d c e Adesso la codifica della stringa comporterebbe un costo sensibilmente minore: aaabcde (costo complessivo di bit) La cosa sembrerebbe funzionare perfettamente (più del 5% di risparmio), ma bisogna considerare anche la possibilità di recuperare l informazione compressa. Con questa scelta la decodifica è diventata un operazione indecidibile, con risultati disastrosi sul significato originale dei dati. A tal proposito basti considerare i primi 4 bit della codifica proposta: aaab (esatto) cd (sbagliato) cab (sbagliato) acb (sbagliato) Per questo motivo un codice a lunghezza variabile che possa essere felicemente impiegato nella compressione dei dati deve essere un codice prefisso. In un codice prefisso nessuna stringa di codifica
2 può essere il prefisso di una qualunque altra stringa di codifica, e questo elimina ogni ambiguita in fase di decodifica. Codici prefissi e alberi binari Una rappresentazione comoda per un codice variabile prefisso è quella che fa uso degli alberi binari. Tutti i caratteri dell alfabeto a cui appartiene il codice sono disposti come foglie dell albero e, dopo aver etichettato ogni arco dell albero indicando con il percorso verso il sottoalbero sinistro e con il percorso verso il sottoalbero destro, la codifica di un simbolo risulta come la stringa che etichetta il cammino dalla radice alla foglia che contiene quel simbolo. Esaminiamo il codice a lunghezza variabile presentato in precedenza per l alfabeto A: A C D E B Il codice non è prefisso perchè i caratteri non etichettano solo foglie, ma anche nodi intermedi (come nel caso di a e b). Inoltre un codice prefisso ottimo induce una rappresentazione completa, nella quale ogni nodo interno ha esattamente 2 figli, quindi, se A è l alfabeto di caratteri a cui appartiene il codice, allora l albero di codifica avrà A foglie e A - nodi interni. A questo proposito esaminiamo l albero del codice a lunghezza fissa presentato in precedenza: L albero non è completo; infatti il codice a lunghezza fissa non e un codice ottimo A B C D E In generale si può notare che, se T è un albero per un codice su un alfabeto A, f(x) è la frequenza relativa ad ogni carattere x di A e liv(x) è la profondità di x all interno di T, allora possiamo definire il costo dell albero T come: C ( T ) = x A f ( x) liv( x)
3 Algoritmo di Huffman Gli studi di Huffman forniscono un metodo algoritmico in grado di generare un codice prefisso ottimo per un file in cui compaiano n caratteri. I caratteri fanno parte di un alfabeto A ( A = n) e per ogni a di A è definita la frequenza di a, f(a), come il numero di occorenze di a all interno del file. L algoritmo di Huffman riceve in input l alfabeto da codificare e il vettore con le frequenze di ciascun carattere e costruisce l albero di codifica ottimo: albero_di_huffman (A, f[]) { n = A ; heap = costruisci_heap(a); for (n- volte) { x = estrai_minimo(heap); y = estrai_minimo(heap); z = nuovo_nodo(); figlio_sinistro[z] = x; figlio_destro[z] = y; f[z] = f[x]+f[y]; inserisci(heap, z); } } La costruzione dell albero è iterativa, vengono selezionati ogni volta i due elementi con frequenza minore, x e y, per essere fusi in unico albero. Il procedimento di fusione rende x e y figli di un nuovo elemento z la cui caratteristica è di ereditare la frequenza somma delle frequenze dei due elementi fusi. Nell implementazione in pseudocodice presentata in questo contesto l algoritmo organizza i simboli dell alfabeto A in una coda con priorità, secondo valori crescenti della frequenza. La coda è realizzata tramite un heap minimo. La complessità dell algoritmo è così quantificabile con semplici osservazioni: () la costruzione di un heap ha un costo O(n); (2) le operazioni di inserimento ed estrazione che avvengono all interno del for contribuiscono con O(log(n)); (3) il for viene ripetuto n volte; in definitiva il costo totale è pari a O(n log(n)). Correttezza dell algoritmo Per snellire la dimostrazione facciamo due osservazioni preliminari di cui si fornirà la prova in un secondo tempo: Osservazione : Se A è un alfabeto e x, y sono i due simboli di A con frequenza minore, allora esiste un codice prefisso ottimo per A il cui albero T presenta x e y come fratelli. Osservazione 2: Se T è un albero ottimo per l alfabeto A e x, y sono due caratteri che appaiono in T come foglie di uno stesso nodo z, allora, se f(z)= f(x)+f(y), l albero T = T-{x,y} è ancora un albero ottimo per l alfabeto A = A-{x,y}+{z}.
4 La dimostrazione è condotta per induzione sul numero n di caratteri che compongono l alfabeto da codificare. Base: se n=2, indipendentemente dalle frequenze di ciascun carattere, l algoritmo di Huffman costruisce uno dei due unici possibili alberi prefissi ottimi. Induzione: in presenza di n+ caratteri l algoritmo individua due simboli x e y con minor frequenza. Per l oss. possiamo stabilire che x e y sono figli di uno stesso nodo z; a questo punto l algoritmo lavora su z, riducendo di un simbolo l alfabeto e portandosi al livello n, dove l albero di codifica T è ottimo per ipotesi induttiva. Dato che il procedimento etichetta f[z] con f[x]+f[y] allora per l oss.2 se T è ottimo allora è ottimo anche l albero di livello n+ da cui T proviene. Concludiamo con la dimostrazione delle due osservazioni. (dimostrazione oss.) Supponiamo di avere un alfabeto A e due caratteri x,y A che hanno la minor frequenza tra tutti i simboli di A. Forniamo una prova costruttiva a partire da un albero T ottimo per A, dove x e y non sono fratelli. Mostriamo come sia possibile costruire un albero T, ancora ottimo per A, ma dove x e y siano fratelli. Individuiamo all interno di T le due foglie sorelle a e b che si trovino al livello più basso. Adesso scambiamo a con x e b con y e mostriamo che l albero T ottenuto è ancora una albero ottimo. Il ragionamento sarà condotto sullo scambio di a con x, ma in maniera del tutto simmetrica può essere esteso anche al caso di b e y. Lo spostamento di a e x ha provocato una variazione nel costo dell albero T, in particolare: C(T )=C(T)-f(x)liv(x)+f(x)liv(a)-f(a)liv(a)+f(a)liv(x) C(T )=C(T)+f(x)[liv(a)-liv(x)]-f(a)[liv(a)-liv(x)] C(T )=C(T)+[liv(a)-liv(x)][f(x)-f(a)] Considerando che per come abbiamo scelto a e x risulta: liv(x) liv(a) e f(a) f(x) Allora possiamo concludere che la variazione di costo fra T e T è minore o uguale a zero, il che implica che T è ancora un albero ottimo. (dimostrazione oss.2) Siano dati due alberi T e T, il primo ottimo per un alfabeto A e il secondo definito come T =T-{x,y}, dove x e y sono le due foglie di un nodo z in T. Posto f(z)=f(x)+f(y) vogliamo dimostrare che T è ottimo per l alfabeto A-{x,y} {z}. Mettiamo in relazione il costo di T e quello di T : C(T)=C(T )-f(z)liv(z)+f(x)liv(x)+f(y)liv(y) () Se poniamo liv(z)=l e consideriamo che x e y si trovano alla stessa altezza e sono figlie di z, allora possiamo scrivere liv(x)=liv(y)=l+; inoltre se notiamo che f(z)=f(x)+f(y), la () diventa: C(T)=C(T )-l(f(x)+f(y))+(l+)(f(x)+f(y)) C(T)=C(T )+f(x)+f(y) (2)
5 Adesso supponiamo che esista un albero T per l alfabeto A-{x,y} {z} tale che C(T )<C(T )(*). L esistenza di T genera un assurdo, se infatti a T aggiungiamo x e y, otteniamo un albero T per A tale che: C(T )=C(T )+f(x)+f(y) (3) Considerando in sequenza la (3), la (*) e la (2): C(T ) = C(T )+f(x)+f(y) < C(T )+f(x)+f(y) = C(T) C(T )<C(T) (4) L espressione (4) è un assurdo perchè abbiamo considerato per ipotesi che T era un albero ottimo per A, l assurdo deriva dall aver supposto che T non fosse ottimo per A-{x,y} {z}. Fabio Venditti, 999
Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio
Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi
Algoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
Alberi ed Alberi Binari
Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,
Alberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Alberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra
RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine
RISOLUZIONE IN LOGICA PROPOSIZIONALE Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine 1. Risoluzione Definitione 1.1. Un letterale l è una variabile proposizionale (letterale
PROVETTE D ESAME. Algoritmi e Strutture Dati
PROVETTE D ESAME Algoritmi e Strutture Dati ESERCIZIO 1 Si ottengano limiti superiori e inferiori per la seguente ricorrenza ESERCIZIO 1 ESERCIZIO 2 Dato un albero binario T, il grado di sbilanciamento
Espressioni aritmetiche
Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:
Progettazione di Algoritmi
Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai
ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15
ANNO ACCADEMICO 2014/15 1 a prova in itinere 13 gennaio 2015 ESERCIZIO 1 Si risolva l equazione di ricorrenza al variare del parametro reale a>1. T (n) = 27 n a T + n 2 log n a ESERCIZIO 2 Si ordinino
TRIE (albero digitale di ricerca)
TRIE (albero digitale di ricerca) Struttura dati impiegata per memorizzare un insieme S di n stringhe (il vocabolario V). Tabelle hash le operazioni di dizionario hanno costo O(m) al caso medio per una
Introduzione alla codifica entropica
Compressione senza perdite Il problema Introduzione alla codifica entropica Abbiamo un alfabeto di simboli A (nota: non è detto che gli elementi di A siano numeri) Sappiamo che il simbolo a A si presenta
Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi
Linguaggi di Programmazione Corso C Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali Nicola Fanizzi ([email protected]) Dipartimento di Informatica Università degli Studi di Bari Grammatiche
Esercizi su alberi binari
Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica
Note per la Lezione 4 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che
Suffix Trees. Docente: Nicolò Cesa-Bianchi versione 21 settembre 2017
Complementi di Algoritmi e Strutture Dati Suffix Trees Docente: Nicolò Cesa-Bianchi versione 21 settembre 2017 In generale, possiamo trovare tutte le occorrenze di un pattern y in un testo x in tempo O(
Linguaggi e Grammatiche Liberi da Contesto
N.Fanizzi-V.Carofiglio Dipartimento di Informatica Università degli Studi di Bari 22 aprile 2016 1 Linguaggi Liberi da Contesto 2 Grammatiche e Linguaggi Liberi da Contesto G = (X, V, S, P) è una grammatica
Heap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
La codifica di sorgente
Tecn_prog_sist_inform Gerboni Roberta è la rappresentazione efficiente dei dati generati da una sorgente discreta al fine poi di trasmetterli su di un opportuno canale privo di rumore. La codifica di canale
Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi
Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Dimostrare che un albero non vuoto con n nodi interni, dove ogni nodo interno ha almeno
Problemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Algoritmo di Dijkstra (*) (ACM in grafi diretti e non diretti senza archi di peso negativo) Punto della situazione Algoritmo basato sull ordinamento
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi
LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
Informatica Generale Homework di Recupero 2016
Informatica Generale Homework di Recupero 016 docente: Ivano Salvo Sapienza Università di Roma Gruppo 1 Esercizio 1.1 Scrivere un programma C che presi in input due interi positivi a ed b (a, b > 0) calcola
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,
Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei
Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 27 marzo 2012 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,
Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Frodo Dudo Daisy Alberi Gli alberi sono una generalizzazione
GLI ALBERI BINARI DI RICERCA. Cosimo Laneve
GLI ALBERI BINARI DI RICERCA Cosimo Laneve argomenti 1. alberi binari di ricerca 2. la ricerca di elementi e la complessità computazionale 3. operazione di cancellazione di elementi 4. esempi/esercizi
In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114
In questa lezione Heapsort ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 11 1 Paternità L heapsort è stato pubblicato da J. W. J. Williams nel 106. Pochi mesi
Appunti sui Codici di Reed Muller. Giovanni Barbarino
Appunti sui Codici di Reed Muller Giovanni Barbarino Capitolo 1 Codici di Reed-Muller I codici di Reed-Muller sono codici lineari su F q legati alle valutazioni dei polinomi sullo spazio affine. Per semplicità
Progettazione di Algoritmi
Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 29/01/2016 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via
Algoritmi e Strutture Dati. HeapSort
Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene
Introduzione ai grafi
TFA A048 Anno Accademico 2012-13 Outline Cenni storici sui grafi Nozioni introduttive: cammini, connessione, alberi, cicli Cammini di costo minimo Origini storiche La nascita della teoria dei grafi risale
Algoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta
Laboratorio di Python
Laboratorio di Python Alberi binari Lab15 12 Maggio 2017 Outline Correzione esercizi per oggi Alberi binari Teoria Esercizi Esercizi per casa Saluti Esercizio 1 per casa Scrivere una funzione palindroma(s)
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio 6 aprile 2016 1 Teorema di Kleene 2 3 o 1 o 3 o 8 Teorema di Kleene Vale la seguente equivalenza: L 3 L FSL L REG Dimostrazione.
Teoria dell informazione
Corso di Laurea a Distanza in Ingegneria Elettrica Corso di Comunicazioni Elettriche Teoria dell informazione A.A. 2008-09 Alberto Perotti DELEN-DAUIN Modello di sistema di comunicazione Il modello di
METODI DELLA RICERCA OPERATIVA
Università degli Studi di Cagliari FACOLTA' DI INGEGNERIA CORSO DI METODI DELLA RICERCA OPERATIVA Dott.ing. Massimo Di Francesco ([email protected]) i i Dott.ing. Maria Ilaria Lunesu ([email protected])
Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa
Alberi di copertura Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo, Pisa [email protected] M. Passacantando TFA 0/ - Corso di Ricerca Operativa Università di Pisa / 9 Definizioni
La codifica digitale
La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore
Generazione di una mesh rettangolare
Generazione di una mesh rettangolare asse y Lunghezza F2 (x0,y0) Lunghezza F1 asse x Sia dato un dominio rettangolare di base F1 e altezza F2, costruito a partire dal punto indicato come (X0, Y 0). 1 Vogliamo
Possibile applicazione
p. 1/4 Assegnamento Siano dati due insiemi A e B entrambi di cardinalità n. Ad ogni coppia (a i,b j ) A B è associato un valore d ij 0 che misura la "incompatibilità" tra a i e b j, anche interpretabile
2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
. Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano .. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t,
Esercitazioni di Algoritmi e Strutture Dati
Esercitazioni di Algoritmi e Strutture Dati III esercitazione, 17/03/2016 Tong Liu 1 ESERCIZIO PRECEDENTE Es 2.5, Il rango di un elemento di una lista di interi é la somma degli elementi successivi piú
Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione
Grammatiche Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Esempio dei numeri interi Si consideri il linguaggio
Esercitazione 3. Heapsort
Esercitazione Heapsort Heapsort Algoritmo di ordinamento che utilizza una struttura dati detta heap per la gestione delle informazioni Tempo di esecuzione O(n lg n) Heap (binario) = struttura dati composta
Algoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
Un ripasso di aritmetica: Conversione dalla base 10 alla base 2
Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo: c m c m-1... c 1 c 0 (le c i sono cifre
2.2 Alberi di supporto di costo ottimo
. Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) protocolli reti IP memorizzazione compatta di
Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L
Alberi binari di ricerca
Alberi binari di ricerca Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro
Pumping lemma per i linguaggi Context-free
Pumping lemma per i linguaggi Context-free Sia L un linguaggio context-free. E possibile determinare una costante k, dipendente da L, tale che qualunque stringa z! L con z > k si può esprimere come z=
2) Codici univocamente decifrabili e codici a prefisso.
Argomenti della Lezione ) Codici di sorgente 2) Codici univocamente decifrabili e codici a prefisso. 3) Disuguaglianza di Kraft 4) Primo Teorema di Shannon 5) Codifica di Huffman Codifica di sorgente Il
Algoritmi di Ricerca
Algoritmi e Strutture Dati Autunno 01 Algoritmi di Ricerca Dip. Informatica ed Appl. Prof. G. Persiano Università di Salerno 1 Ricerca esaustiva 1 2 Backtrack 3 2.1 Backtrack per enumerazione......................................
Codifica di Huffman e Lempel-Ziv-Welch A L B E R T O B E L U S S I A N N O A C C A D E M I C O /
Codifica di Huffman e Lempel-Ziv-Welch 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 0 / 2 0 1 1 Tipi di compressione Senza perdita (lossless): permettono di ricostruire perfettamente
Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
I Tipi di Dato Astratto
I Tipi di Dato Astratto Sommario Cosa sono le Strutture Dati Astratte? Le strutture dati Le operazioni Come scegliere fra varie implementazioni? Quale è la questione? Come organizzare (strutturare) i dati
P (F E) = P (E) P (F E) = = 25
Regola del prodotto Conoscete la definizione di probabilità condizionata. Definizione 1. Siano E e F due eventi di uno spazio campionario S. Supponiamo P (F ) > 0. La probabilità condizionata dell evento
Introduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
Teoria della Calcolabilità!
Teoria della Calcolabilità!! Si occupa delle questioni fondamentali circa la potenza e le limitazioni dei sistemi di calcolo.!! L'origine risale alla prima metà del ventesimo secolo, quando i logici matematici
Foglio Elettronico Lezione 1
- Introduzione - Celle e riferimenti - Formule - Approfondimenti - Funzioni logiche Sommario Introduzione - Foglio elettronico o foglio di calcolo - Cos'è? Strumento per raccogliere dati organizzati in
