Un algoritmo per la compressione di immagini senza perdita

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Un algoritmo per la compressione di immagini senza perdita"

Transcript

1 Università degli studi di Firenze Facoltà di scienze matematiche, fisiche e naturali Corso di laurea in Informatica Tesi di laurea Un algoritmo per la compressione di immagini senza perdita Candidato Stefano Brocchi Relatore Prof. Elena Barcucci Anno accademico 2004/ aprile 2006

2 Indice Introduzione 7 1 La compressione Introduzione alla compressione Il problema della compressione Entropia ed ottimalità secondo Shannon Rappresentazione e compressione di un immagine Tecniche di compressione Run length encoding Codifiche entropiche: alberi di Huffman e codifica aritmetica Lempel Ziv Welch e sue evoluzioni Prediction by partial matching Burrows Wheeler transform Formati compressi esistenti Zip, rar e 7z GIF e PNG Jpeg e sue evoluzioni Il formato file Funzionamento dell algoritmo Panoramica dell algoritmo Descrizione dei filtri utilizzati Schema di funzionamento Uso di matrici di bit Rappresentazione e codifica a formato fisso Codifica in domini finiti Codifica a formato variabile Codifica tramite alberi di Huffman Uso degli alberi di Huffman Codifica degli alberi di Huffman Codifica di strati tramite RLE ed alberi di Huffman Uso e codifica di poliomini Codifica di poliomini Codifica di strati tramite poliomini Uso e codifica dei filtri Codifica dei filtri selezionati Codifica della mappa di valori

3 INDICE Codifica delle matrici di bit compresse Codifica di strati e intestazione Codifica del file: intestazione e composizione L algoritmo di codifica Scelta dei filtri Criteri di ottimalità Scelta della riassegnazione dei valori Codifica degli strati Scelta del metodo di compressione ottimale Scelta del poliomino ottimale Gestione degli alberi di Huffman Realizzazione dell algoritmo Progettazione e descrizione delle classi Ottimizzazione dei tempi Requisiti di memoria Una funzionalità aggiuntiva: il filtro lossy Presentazione del programma e suo utilizzo Sperimentazione Presentazione del campione di immagini Criteri di scelta del campione di immagini Descrizione delle caratteristiche salienti delle immagini Risultati della sperimentazione Confronto con altri formati file esistenti Tempi impiegati Risultati della compressione lossy Conclusioni della sperimentazione Analisi dei risultati ottenuti Possibili evoluzioni dell algoritmo Conclusioni 115 Bibliografia 117 Appendice: un esempio di esecuzione dell algoritmo 118

4 Elenco delle figure 1.1 Esempio di raggruppamento dell entropia Un albero di Huffman Esempio di scalamento di tipo E Esempio di scalamento di tipo E Esempio di scalamento di tipo E Configurazione iniziale della BWT BWT: Matrice delle rotazioni cicliche ordinate Output della Burrows Wheeler transform Inversione della BWT: calcolo del vettore dei primi caratteri Calcolo del vettore dei predecessori nell inversione della BWT Ricostruzione finale del messaggio iniziale della BWT Esempio di dithering Punti utilizzati nel filtraggio PNG Fasi della compressione Fasi della decompressione Fase di filtraggio Fase di scomposizione Fase di compressione degli strati Punti utilizzati per il filtraggio Schema del meccanismo di compressione Schema del meccanismo di decompressione Esempio di ordine di visita standard Esempio di ordine di visita a zigzag Un secondo esempio di ordine di visita standard Un secondo esempio ordine di visita a zigzag Codifica tramite RLE ed Huffman con ordine di visita standard Codifica tramite RLE ed Huffman con ordine di visita a zigzag Scrittura delle dimensioni di un poliomino Lettura delle dimensioni di un poliomino Rotazione di un poliomino Codifica di un poliomino, situazione iniziale Codifica di un poliomino, scrittura punti di contatto Codifica di un poliomino, primo passo Codifica di un poliomino, secondo passo Codifica di un poliomino, terzo passo Codifica di un poliomino, quarto passo

5 ELENCO DELLE FIGURE Codifica di un poliomino, quinto passo Codifica di un poliomino, sesto passo Codifica di un poliomino, settimo passo Codifica di un poliomino, ottavo passo Codifica di un poliomino, nono passo Codifica di un poliomino, decimo passo Strato da codificare tramite poliomini, situazione iniziale Codifica di uno strato tramite poliomini, primo passo Codifica di uno strato tramite poliomini, secondo passo Codifica di uno strato tramite poliomini, terzo passo Codifica di uno strato tramite poliomini, quarto passo Codifica di uno strato tramite poliomini, quinto passo Codifica di uno strato tramite poliomini, sesto passo Esempio di numerazione delle zone di filtraggio Potatura di un albero di Huffman Schema delle classi Lenna Lenna: scomposizione per colore Lenna: particolare Lenna: particolare scomposto per colore Lenna: valori numerici rappresentanti il particolare Lenna: filtraggio del particolare Lenna: filtraggio per colore del particolare Visualizzazione per colori di Lenna dopo il filtraggio Visualizzazione per colori di Lenna dopo il filtraggio per colore Strati per il colore blu Strati per il colore verde Strati per il colore rosso

6 Elenco delle tabelle 1.1 Esempio di distribuzione di probabilità dei simboli Codifica aritmetica di ADBAECD con frequenza date Tabella di verità dello xor Corrispondenza fra matrici di bit e di byte Risultato di alcun scritture a formato fisso Codifica nel dominio finito [0, 6[ Codifica di vettori con limiti (2,3,2) Codifica a formato variabile con 0 bit di base Codifica a formato variabile con 2 bit di base Risultati della compressione Confronto dei risultati con altri formati Differenza di dimensioni relativa rispetto agli altri formati Risultati della compressione veloce Tempi di esecuzione Risultati della compressione con perdita di un bit Confronto della compressione con perdita con il formato jpeg Errori sulle previsioni dopo il filtraggio Entropia del particolare prima e dopo il filtraggio Entropia dell immagine prima e dopo il filtraggio Composizione del file compresso Composizione degli strati compressi tramite poliomini Composizione degli strati compressi tramite RLE ed Huffman

7 Introduzione Da sempre nell informatica è esistito il problema di rappresentare l informazione in modo conveniente. Allo stato di sviluppo tecnologico attuale è oramai chiaro che qualunque dato può essere rappresentato su di un calcolatore, sia esso testo, suono, immagine o qualsiasi altra forma di informazione si possa pensare. Tali dati possono essere tuttavia ingombranti e riempire rapidamente lo spazio a disposizione, o saturare velocemente un canale di comunicazione. Sebbene le capacità delle memorie e delle reti crescano esponenzialmente con il passare del tempo, altrettanto velocemente salgono le aspettative degli utenti nei confronti di quello che si può fare con un dispositivo elettronico. Con la diffusione del compact disc la musica ad alta qualità è diventata alla portata di tutti; la successiva invenzione del dvd sta causando il passaggio dall analogico al digitale per quanto riguarda il video. Allo stesso tempo la combinazione del processo di miniaturizzazione e del miglioramento della compressione di dati audio ha reso possibile la creazione di dispositivi per la memorizzazione e la riproduzione di musica sempre più piccoli. Analogamente l ampliamento delle velocità delle reti unito ad un efficiente compressione video permette di visualizzare film o videoconferenze trasmessi in tempo reale. Per questo ora più che mai la compressione di dati è uno dei problemi più studiati e più interessanti che si possa presentare nel mondo dell informatica. Questa tesi si occupa di compressione di immagini senza perdita di dati. Utilizzando un misto di tecniche già note e di idee sviluppate in questo lavoro, è stato creato un nuovo algoritmo per codificare immagini in un formato compatto in modo da ottimizzare memoria occupata e tempi di trasmissione. Già dalla sua prima versione qui presentata, l algoritmo produce un livello di compressione paragonabile, se non migliore, ad altri formati compressi di largo utilizzo. Nella prima parte di questo lavoro innanzitutto verrà introdotto il problema della compressione, sia da un punto di vista generico che nei confronti delle immagini. Saranno esposti i principali algoritmi finora sviluppati, alcuni dei quali sono stati utilizzati nel lavoro sviluppato. Infine saranno descritti alcuni dei formati compressi attualmente in uso, con brevi cenni sulle funzionalità che questi offrono. Nella seconda parte sarà descritto il formato file sviluppato. Inizialmente verrà fatta una panoramica sul funzionamento dell algoritmo, descrivendo e motivando brevemente i procedimenti utilizzati. Quindi si procederà nel dettaglio dal particolare al generale, descrivendo innanzitutto le strutture dati utilizzate e la loro gestione, mostrando come queste vengano composte per codificare oggetti complessi ed infine 7

8 INTRODUZIONE 8 definendo come tutto venga unito in un unico file compresso. La lettura di questa parte rende possibile a pieno titolo l implementazione di un ottimo decompressore per un file generato dall algoritmo proposto; volendo ricreare invece l algoritmo di compressione in modo efficiente occorre fare delle accurate scelte in fase di codifica, descritte nella prossima parte. Nella terza parte sarà descritto l algoritmo di codifica proposto. Saranno discussi i criteri usati per cercare di raggiungere l ottimalità, ed i compromessi fatti per ottenere un buon tempo di esecuzione. Verrà descritta quindi la realizzazione del programma che implementa l algoritmo, per quanto riguarda progettazione, stesura ed ottimizzazione del codice presentando infine l intera applicazione generata. Nella quarta parte verranno esposti i risultati della sperimentazione eseguita. Il programma verrà messo a confronto con altri algoritmi su di un campione di immagini vario per quanto riguarda origine, dimensioni e caratteristiche qualitative. Verrà fatta una breve analisi dei risultati ottenuti con particolare riguardo per i punti di forza o di debolezza dei vari formati. In conclusione, verranno presentate varie proposte per quanto riguarda i possibili sviluppi futuri dell algoritmo creato.

9 Capitolo 1 La compressione 1.1 Introduzione alla compressione In questa sezione si effettuerà un primo approccio alla compressione. Si vedranno prima delle osservazioni su cosa si intende per compressione e sulle ipotesi che rendono questa operazione possibile. Quindi si procederà esaminando la teoria di Shannon sulla codifica che definisce un limite ultimo alla comprimibilità e suggerisce un metodo su come avvicinarsi più possibile a tale quantità. Infine per definire il dominio dell algoritmo sviluppato si definirà come venga realizzata la rappresentazione di un immagine su di un calcolatore, e come tali dati rispecchino determinate ipotesi di regolarità necessarie alla compressione Il problema della compressione Poniamo di voler trovare un modo alternativo di codificare un generico messaggio M in modo più compatto. Consideriamo M come una sequenza di simboli appartenenti ad un insieme finito, detto alfabeto. Nel caso in cui M sia rappresentato su di un calcolatore, è chiaro che possa essere rappresentato con una serie di simboli binari, in quanto questo è il modo in cui viene fisicamente memorizzato. Spesso tuttavia è più sensato pensare ad un alfabeto più ampio: per un messaggio di testo tale alfabeto potrebbe essere a, b, c,... z; su di un calcolatore si considerano spesso simboli di un byte o di una parola (4 byte). Per comprimere il messaggio dobbiamo applicare una funzione biunivoca che associ un generico M ad un altro messaggio M tale che il risultato sia rappresentabile da una sequenza di simboli più breve dell originale. Tuttavia la condizione di invertibilità di tale funzione, indispensabile per garantire una corretta ricostruzione del messaggio in fase di decompressione, rende l esistenza di una funzione simile impossibile. Considerando infatti l insieme dei messaggi M di k simboli e l insieme dei messaggi M formati da k < k caratteri, il primo di questi ha chiaramente una cardinalità maggiore del secondo, rendendo impossibile una corrispondenza uno a uno. Dunque quello che ci dobbiamo aspettare è che solo una parte dei possibili messaggi M possa subire una diminuzione di volume grazie ad un operazione di compressione, mentre gli altri resteranno inalterati o addirittura cresceranno in dimensioni. Fortunatamente, è proprio quella piccola parte che solitamente contiene i messaggi che ci interessano. I dati da codificare infatti solitamente contengono numerose ridondanze, regolarità o altri dati in eccesso che si 9

10 CAPITOLO 1. LA COMPRESSIONE 10 possono eliminare con un buon algoritmo. Qualsiasi funzione di compressione per funzionare si deve quindi basare inevitabilmente su queste caratteristiche, e per non perdere di vista quali dati in ingresso ci aspettiamo di poter comprimere e quali no è importante tenere sempre presenti le ipotesi sulle quali ci si basa. Un altra semplice conseguenza di quanto detto è che sarebbe del tutto inutile tentare di ridurre ulteriormente un messaggio già compresso, in quanto dopo la prima applicazione della funzione di compressione le informazioni ridondanti sarebbero già state rimosse ed il messaggio compresso presenterebbe caratteristiche molto simili ad una serie di simboli del tutto casuali e quindi incomprimibili. Nel prossimo capitolo vedremo una definizione formale di quanto un qualsiasi messaggio possa essere compresso. Quanto detto è riferito alla compressione senza perdita di dati, detta anche lossless; questo significa che dopo aver applicato la funzione di decompressione su M riotteniamo esattamente M. Esiste un altro tipo di algoritmi detta lossy che disperde dei dati del messaggio ottenendo, dopo la decompressione, un messaggio M diverso ma in qualche modo simile ad M a vantaggio di un livello di compressione superiore. Tale somiglianza può essere misurata in molti modi; essendo tuttavia la compressione lossy utilizzata per dati che coinvolgono direttamente sensi umani come audio o video, uno degli approcci più interessanti è quello di cercare di misurare quanto l errore introdotto viene percepito da un osservatore umano. Facendo un e- sempio, nella compressione lossy mp3, usata per file audio, spesso vengono codificate più accuratamente le frequenze medie e viene utilizzata un approssimazione meno precisa per le frequenze molto basse o molto alte dove eventuali errori o imperfezioni nel suono vengono percepite più difficilmente. La compressione con perdita deve essere chiaramente applicata ad un tipo di dato di cui sappiamo di poter trascurare delle informazioni, e sarebbe inapplicabile a messaggi dove si rischia di perdere informazioni critiche come file di testo o programmi. Nonostante il largo utilizzo delle tecniche lossy, essendo l algoritmo da me proposto senza perdita, questa trattazione sulla compressione considererà principalmente tecniche lossless Entropia ed ottimalità secondo Shannon Approdiamo ora ad un approccio formale per il problema della compressione e dei suoi limiti. Uno dei primi ad occuparsene fu Claude Elwood Shannon, che con il suo lavoro [Sha48] pose le basi della sua teoria della codifica, tuttora un caposaldo per chiunque si interessi di compressione. Nella sua pubblicazione, Shannon aveva in realtà in mente il problema di trasmettere convenientemente dei simboli su di un canale; il problema della compressione è tuttavia del tutto analogo ed i risultati ottenuti regolano entrambi i casi. Nella sua teoria Shannon cerca una misura della quantità detta entropia. In generale, questo termine rappresenta il grado di disordine di un qualcosa; in termodinamica per esempio quantifica la dispersione di energia nell universo. Nella teoria dell informazione è misura inversa della comprimibilità di un messaggio, ed è in funzione delle probabilità di comparire dei simboli dell alfabeto considerato. Chiamando la probabilità dell i-esimo simbolo p i e la cardinalità dell insieme di simboli n, l entropia deve essere quindi funzione degli argomenti p 1... p n compresi tra zero ed uno tali che la loro somma sia uno. Si presuppone inoltre che la sequenza di simboli che forma il messaggio sia ergodica; evitando una definizione rigorosamente matematica, per i nostri scopi definiremo ergodica una

11 CAPITOLO 1. LA COMPRESSIONE 11 sequenza dove ogni sottosequenza abbastanza lunga di caratteri goda delle stesse proprietà statistiche. Shannon impone che la funzione dell entropia H debba avere le seguenti proprietà: 1. Continuità: H deve dipendere con continuità dai suoi argomenti p i 2. Se gli argomenti valgono tutti 1/n, l entropia deve essere una funzione monotona crescente in n. Questo perché se i simboli compaiono con uguale probabilità, un incremento del loro numero porta ad avere un messaggio maggiormente caotico. 3. Se dei simboli vengono raggruppati in un gruppo B, l entropia è data da H(p 1... p n ) = H(p i... p B ) + p(b)h((p j B)...) i / B j B Dove nel primo addendo del membro destro dell equazione l entropia ha come argomenti la probabilità del gruppo p B e tutti i p i tali che i / B e nel secondo addendo la funzione H è applicata a tutti i p j B tali che j B. Quest ultima regola definisce come si deve comportare la funzione se la probabilità di un simbolo è vista come probabilità di scegliere un gruppo che lo contenga moltiplicata la probabilità che, una volta che il suo gruppo è stato selezionato, venga scelto il simbolo stesso. Detta anche proprietà di raggruppamento, questa caratteristica assicura coerenza alla funzione, garantendo che il valore di H non cambi applicando viste diverse su dati uguali. Shannon dà come esempio della proprietà di raggruppamento la figura 1.1 Figura 1.1: Esempio di raggruppamento dell entropia Presupponendo che i simboli siano indipendenti l uno dall altro, l unica famiglia di funzioni che soddisfa le precedenti è rappresentata dalla formula K n log 2 p i, K > 0 i=1 Dove k è un fattore di proporzionalità che determina l unità di misura, e viene per convenzione imposto ad uno. Shannon ha dimostrato che tale quantità limita in

12 CAPITOLO 1. LA COMPRESSIONE 12 modo rigido la compressione che è possibile ottenere. Infatti, un messaggio non è mai comprimibile sotto il limite di H bit per carattere; per questo l entropia è talvolta misurata in bit per simbolo. Con l ipotesi dell indipendenza statistica fra i simboli, abbiamo realizzato quello che si dice modello di ordine uno. Se consideriamo inoltre che i caratteri siano equiprobabili otteniamo il modello di ordine zero; tale modello rispecchia l assoluta casualità ed è regolato dalla formula H = log 2 n, il valore massimo dell entropia per ogni n fissato. La formula ottenuta non è che un caso particolare della precedente, ed in generale ogni modello di un determinato ordine comprende tutti quelli di ordine minore. Possiamo ottenere modelli di ordine maggiore considerando la correlazione tra i vari simboli. Nel modello di ordine due si tiene conto del legame che ci può essere fra caratteri adiacenti, sostituendo a p i una probabilità in dipendenza dal suo contesto; la formula dell entropia sarà la seguente: n p j j=1 i=1 n p i j log 2 p i j In generale, possiamo ottenere un generico modello di ordine n considerando la probabilità di p i in dipendenza da altri n 1 caratteri che lo precedono. Al crescere dell ordine del modello, teniamo conto di maggiori informazioni, e troveremo quindi valori dell entropia decrescenti. Il vero valore dell entropia di un messaggio è dato dal modello generale ottenuto considerando il limite per di un modello di ordine n. Tale quantità è chiaramente incalcolabile; quello che si può fare è calcolare l entropia per un modello che la approssimi sufficientemente bene. In messaggi reali è in effetti difficile limitare la quantità di caratteri di un contesto che ci danno informazioni sul simbolo successivo, ma è altrettanto vero che il contributo dato dai simboli più distanti solitamente è quasi nullo e che quindi l ignorarli non provoca gravi errori. Una grande utilità della teoria di Shannon è che questa ci suggerisce il numero di bit da utilizzare per codificare un determinato simbolo. Un messaggio viene infatti compresso alla lunghezza minima di H bit per carattere utilizzando esattamente log 2 p i bit per la codifica di ogni simbolo. I principali problemi da affrontare per arrivare all ottimalità sono quindi due: 1. Nella maggior parte dei casi, la quantità log 2 p i non è un numero intero. Ci troviamo di fronte alla difficoltà di dover allocare un numero frazionario di bit per simbolo. Una prima soluzione è quella di usare un metodo che costruisca in qualche modo un insieme di caratteri tali che ogni valore log 2 p i sia un numero elevato minimizzando così l errore relativo fatto arrotondandolo all intero più vicino. Shannon per esempio suggerisce di minimizzare l errore raggruppando i simboli dell alfabeto a gruppi di n ottenendo una distribuzione di probabilità più granulare con possibilità di apparire minore per ogni ennupla di caratteri; tale algoritmo non può essere applicato tuttavia a grandi gruppi in quanto la sua complessità è esponenziale. Un altro metodo, rappresentato dalla codifica aritmetica, riesce effettivamente ad utilizzare un numero non intero di bit per simbolo, anche se al costo di una complessità computazionale piuttosto alta

13 CAPITOLO 1. LA COMPRESSIONE 13 in fase di codifica e decodifica. Le tecniche per l elaborazione di una codifica ottimale saranno discusse del dettaglio nei prossimi capitoli. 2. La quantità p i è difficile da calcolare in quanto al crescere dell ordine del modello la complessità del calcolo delle probabilità dei simboli sale in modo esponenziale. Solitamente questo problema è di più difficile risoluzione del precedente; un algoritmo capace di sfruttare anche modelli di ordine elevato per calcolare queste quantità è il PPM, che verrà descritto in seguito Rappresentazione e compressione di un immagine Prima di procedere dobbiamo soffermarci per analizzare come quanto detto si rifletta sul soggetto in questione: le immagini. Vediamo innanzitutto come queste vengano rappresentate su di un supporto digitale. Se l immagine è ottenuta tramite un segnale reale come nel caso di una macchina fotografica o uno scanner innanzitutto viene eseguito un campionamento uniforme sui dati in ingresso ed una quantizzazione dei valori ottenuti. Il numero dei campioni, così come la granularità della discretizzazione determinante il massimo numero di colori utilizzati, influenzano la qualità visiva dell immagine al momento della ricostruzione. Nel caso di immagini con un sufficiente numero di campioni e di colori, in fase di rappresentazione su di un supporto come uno schermo un osservatore percepisce un senso di continuità e la natura discontinua dell informazione è del tutto occultata. Tutti i colori visibili possono venire ottenuti mescolando in diverse proporzioni blu, rosso e verde, e dunque ogni campione in realtà è suddiviso in tre sottocampioni ognuno riferito ad uno di questi tre colori. Ogni punto rappresentato è anche detto Pixel (picture element). Il formato immagine di base, dove i campioni vengono memorizzati senza alcuna elaborazione, è il BMP. Tale formato contiene innanzitutto una breve intestazione che specifica alcune delle informazioni di base, tra cui la risoluzione orizzontale e verticale (definendo così la griglia dei campioni) ed il numero dei colori utilizzati nell immagine. Il caso di cui ci si occuperà in questo lavoro è quello dove ogni campione è formato da 24 bit, otto per ogni colore primario. Altre funzionalità del formato consentono di utilizzare solo 256 o 16 colori dei 2 24 disponibili, definendo nell intestazione un vettore di colori utilizzati detto tavolozza e mettendo al posto dei campioni un riferimento a questa lista. Esistono molte altre informazioni che possono essere considerate parte di un immagine, supportate da altri tipi di file. Per fare un paio di esempi, formati intesi per l utilizzo in internet supportano la presenza di un ulteriore valore per ogni punto rappresentante la quantità di trasparenza del pixel nel caso l immagine debba essere sovrapposta ad un altro contesto come lo sfondo di una pagina web. Altri formati utilizzati da programmi di grafica permettono di memorizzare un immagine come sovrapposizione di più immagini stratificate in modo da facilitarne la lavorazione. In questo lavoro informazioni ausiliarie come queste saranno tralasciate e saranno trattati esclusivamente i dati di base. A questo punto ci dobbiamo chiedere in che modo i dati in un immagine siano correlati fra loro. Nulla vieta che possa esistere un immagine dove ogni punto sia

14 CAPITOLO 1. LA COMPRESSIONE 14 totalmente scorrelato dagli altri; è tuttavia difficile immaginare che interesse questa possa rivestire. In realtà le immagini che solitamente vogliamo rappresentare contengono un insieme di soggetti di numero relativamente piccolo rispetto al numero dei pixel, ed per ognuno di essi vi sono solitamente zone che variano abbastanza poco nello spettro dei colori e presentano un forte effetto di continuità. In effetti si evince dai risultati sperimentali che ogni campione è fortemente connesso agli altri, ma dare una quantificazione matematica di questo è molto difficile proprio perché entra in gioco il fattore umano: non possiamo quantificare con precisione la regolarità mediamente presente nelle immagini che per noi rappresentano potenzialmente un significato. Possiamo trarre tuttavia a livello empirico una conclusione interessante: osservando che punti adiacenti hanno spesso colori simili, volendo costruire un modello di previsione per un determinato campione è conveniente considerare non solo i campioni immediatamente precedenti ma anche gli altri ad esso adiacenti nella rappresentazione a pixel in entrambe le direzioni tenendo così in considerazione la natura bidimensionale del dato. Una tecnica simile viene utilizzata nell algoritmo di compressione del formato PNG oltre che in questo lavoro. 1.2 Tecniche di compressione In questa sezione si vedranno varie tecniche di compressione esistenti. Si inizierà con il Run Length Encoding, uno degli algoritmi più semplici, e si procederà con le codifiche tramite alberi di Huffman ed aritmetica tese a raggiungere l ottimalità definita dall entropia di Shannon. Quindi si descriverà l algoritmo Lempel Ziv Welch ed una sua popolare variante; queste tecniche sono tuttora fra le più utilizzate e supportate nella compressione di dati. Infine verranno descritti due algoritmi più recenti che si stanno imponendo per la loro efficacia: la Burrows Wheeler Transform, una trasformazione che permette di riorganizzare l informazione in modo da poter effettuare una compressione efficiente anche con l applicazione di tecniche molto semplici, ed il Prediction by Parzial Matching, un algoritmo che fa uso di modelli di ordine elevato per la stima delle probabilità dei simboli del messaggio Run length encoding Una delle più semplici tecniche di compressione è la codifica di sequenze uguali (Run Length Encoding, RLE). Questo algoritmo si basa sull idea che una sequenza di simboli consecutivi dello stesso tipo può essere codificata in modo compatto memorizzando solo il carattere e la lunghezza della sequenza. Il RLE è il modo più naturale per codificare dati binari dove sequenze di uni e di zeri si alternano raramente, e per questo è nato per la codifica dei dati trasmessi dai fax. In un documento stampato da elaborare infatti è naturale aspettarsi grandi zone di solo bianco intervallate da brevi zone nere in corrispondenza dei caratteri, e dopo il campionamento questo significa esattamente lunghe sequenze di un simbolo (per convenzione, 0 per il bianco) o dell altro (1 per il nero). In tal caso questa tecnica restituirà il numero di zeri consecutivi alternato con il numero di uno. Per consentire la decompressione a questo punto occorre definire una codifica univocamente decifrabile per i valori ottenuti. Una metodologia precisa per fare ciò sarà data in seguito; per avere un idea del problema basti notare che scrivendo sequenzialmente dei numeri su un

15 CAPITOLO 1. LA COMPRESSIONE 15 canale di comunicazione o su di un dispositivo di memorizzazione un osservatore non ha modo di sapere quando un numero è terminato e quando inizia il successivo (ad esempio, la sequenza potrebbe rappresentare 87 e 210 così come 872 e 10). La soluzione più semplice da adottare è quella di scrivere le lunghezze delle sequenze con un numero di bit determinato a priori. In questo caso, allocando n bit per ogni numero, si possono rappresentare quantità nel campo n 1; nel caso di sequenze di lunghezza maggiore sarà necessario spezzare il numero in due valori distinti. Per specificare se la sequenza è di uno o di zeri si può aggiungere un bit in testa o in fondo al codice per specificare il tipo di simbolo, o semplicemente imporre implicitamente che le sequenze dei due valori si alternino. In questo caso le ipotesi su cui ci si basa per la compressione sono facilmente individuabili: considerando infatti di aver allocato n bit per numero ottenuto, per ogni sequenza di k simboli consecutivi con k > n ci sarà un guadagno di k n bit (trascuriamo il caso k 2 n ), per k < n la quantità n k rappresenterà invece una perdita. In alternativa, per una compressione migliore nulla ci impedisce di codificare i valori di output dell algoritmo con un altra tecnica di compressione come per esempio tramite alberi di Huffman. Questo è un esempio di come spesso le tecniche di compressione raggiungano le migliori prestazioni mettendo in serie vari algoritmi. Il RLE è tuttora utilizzato su di alcuni dispositivi poiché la sua semplicità combinata con l utilizzo di codici a lunghezza fissa lo rendono molto semplice da realizzare anche con un piccolo circuito hardware ed il processo di decompressione è estremamente rapido. Oltre alla messa in serie con un altro codificatore, gli sviluppi di questa tecnica sono vari, e sono tesi soprattutto a rendere possibile una buona compressione di dati anche non binari. In questi casi uno dei problemi principali da risolvere è quello di limitare l aumento di volume del dato causato da zone irregolari senza sequenze di simboli consecutivi, ed una delle soluzioni proposte è quella di inserire dei caratteri di controllo che specifichino che un determinato numero di byte che seguono non devono venire codificati. Nonostante le migliorie, il RLE difficilmente viene applicato direttamente ai dati da comprimere, ma in alcuni casi è utile in combinazione con altre tecniche Codifiche entropiche: alberi di Huffman e codifica aritmetica Grazie alla teoria di Shannon dati una serie di simboli con determinate frequenze siamo in grado di determinare il numero di bit da utilizzare per ogni carattere. Gli alberi di Huffman sono una struttura ideata per elaborare una codifica univocamente decifrabile dove ad ogni carattere viene associato un codice di tale lunghezza ottimale. Innanzitutto vediamo una proprietà che ci garantisce una corretta decodificabilità di un messaggio: Proprietà del prefisso: Una codifica gode di questa proprietà se nessun codice assegnato è prefisso di un altro codice. È chiaro che una codifica così composta permette in fase di decompressione di determinare un simbolo appena il suo codice è stato letto. Il modo più semplice per costruirne una con questa proprietà è quella di costruire un trie binario, un particolare tipo di albero binario dove soltanto le foglie contengono i valori delle chiavi.

16 CAPITOLO 1. LA COMPRESSIONE 16 Associando a questo punto i valori da codificare alle foglie ed i bit zero ed uno ai due archi uscenti da ogni nodo, si definisce come codifica di un determinato simbolo la sequenza di bit da percorrere per arrivare dalla radice al carattere interessato. È chiaro che una codifica così definita soddisfa la proprietà del prefisso, e si può considerare il trie come un albero decisionale da usare in fase di decodifica. Resta il problema di trovare un trie ottimale nei confronti delle nostre ipotesi. Questo può esser fatto grazie al seguente algoritmo dovuto ad Huffman e presentato in [Huff52]. La formulazione originale dell autore è del tutto equivalente a questa dal punto di vista del risultato, ma nel documento originale è espressa in modo diverso senza fare uso di strutture ad albero. L algoritmo di seguito tuttavia rispecchia maggiormente la realizzazione di questa tecnica su di un calcolatore. Consideriamo di avere un insieme di simboli da codificare, di cui conosciamo le frequenze nel messaggio da comprimere. I passi da eseguire sono 1. Creare un insieme di alberi formati da un unica foglia contente ognuna uno dei simboli. Ad ogni albero si associa la frequenza del carattere stesso. 2. Finché l insieme contiene più di un albero, rimuovere i due alberi con frequenza associata minore, ed aggiungere un albero che abbia come figli i due elementi rimossi, associandogli la somma delle due frequenze. Quando l algoritmo termina, l unico albero rimasto nell insieme definisce la codifica ottimale a bit interi per la situazione delineata. Tale albero è detto albero di Huffman. Da notare che per permettere la decodifica da parte di un decompressore è necessario memorizzare l albero stesso in testa al messaggio. F = Codifica generata F = 7 V = 1 F = 2 0 F = 5 1 F = 3 V = 4 Simbolo Codice F = 1 F = 1 V = 2 V = 3 Figura 1.2: Un albero di Huffman Uno dei problemi della codifica tramite alberi di Huffman è la necessità di conoscere a priori le frequenze dei simboli. In alcuni casi questa non è desiderabile, in quanto alcuni algoritmi si pongono il problema di effettuare la compressione senza eseguire una doppia passata sui dati per motivi di efficienza. In altri casi avere tale informazione non è proprio possibile: nell eventualità per esempio di voler comprimere dati trasmessi da un modem il flusso di dati è indeterminatamente lungo e

17 CAPITOLO 1. LA COMPRESSIONE 17 non è mai interamente a disposizione. Sono state proposte diverse soluzioni a questi problemi, tra cui: 1. Utilizzare un albero di Huffman relativo agli ultimi dati memorizzati, e ricrearne uno nuovo periodicamente. I criteri per le ricreazione possono essere vari, da una suddivisione a blocchi (ex. cambiare albero ogni 100Kb di dati) al rilevamento di grandi variazioni delle frequenze del messaggio. 2. Utilizzare un albero di Huffman adattivo. Tali alberi sono stati proposti e sviluppati in seguito ai lavori di Huffman, ed operano tenendo conto delle variazioni di frequenza dei simboli ed effettuano delle rotazioni per adattarsi alla caratteristiche del dato in ingresso. In questo caso le trasformazioni dell albero sono ricostruibili in fase di decodifica utilizzando simmetricamente la stessa tecnica, e definendo una configurazione iniziale dell albero nell algoritmo non è necessario memorizzare alcuna informazione su questa struttura. Un vantaggio di entrambe le due tecniche sopra descritte è l adattività, la capacità di adattarsi a variazioni del dato in ingresso. Questo è una qualità molto importante nel caso in cui ci si trovi a trattare con dati le cui proprietà statistiche cambiano rapidamente e di cui non conosciamo le caratteristiche a priori. Un altro limite degli alberi di Huffman è la necessità di utilizzare un numero intero di bit per simbolo. Questo produce una codifica perfetta solo quando tutte le probabilità dei simboli sono potenze negative di due; in caso contrario la differenza tra il numero di bit da utilizzare e quello realmente utilizzato è misura della distanza dall ottimalità. Questo valore è solitamente molto piccolo quando il numero di simboli è sufficientemente alto ed ha una distribuzione abbastanza uniforme, e al contrario può diventare notevolmente grande quando esiste un simbolo con probabilità di comparire molto maggiore del 50%. Per avvicinarsi maggiormente all ottimalità si può utilizzare un altra tecnica detta codifica aritmetica. La codifica aritmetica è stata ideata per la prima volta da Elias in [El63] come pura teoria matematica, ed è stata sviluppata sul piano pratico da Rissanen in [Ris75] quasi in contemporanea con altri autori quali Pasco e Langdon. A portarla alla popolarità sono state tuttavia le trattazioni sviluppate da Witten, Neal, Cleary e Bell come [WNC87] o il successivo [BCW90]. Il suo obiettivo è quello di codificare ogni simbolo ottimalmente indipendentemente da quanti bit esso richieda, sia esso un numero intero o meno. Osserviamo innanzitutto che un modo alternativo di imporre che un simbolo deve essere codificato con log 2 p i bit è di decidere che quel simbolo deve coprire una parte pari a p i delle possibili codifiche. Prendiamo ad esempio un carattere con probabilità 25%. Shannon ci dice di codificare tale simbolo con 2 bit. Elaborando un qualsiasi codice con la proprietà del prefisso, notiamo che ciò vieta l assegnazione agli altri simboli di tutti i codici che iniziano con quei due bit, che sono appunto il 25% di tutti quelli possibili. Iniziamo innanzitutto vedendo la teoria riguardante la codifica aritmetica, per poi analizzare in seguito come questa possa effettivamente venir realizzata. Al primo passo partizioniamo il campo dei reali compresi tra zero ed uno, assegnando ad ogni

18 CAPITOLO 1. LA COMPRESSIONE 18 simbolo dell alfabeto un intervallo di ampiezza pari alla sua probabilità. Supponiamo ora di voler codificare l intera sequenza da comprimere con un unico numero reale. Dopo aver trovato i due estremi dell intervallo a e b relativo al primo simbolo del messaggio, imponiamo che il messaggio debba essere rappresentato con un numero compreso fra questi limiti, definenti quello che chiameremo intervallo di confidenza. Al momento della lettura del secondo simbolo partizioniamo anche questo spazio, assegnando nuovamente ad ogni simbolo un sottointervallo proporzionale alla sua frequenza. In dipendenza dal secondo simbolo, otterremo un nuovo intervallo di confidenza a e b. Iterando il procedimento, alla fine del messaggio possiamo memorizzare un numero reale che cada nell attuale intervallo rappresentante l intero messaggio. Conseguentemente alle osservazioni fatte precedentemente, il numero di bit necessario per la codifica di tale numero reale sarà ottimale nei confronti del limite entropico della comprimibilità. Nell esempio nelle tabelle 1.1 e 1.2 si potrebbe codificare la sequenza studiata con un qualsiasi numero nell intervallo [ , [. Per quanto riguarda la decodifica, sarà sufficiente partizionare l intervallo di confidenza inizializzato a in modo analogo al codificatore, e ad ogni passo verificare a quale zona appartenga il numero letto, suddividendo ulteriormente quindi l intervallo in modo analogo ed iterando. Simbolo Probabilità Intervallo assegnato in [0,1[ A 0.4 [0,0.4[ B 0.2 [0.4,0.6[ C 0.2 [0.6,0.8[ D 0.1 [0.8,0.9[ E 0.1 [0.9,1[ Tabella 1.1: Esempio di distribuzione di probabilità dei simboli Simbolo Intervallo, Intervallo, Ampiezza estremo sinistro estremo destro dell intervallo A D B A E C D Tabella 1.2: Codifica aritmetica di ADBAECD con frequenza date Ci sono molti problemi per la realizzabilità di questo algoritmo così come è descritto sopra. Primo fra tutti, già con pochi caratteri potremmo aver bisogno di un grande numero di cifre per distinguere i due estremi dell intervallo e questo diviene proibitivo anche utilizzando numeri ad alta precisione. Inoltre, utilizzando l aritmetica a virgola mobile di un calcolatore, oltre a rallentare notevolmente il procedimento, si può generare una perdita di informazioni dovuta all arrotondamento che potrebbe

19 CAPITOLO 1. LA COMPRESSIONE 19 rendere impossibile una corretta decodifica. Per aggirare questi problemi, la codifica aritmetica viene realizzata rappresentando gli estremi dell intervallo di confidenza con interi a 32 bit di cui solo i primi 31 bit verranno effettivamente utilizzati mentre l ultimo bit verrà lasciato libero per prevenire overflow durante le operazioni di somma. Si possono rappresentare così le prime 31 cifre binarie di un numero compreso tra zero ed uno; in altre parole si realizza un aritmetica a virgola fissa con 31 bit di mantissa. A questo punto il principale problema ancora da risolvere è l underflow, il rischio di ottenere un intervallo troppo piccolo che renda impossibile un ulteriore partizionamento. Per questo vengono utilizzate delle operazioni di scalamento: appena in fase di codifica si è sicuri di poter scrivere un bit, si manda questo risultato in output e l intervallo viene riadattato in modo da riferirsi solo ai bit successivi. Nel dettaglio, definendo come l ed r gli estremi sinistro e destro dell intervallo dopo la codifica di un simbolo ed m la rappresentazione di 0.5 nel nostro modello (in questo caso 2 30 ), le operazioni di scalamento sono: E1 Quando r è minore di m, sappiamo che il primo bit da restituire in output è uno zero. Memorizziamo questo output, e riadattiamo l intervallo nei confronti del numero ancora da codificare moltiplicando per due l ed r. Nel dettaglio delle implementazioni, a questo punto viene sommato uno ad r per tener conto di tutti i valori utilizzabili Scalamento di tipo e1: intervallo espanso da [0.2, 0.4[ a [0.4, 0.8[ Restituito in output il bit Per ogni espansione di tipo e3 eseguita immediatamente prima di questa, viene dato in output un altro bit pari ad uno. Figura 1.3: Esempio di scalamento di tipo E1 E2 Quando l è maggiore di m, per certo il primo bit del messaggio codificato dovrà essere un uno. Dopo aver restituito tale risultato, sottraiamo m da l e da r, ed aumentiamo l intervallo come nel punto precedente. Nella maggior parte dei casi queste due tecniche sarebbero sufficienti. Resta però da considerare il caso in cui il valore dell intervallo converga a m portando ad un underflow senza che nessuna delle due operazioni precedenti sia possibile. Per questo esiste una terza operazione di scalamento: E3 Quando l è maggiore del primo quarto dell intervallo 2 29 ed r è minore del terzo quarto ad entrambi viene sottratto il valore del primo quarto, e quindi si espande l intervallo come sopra. Non sapendo in che metà cada il risultato, l output del prossimo bit viene posticipato, ma il codificatore memorizza che è

20 CAPITOLO 1. LA COMPRESSIONE Scalamento di tipo e2: intervallo espanso da [0.6, 0.9[ a [0.2, 0.8[ Restituito in output il bit Per ogni espansione di tipo e3 eseguita immediatamente prima di questa, viene dato in output un altro bit pari a zero. Figura 1.4: Esempio di scalamento di tipo E2 stata effettuata un operazione di questo tipo. Si può dimostrare che al momento di eseguire uno scalamento di tipo E1 o E2 si determina che il risultato esatto da restituire è, rispettivamente, uno o zero. Dunque quando sono stati eseguiti n scalamenti di tipo E3, il primo scalamento successivo di diverso tipo restituirà n bit aggiuntivi del tipo appropriato Scalamento di tipo e3: intervallo espanso da [0.4, 0.7[ a [0.3,0.9[ Output del bit posticipato al primo scalamento di altro tipo successivo; tale bit sara 0 per uno scalamento di tipo e2 o 1 per uno scalamento di tipo e1 Figura 1.5: Esempio di scalamento di tipo E3 Ultimi accorgimenti usati nelle implementazioni sono l aggiunta di opportuni bit in coda al messaggio per garantire la decodificabilità di tutti i simboli e l uso di un carattere di fuga con probabilità minima per indicare la fine della sequenza compressa. Per quanto riguarda la decompressione si dovrà operare in modo del tutto simmetrico. Inizialmente dovranno venir letti 31 bit dal dato compresso e si dovrà determinare che intervallo, e quindi che simbolo, identifichi tale quantità. Quindi sarà sufficiente eseguire gli stessi scalamenti che sarebbero necessari in fase di codifica leggendo bit dove durante la compressione questi sono stati scritti e procedere fino ad incontrare il carattere di fine messaggio. Una caratteristica importante della codifica aritmetica è che permette di variare la distribuzione di probabilità tra un simbolo e l altro. Questo rende semplice la realizzazione in primo luogo di un modello adattivo dove le frequenze dei simboli vengono via via aggiornate. In seconda analisi, possiamo osservare che anche l utilizzo di un modello di ordine superiore può essere realizzata in modo molto naturale, semplicemente considerando ad ogni passo la distribuzione di probabilità di simboli nel contesto considerato. In entrambi i casi per garantire l esatta decompressione è

21 CAPITOLO 1. LA COMPRESSIONE 21 sufficiente che appena un simbolo viene osservato, sia il codificatore che il decodificatore aggiornino il proprio modello nello stesso modo. La scelta fra l utilizzo degli alberi di Huffman e la codifica aritmetica è molto discussa; è vero che quest ultima solitamente si avvicina maggiormente all ottimalità, ma coinvolge anche un numero maggiore di operazioni per la lettura e la scrittura di ogni simbolo, appesantendo così la complessità a scapito dei tempi di esecuzione. L opzione migliore deve essere determinata di caso in caso; in generale l utilizzo degli alberi di Huffman può dare risultati molto soddisfacenti soprattutto in contesti dove si riesce a tenere la distanza dall ottimalità sotto una soglia sufficientemente piccola Lempel Ziv Welch e sue evoluzioni Uno degli algoritmi di compressione più noti ed utilizzati è il Lempel Ziv Welch (LZW), dai nomi degli autori. Sviluppato inizialmente in un articolo di Lempel e Ziv [LZ77], l idea iniziale fu rivista e migliorata da Welch qualche anno più tardi in [Wel84]. Il LZW opera sostituendo a sequenze di caratteri ripetute dei codici numerici. L algoritmo fa uso di un buffer di caratteri da processare e di una struttura detta dizionario, formata da un insieme di coppie di stringhe e di numeri naturali rappresentanti i codici associati; il dizionario è inizializzato con i simboli dell alfabeto e dai primi n naturali. Durante il processo di compressione il messaggio viene esaminato sequenzialmente, e per ogni carattere letto si eseguono le seguenti azioni: - Se il contenuto del buffer concatenato al nuovo carattere forma una stringa presente nel dizionario, il carattere viene aggiunto in fondo al buffer. - In caso contrario viene dato come output il codice relativo alla stringa presente nel buffer, la stringa che non è stata trovata viene aggiunta al dizionario con assegnato un nuovo codice ed infine il carattere letto sostituisce il precedente contenuto del buffer. Per quanto riguarda i valori dati in output è necessario selezionare un formato per la loro codifica. Una soluzione semplice ma già efficace è quella di scrivere i codici a formato fisso con un numero di bit determinato dalla grandezza del dizionario. L algoritmo LZW così implementato crea una codifica a numero di bit fisso per sequenze di lunghezza variabile, in contrapposizione a metodi come gli alberi di Huffman che utilizzano un numero di bit variabile per dati in ingresso di uguale dimensione. Con tale approccio si ottiene di comprimere efficientemente le sequenze più lunghe del vocabolario, mentre quelle più corte non subiranno alcuna riduzione o addirittura, se il codice occupa più bit della stringa originale, saranno espanse. L efficacia del metodo sta nel fatto che se nel messaggio ci sono stringhe che si ripetono frequentemente, le sequenze più lunghe del dizionario avranno tali stringhe come prefisso permettendo la codifica con pochi bit dei dati ridondanti. Nelle implementazioni, per limitare la memoria occupata dal dizionario, solitamente si limita la lunghezza dei codici utilizzabili a 12 o 13 bit; di conseguenza il dizionario avrà una dimensione massima di 2 12 o 2 13 sequenze, e al momento del suo totale riempimento sarà necessario cessare di inserire nuovi valori utilizzando invece quelli già presenti.

Algoritmi e strutture dati. Codici di Huffman

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

Dettagli

Codifiche a lunghezza variabile

Codifiche a lunghezza variabile Sistemi Multimediali Codifiche a lunghezza variabile Marco Gribaudo marcog@di.unito.it, gribaudo@elet.polimi.it Assegnazione del codice Come visto in precedenza, per poter memorizzare o trasmettere un

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Informatica. Rappresentazione binaria Per esempio +101010000 diventa +0.10101 10 18/10/2007. Introduzione ai sistemi informatici 1

Informatica. Rappresentazione binaria Per esempio +101010000 diventa +0.10101 10 18/10/2007. Introduzione ai sistemi informatici 1 Informatica Pietro Storniolo storniolo@csai.unipa.it http://www.pa.icar.cnr.it/storniolo/info200708 Numeri razionali Cifre più significative: : sono le cifre associate ai pesi maggiori per i numeri maggiori

Dettagli

2) Codici univocamente decifrabili e codici a prefisso.

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

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Il concetto di valore medio in generale

Il concetto di valore medio in generale Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti Un ripasso di aritmetica: Rappresentazione binaria - operazioni A queste rappresentazioni si possono applicare le operazioni aritmetiche: riporti 1 1 0 + 1 0 = 1 0 0 24 Un ripasso di aritmetica: Rappresentazione

Dettagli

Introduzione all analisi dei segnali digitali.

Introduzione all analisi dei segnali digitali. Introduzione all analisi dei segnali digitali. Lezioni per il corso di Laboratorio di Fisica IV Isidoro Ferrante A.A. 2001/2002 1 Segnali analogici Si dice segnale la variazione di una qualsiasi grandezza

Dettagli

Corrispondenze e funzioni

Corrispondenze e funzioni Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei

Dettagli

Corso di Calcolo Numerico

Corso di Calcolo Numerico Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Sistemi di Numerazione Sistema decimale La

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Informatica grafica e Multimedialità. 4 Immagini grafiche

Informatica grafica e Multimedialità. 4 Immagini grafiche Immagini raster e vettoriali Le immagini grafiche si distinguono in due classi differenti: immagini raster e immagini vettoriali. Le immagini raster, dette anche pittoriche o pixel-oriented, dividono l

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

Elaborazione testi: immagini

Elaborazione testi: immagini by Studio Elfra sas Gestione Immagini Aggiornato a Aprile 2009 Informatica di base 1 Elaborazione testi: immagini Il testo di un documento di Word può essere integrato con immagini di vario tipo: 2 1 Elaborazione

Dettagli

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 LEZIONE 21: Ricerca su liste e tecniche di hashing Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 Lezione 21 - Modulo 1 Algoritmi sequenziali e basati su

Dettagli

Il campionamento. La digitalizzazione. Teoria e pratica. La rappresentazione digitale delle immagini. La rappresentazione digitale delle immagini

Il campionamento. La digitalizzazione. Teoria e pratica. La rappresentazione digitale delle immagini. La rappresentazione digitale delle immagini ACQUISIZIONE ED ELABORAZIONE DELLE IMMAGINI Teoria e pratica La digitalizzazione La digitalizzazione di oggetti legati a fenomeni di tipo analogico, avviene attraverso due parametri fondamentali: Il numero

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Determinare la grandezza della sottorete

Determinare la grandezza della sottorete Determinare la grandezza della sottorete Ogni rete IP possiede due indirizzi non assegnabili direttamente agli host l indirizzo della rete a cui appartiene e l'indirizzo di broadcast. Quando si creano

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

Corso di Matematica per la Chimica

Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis a.a. 203-4 I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

Altri metodi di indicizzazione

Altri metodi di indicizzazione Organizzazione a indici su più livelli Altri metodi di indicizzazione Al crescere della dimensione del file l organizzazione sequenziale a indice diventa inefficiente: in lettura a causa del crescere del

Dettagli

La distribuzione Normale. La distribuzione Normale

La distribuzione Normale. La distribuzione Normale La Distribuzione Normale o Gaussiana è la distribuzione più importante ed utilizzata in tutta la statistica La curva delle frequenze della distribuzione Normale ha una forma caratteristica, simile ad una

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

OCCUPATI SETTORE DI ATTIVITA' ECONOMICA

OCCUPATI SETTORE DI ATTIVITA' ECONOMICA ESERCIZIO 1 La tabella seguente contiene i dati relativi alla composizione degli occupati in Italia relativamente ai tre macrosettori di attività (agricoltura, industria e altre attività) negli anni 1971

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

Introduzione alla teoria dei database relazionali. Come progettare un database

Introduzione alla teoria dei database relazionali. Come progettare un database Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Dettagli

Lezione 10: Il problema del consumatore: Preferenze e scelta ottimale

Lezione 10: Il problema del consumatore: Preferenze e scelta ottimale Corso di Scienza Economica (Economia Politica) prof. G. Di Bartolomeo Lezione 10: Il problema del consumatore: Preferenze e scelta ottimale Facoltà di Scienze della Comunicazione Università di Teramo Scelta

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Come visto precedentemente l equazione integro differenziale rappresentativa dell equilibrio elettrico di un circuito RLC è la seguente: 1 = (1)

Come visto precedentemente l equazione integro differenziale rappresentativa dell equilibrio elettrico di un circuito RLC è la seguente: 1 = (1) Transitori Analisi nel dominio del tempo Ricordiamo che si definisce transitorio il periodo di tempo che intercorre nel passaggio, di un sistema, da uno stato energetico ad un altro, non è comunque sempre

Dettagli

Transitori del primo ordine

Transitori del primo ordine Università di Ferrara Corso di Elettrotecnica Transitori del primo ordine Si consideri il circuito in figura, composto da un generatore ideale di tensione, una resistenza ed una capacità. I tre bipoli

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

C M A P M IONAM A E M NT N O

C M A P M IONAM A E M NT N O IMMAGINE DIGITALE Nelle immagini digitali, il contenuto fotografico (radiometria) viene registrato sotto forma di numeri. Si giunge a tale rappresentazione (RASTER) suddividendo l immagine fotografica

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Matematica generale CTF

Matematica generale CTF Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE 1. Proporzionalità diretta e proporzionalità inversa Analizziamo le seguenti formule Peso Lordo = Peso Netto + Tara Ricavo = Utile + Costo Rata = Importo + Interesse

Dettagli

CALCOLO COMBINATORIO

CALCOLO COMBINATORIO CALCOLO COMBINATORIO 1 Modi di formare gruppi di k oggetti presi da n dati 11 disposizioni semplici, permutazioni Dati n oggetti distinti a 1,, a n si chiamano disposizioni semplici di questi oggetti,

Dettagli

Analisi e diagramma di Pareto

Analisi e diagramma di Pareto Analisi e diagramma di Pareto L'analisi di Pareto è una metodologia statistica utilizzata per individuare i problemi più rilevanti nella situazione in esame e quindi le priorità di intervento. L'obiettivo

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Abbiamo informazioni (numeri, caratteri, immagini, suoni, video... ) che vogliamo rappresentare (e poter elaborare) in un calcolatore. Per motivi tecnologici un calcolatore

Dettagli

Amplificatori Audio di Potenza

Amplificatori Audio di Potenza Amplificatori Audio di Potenza Un amplificatore, semplificando al massimo, può essere visto come un oggetto in grado di aumentare il livello di un segnale. Ha quindi, generalmente, due porte: un ingresso

Dettagli

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Rappresentazione di numeri Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Un numero e un entità teorica,

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Colorare coi numeri La rappresentazione delle immagini

Colorare coi numeri La rappresentazione delle immagini Attività 2 Colorare coi numeri La rappresentazione delle immagini Sommario I computer memorizzano i disegni, le fotografie e le altre figure usando solo numeri. Questa attività mostra come fanno. Competenze

Dettagli

Codifica binaria dei numeri

Codifica binaria dei numeri Codifica binaria dei numeri Caso più semplice: in modo posizionale (spesso detto codifica binaria tout court) Esempio con numero naturale: con 8 bit 39 = Codifica in virgola fissa dei numeri float: si

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Psicometria (8 CFU) Corso di Laurea triennale STANDARDIZZAZIONE

Psicometria (8 CFU) Corso di Laurea triennale STANDARDIZZAZIONE Psicometria (8 CFU) Corso di Laurea triennale Un punteggio all interno di una distribuzione è in realtà privo di significato se preso da solo. Sapere che un soggetto ha ottenuto un punteggio x=52 in una

Dettagli

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Dettagli

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi.

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi. Iniziamo con definizione (capiremo fra poco la sua utilità): DEFINIZIONE DI VARIABILE ALEATORIA Una variabile aleatoria (in breve v.a.) X è funzione che ha come dominio Ω e come codominio R. In formule:

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Come masterizzare dischi con Nero 11

Come masterizzare dischi con Nero 11 Come masterizzare dischi con Nero 11 Non c è dubbio che Nero è diventato un sinonimo di masterizzatore di dischi, data la lunga esperienza sul mercato. Molte persone pensano in questo programma nel momento

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

TECNICHE DI COMPRESSIONE DATI

TECNICHE DI COMPRESSIONE DATI TECNICHE DI COMPRESSIONE DATI COMPRESSIONE DATI La compressione produce una rappresentazione più compatta delle informazioni è come se si usassero meno parole per dire la stessa cosa in modo diverso. Esistono

Dettagli

Ai fini economici i costi di un impresa sono distinti principalmente in due gruppi: costi fissi e costi variabili. Vale ovviamente la relazione:

Ai fini economici i costi di un impresa sono distinti principalmente in due gruppi: costi fissi e costi variabili. Vale ovviamente la relazione: 1 Lastoriadiun impresa Il Signor Isacco, che ormai conosciamo per il suo consumo di caviale, decide di intraprendere l attività di produttore di caviale! (Vuole essere sicuro della qualità del caviale

Dettagli

4. Operazioni aritmetiche con i numeri binari

4. Operazioni aritmetiche con i numeri binari I Numeri Binari 4. Operazioni aritmetiche con i numeri binari Contare con i numeri binari Prima di vedere quali operazioni possiamo effettuare con i numeri binari, iniziamo ad imparare a contare in binario:

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

I CIRCUITI ELETTRICI. Prima di tutto occorre mettersi d accordo anche sui nomi di alcune parti dei circuiti stessi.

I CIRCUITI ELETTRICI. Prima di tutto occorre mettersi d accordo anche sui nomi di alcune parti dei circuiti stessi. I CIRCUITI ELETTRICI Prima di tutto occorre mettersi d accordo anche sui nomi di alcune parti dei circuiti stessi. Definiamo ramo un tratto di circuito senza diramazioni (tratto evidenziato in rosso nella

Dettagli

Domande a scelta multipla 1

Domande a scelta multipla 1 Domande a scelta multipla Domande a scelta multipla 1 Rispondete alle domande seguenti, scegliendo tra le alternative proposte. Cercate di consultare i suggerimenti solo in caso di difficoltà. Dopo l elenco

Dettagli

La codifica delle immagini

La codifica delle immagini La codifica delle immagini La digitalizzazione La digitalizzazione di oggetti legati a fenomeni di tipo analogico, avviene attraverso due parametri fondamentali: 1. Il numero dei campionamenti o di misurazioni

Dettagli

Probabilità discreta

Probabilità discreta Probabilità discreta Daniele A. Gewurz 1 Che probabilità c è che succeda...? Una delle applicazioni della combinatoria è nel calcolo di probabilità discrete. Quando abbiamo a che fare con un fenomeno che

Dettagli

Testo alla base del Pitgame redatto dal prof. Yvan Lengwiler, Università di Basilea

Testo alla base del Pitgame redatto dal prof. Yvan Lengwiler, Università di Basilea Testo alla base del Pitgame redatto dal prof. Yvan Lengwiler, Università di Basilea Funzionamento di un mercato ben organizzato Nel Pitgame i giocatori che hanno poche informazioni private interagiscono

Dettagli

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi ControlloCosti Cubi OLAP I cubi OLAP Un Cubo (OLAP, acronimo di On-Line Analytical Processing) è una struttura per la memorizzazione e la gestione dei dati che permette di eseguire analisi in tempi rapidi,

Dettagli

Quando troncare uno sviluppo in serie di Taylor

Quando troncare uno sviluppo in serie di Taylor Quando troncare uno sviluppo in serie di Taylor Marco Robutti October 13, 2014 Lo sviluppo in serie di Taylor di una funzione è uno strumento matematico davvero molto utile, e viene spesso utilizzato in

Dettagli

Esponenziali elogaritmi

Esponenziali elogaritmi Esponenziali elogaritmi Potenze ad esponente reale Ricordiamo che per un qualsiasi numero razionale m n prendere n>0) si pone a m n = n a m (in cui si può sempre a patto che a sia un numero reale positivo.

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

Codifica delle Informazioni

Codifica delle Informazioni Codifica delle Informazioni Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Panoramica Le informazioni gestite dai sistemi di elaborazione devono essere codificate

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

Ottimizzazione delle interrogazioni (parte I)

Ottimizzazione delle interrogazioni (parte I) Ottimizzazione delle interrogazioni I Basi di Dati / Complementi di Basi di Dati 1 Ottimizzazione delle interrogazioni (parte I) Angelo Montanari Dipartimento di Matematica e Informatica Università di

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16 Un ripasso di aritmetica: Conversione dalla base 1 alla base 16 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base sedici sarà del tipo: c m c m-1... c 1 c (le c i sono cifre

Dettagli

Traduzione e adattamento a cura di Gylas per Giochi Rari

Traduzione e adattamento a cura di Gylas per Giochi Rari Traduzione e adattamento a cura di Gylas per Giochi Rari Versione 1.0 Luglio 2001 NOTA. La presente traduzione non sostituisce in alcun modo il regolamento originale del gioco; il presente documento è

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

Dettagli

Capitolo V : Il colore nelle immagini digitali

Capitolo V : Il colore nelle immagini digitali Capitolo V : Il colore nelle immagini digitali Lavorare con il colore nelle immagini digitali L uso dei colori nella visione computerizzata e nella computer grafica implica l incorrere in determinate problematiche

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.

Dettagli

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio Appunti di informatica Lezione 2 anno accademico 2015-2016 Mario Verdicchio Sistema binario e logica C è un legame tra i numeri binari (0,1) e la logica, ossia la disciplina che si occupa del ragionamento

Dettagli

Giorgio Maria Di Nunzio

Giorgio Maria Di Nunzio Università degli Studi di Padova Dipartimento di Scienze Storiche, Geografiche e dell Antichità Fondamenti di Informatica A.A. 2012/2013 Giorgio Maria Di Nunzio Immagini Digitali Ä Dispense aggiuntive

Dettagli

1. Distribuzioni campionarie

1. Distribuzioni campionarie Università degli Studi di Basilicata Facoltà di Economia Corso di Laurea in Economia Aziendale - a.a. 2012/2013 lezioni di statistica del 3 e 6 giugno 2013 - di Massimo Cristallo - 1. Distribuzioni campionarie

Dettagli

CHIUSURE di MAGAZZINO di FINE ANNO

CHIUSURE di MAGAZZINO di FINE ANNO CHIUSURE di MAGAZZINO di FINE ANNO Operazioni da svolgere per il riporto delle giacenze di fine esercizio Il documento che segue ha lo scopo di illustrare le operazioni che devono essere eseguite per:

Dettagli

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p. 3/43 M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p.

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli