Università degli Studi di Ferrara Facoltà di Lettere e Filosofia Corso di Laurea in «Scienze e Tecnologie della Comunicazione» aa 2011-2012 Tecnologie informatiche multimediali Prof. Giorgio Poletti [email protected] TEORIA E FONDAMENTI ELEMENTI DI PROGETTAZIONE, CONSERVAZIONE E GESTIONE DELLE INFORMAZIONI Data Base Mangement System Schema di linguaggi e strutture per la gestione DML (DATA MANIPULATION LANGUAGE) Programmi Utente Area di Lavoro DDL (DATA DEFINITION LANGUAGE) Schema Corrispondenza strutture logiche-strutture fisiche DMCL (DEVICE MEDIA CONTROL LANGUAGE) Strutture Fisiche di Memorizzazione Data Base Mangement System Schema della struttura del software di gestione UTENTI E SOFTWARE APPLICATIVI Sotto schema 1 Sotto schema 2 DBA (Data Base Access) Schema Logico Schema Interno SUPPORTI E DISPOSITIVI FISICI DI MEMORIZZAZIONE DEI DATI Sotto schema 3 Algoritmi di Ricerca Dati Il concetto di Algoritmo in informatica e matematica Procedimento che risolve una determinata tipologia di problemi attraverso un numero finito di passi si basa Teoria della calcolabilità (computabilità), e della ricorsione studio dei metodi per definire e capire quali funzioni possono essere calcolate tramite un procedimento automatico e indipendentemente dal fatto che si trattabile (ci siano o meno le risorse necessarie). • misurazione asintotica • caratterizzato ci sono implementazioni dipendenti dai computer, NON si può stimare un tempo preciso; si intende dare un’’idea quantitativa della crescita del tempo di elaborazione alla crescita dei dati da elaborare ATOMICITÀ i passi sono «elementari» (non ulteriormente scomponibili); NON AMBIGUITÀ i passi sono essere interpretabili in modo univoco sia da un esecutore umano che da una macchina; FINITEZZA i passi sono un numero finito, sono necessari un numero finito di dati in input; TERMINAZIONE l'esecuzione terminerà dopo un tempo finito; EFFETTIVITÀ l'esecuzione porterà ad un risultato univoco; DETERMINISMO a d ogni un passo ne seguirà uno ed uno solo, sempre univocamente determinato. Algoritmi di Ricerca Dati Il concetto di Algoritmo in informatica e matematica Procedimento che risolve una determinata tipologia di problemi attraverso un numero finito di passi formalizzato Risoluzione del matematico della «decisione» (1900), posto da Hilbert e risolto, in maniera indipendente da Alonzo Church (1936) e Alan Turing (1937) generano Modelli matematici è Macchina di Touring di tipo • • • • Deterministica Non deterministica Semplificata Universale Macchina immaginaria con una testina in grado di scrivere e leggere su un nastro potenzialmente infinito Algoritmi di Ricerca Dati Il concetto di Algoritmo in informatica e matematica tipologia Procedimento che risolve una determinata tipologia di problemi attraverso un numero finito di passi Molteplici e rendono impossibile una catalogazione precisa e definitiva consideriamo Algoritmi di ordinamento Algoritmi di ricerca Algoritmi Genetici (evolutivi) Algoritmi di visitazione degli alberi Algoritmi di Ricerca Dati Algoritmi di ORDINAMENTO risultato Criteri ed eccezioni L’ordinamento è considerato totale, se viene definito per aree si parla di algoritmi di ordinamento topologico Elenco degli elementi secondo un relazione d’ordine, tale che ogni elemento sia minore o maggiore dei quello che lo segue in lista. Tipo di relazione • • Key Words • • • Naturale Definita sulle necessità dell’applicazione CONFRONTO-SCAMBIO ADATTIVO (se esegue operazioni di scambio in funzione del risultato dei confronti) STABILITÀ (se preserva l'ordine relativo dei dati con chiavi uguali in ordinamenti sucessivi) Complessità in tempo ordinamento per confronto (NLogN) con N numero di elementi da oridinare Algoritmi di Ricerca Dati Algoritmi di ORDINAMENTO (esempi) • • • BUBBLE SORT MERGE SORT ORDINAMENTO DELLE FRITTELLE Bubble Sort (ordinamento a bolle): semplice algoritmo di ordinamento a confronto-scambio Opera METODO GENERALE: ad ogni passo si confronta un elemento con l’elemento adiacente e se non sono ordinati secondo il criterio definito si scambiano le posizioni. Si scorrono tutti gli elementi finché avvengono scambi (circa N2/2 confronti e N2/2 scambi). • • Conigli (scorrimento nel senso dell’’indice) Tartarughe (scorrimento senso opposto all’indice) • Varianti e ottimizzazioni • Elementi in una iterazione, non avviene alcuno scambio, l’ordine è necessariamente completo ordinato e l'algoritmo può essere terminato In una data iterazione non si sposta nessun elemento di posizione maggiore di un dato valore i, l’algoritmo da quel momento limiterà le iterazioni successive con confronti fino alla posizione i Algoritmi di Ricerca Dati Algoritmi di ORDINAMENTO (esempi) • • • Merge Sort (ordinamento per fusione): algoritmo di ordinamento che si base su un processo di risoluzione ricorsivo. BUBBLE SORT MERGE SORT ORDINAMENTO DELLE FRITTELLE Suddivide il problema in sotto-problemi, stessa natura minore dimensione e di più facile soluzione (paradigma del DIVIDI ET IMPERA - JOHN VON NEUMANN, 1945) Descrizione concettuale 1. La sequenza da ordinare ha lunghezza 0-1: è ordinata altrimenti 2. La sequenza viene divisa (dividi) in 2 metà (in caso di numero dispari di (2n+1) elementi in 2 sotto-sequenze di n+1 e n elementi con tecnica ricorsiva 3. Ogni sotto sequenza viene ordinata conclusione 4. Le 2 sotto-sequenza ordinate vengono fuse (impera), estraendo il minimo delle 2 sotto-sequenze e inserendoli nella sequenza in uscita, sequenza ordinata Principio Fasi del Paradigma CASO BASE: inizio della funzione da sviluppare, risolve in modo diretto il problema (nel caso in cui la dimensione sia inferiore alla soglia prevista) DIVIDE: suddivisione dell'input in altri di dimensione inferiore e alla chiamata ricorsiva della stessa procedura con l'input appena creato; IMPERA: prevede di ricombinare l'output ottenuto dalle precedenti chiamate ricorsive al fine di ottenere il risultato finale. Algoritmi di Ricerca Dati Algoritmi di ORDINAMENTO (esempi) • • • BUBBLE SORT MERGE SORT ORDINAMENTO DELLE FRITTELLE 1. La sequenza da ordinare ha lunghezza 0-1: è ordinata altrimenti 2. La sequenza viene divisa (dividi) in 2 metà (in caso di numero dispari di (2n+1) elementi in 2 sotto-sequenze di n+1 e n elementi con tecnica ricorsiva 3. Ogni sotto sequenza viene ordinata conclusione 4. Le 2 sotto-sequenza ordinate vengono fuse (impera), estraendo il minimo delle 2 sotto-sequenze e inserendoli nella sequenza in uscita, sequenza ordinata Algoritmi di Ricerca Dati Algoritmi di ORDINAMENTO (esempi) • • • Ordinamento delle frittelle (pancake sorting): algoritmodi ordinamento in cui è permesso solo invertire una parte iniziale della successione, parte detta prefisso da cui anche il nome prefix reversal. BUBBLE SORT MERGE SORT ORDINAMENTO DELLE FRITTELLE Principio Pancake sort algorith Esempio ordinare gli elementi nel numero minore possibile di inversioni • n valori necessitano di un numero di operazioni compreso tra (17/16)n e (5/3)n • • una pila di frittelle in cui è possibile prendere le n frittelle più in alto e rovesciarle fare un'inversione per portare in cima alla pila la frittella più Logica grande non ancora ordinata utilizzare un'altra frittella per metterla al suo posto corretto proseguire fino all'ordinamento completo 2n−3 (Bill Gates, Christos Papadimitriou limite 1975), migliorato nel 2008 da ricercatori della Texas University1 (1) Team Bests Young Bill Gates With Improved Answer to So-Called Pancake Problem in Mathematics. University of Texas at Dallas News Center, 17 settembre 2008. Algoritmi di Ricerca Dati Algoritmi di ORDINAMENTO (esempi) • • • BUBBLE SORT MERGE SORT ORDINAMENTO DELLE FRITTELLE Esiste anche il problema dell'ORDINAMENTO DELLE FRITTELLE ABBRUSTOLITE (Burnt pancake problem), per cui il lato abbrustolito delle frittelle, alla fine dell’ordinamento deve rimanere verso il basso (2007,Francesco Riglietti). Nel 2008, un gruppo di studenti ha costruito un computer batterico che può risolvere un semplice esempio di ordinamento delle frittelle abbrustolite, programmando dei batteri E. coli in modo che invertano segmenti di DNA1 NUMERO DI INVERSIONI NECESSARIE 1 -1 2 -11 3 -1221 4 - 1 3 6 11 3 5 - 1 4 12 35 48 20 6 - 1 5 20 79 199 281 133 2 7 - 1 6 30 149 543 1357 1903 1016 35 8 - 1 7 42 251 1191 4281 10561 15011 8520 455 9 - 1 8 56 391 2278 10666 38015 93585 132697 79379 5804 10 - 1 9 72 575 3963 22825 106461 377863 919365 1309756 814678 73232 (1) Engineering bacteria to solve the Burnt Pancake Problem 20 maggio 2008 (Journal of Biological Engineering - http://www.jbioleng.org/content/2/1/8)