Algoritmi e Strutture Dati con Laboratorio (Modulo I)

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Capitolo 1 Unintroduzione informale agli algoritmi Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 1 Unintroduzione informale agli algoritmi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Algoritmi e Strutture Dati
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati con Laboratorio (Modulo I)
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati con Laboratorio (Modulo II)
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Reti Logiche Luciano Gualà home page
Reti Logiche e Architettura dei Calcolatori Luciano Gualà home page
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Elementi di Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Unintroduzione.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
Il problema della ricerca Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Boruvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Algoritmi e Strutture Dati
Visite di grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Università degli studi di LAquila Anno Accademico 2007/2008 Corso Integrato di Algoritmi e Strutture Dati con Laboratorio Modulo da 6 CFU di Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Un albero è un grafo.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Università degli.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Diremo che f(n) =
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture dati a.a. 2013/2014 Informazioni sul corso
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Università degli.
Algoritmi e Strutture Dati Introduzione agli algoritmi
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Università degli.
Capitolo 1 Un’introduzione informale agli algoritmi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Università degli.
Transcript della presentazione:

Algoritmi e Strutture Dati con Laboratorio (Modulo I) Luciano Gualà guala@mat.uniroma2.it http://www.mat.uniroma2.it/~guala/

public static int InJava (int[] a){ int max=a[0]; int InC(int a[], int n){ int i, max; max = a[0]; for (i = 1; i < n; i++) if (a[i] > max) { max = a[i]; } return max; public static int InJava (int[] a){ int max=a[0]; for (int i = 1; i < a.length; i++) if (a[i] > max) max = a[i]; return max; function InPascal(var A: array[1…Nmax] of integer): integer; var k, max: integer; begin max:=A[1]; for k:= 2 to n do if A[k]>max then max:=A[k]; end; InPascal:=max; Copyright © 2004 - The McGraw - Hill Companies, srl

…un possibile pseudo-codice… Input: Sequenza di n numeri: <a1,a2,…, an> Output: valore massimo della sequenza max=a1 per ogni i=2,…, n se (ai > max) allora aggiorna max= ai restituisci max Copyright © 2004 - The McGraw - Hill Companies, srl

Algoritmi e programmi Un algoritmo è l’essenza computazionale di un programma, nel senso che fornisce il procedimento per giungere alla soluzione di un dato problema di calcolo Algoritmo diverso da programma programma è la codifica (in un linguaggio di programmazione) di un algoritmo un algoritmo è un programma distillato da dettagli riguardanti il linguaggio di programmazione, ambiente di sviluppo, sistema operativo Copyright © 2004 - The McGraw - Hill Companies, srl

Definizione informale di algoritmo Insieme di istruzioni, definite passo per passo, in modo da poter essere eseguite meccanicamente e tali da produrre un determinato risultato Copyright © 2004 - The McGraw - Hill Companies, srl

etimologia Il termine Algoritmo deriva da Algorismus, traslitterazione latina del nome di un matematico persiano del IX secolo, Muhammad al-Khwarizmi, che descrisse delle procedure per i calcoli matematici Copyright © 2004 - The McGraw - Hill Companies, srl

Definizione di algoritmo Sequenza di passi ben definita che risolve un problema computazionale La definizione del problema specifica in termini generali la relazione di input/output desiderata Copyright © 2004 - The McGraw - Hill Companies, srl

Problema: ricerca del minimo fra n numeri Input: una sequenza di n numeri A=<a1,a2,…,an> Output: un numero ai tale che ai  aj j=1,…,n (stabilisce una relazione tra input e outut) Algoritmo (descrive procedura computazionale per realizzare tale relazione) Minimo (A) min= a1 for j=2 to n do if (aj < min) then min=aj return min Copyright © 2004 - The McGraw - Hill Companies, srl

Strutture dati Concetto di algoritmo è inscindibile da quello di dato Un algoritmo è una procedura che prende dei dati (input) e, dopo averli elaborati, li restituisce (output) I dati devo essere organizzati e strutturati in modo tale che la procedura che li elabora sia “efficiente” Copyright © 2004 - The McGraw - Hill Companies, srl

Cosa impareremo? …ad analizzare e progettare “buoni” algoritmi …che intendiamo per “buoni”? Copyright © 2004 - The McGraw - Hill Companies, srl

Due concetti fondamentali: Correttezza ed efficienza Vogliamo progettare algoritmi che: Producano correttamente il risultato desiderato Siano efficienti in termini di tempo di esecuzione ed occupazione di memoria Copyright © 2004 - The McGraw - Hill Companies, srl

Analisi di algoritmi Correttezza: dimostrare formalmente che un algoritmo è corretto non è sempre facile Un algoritmo può essere complesso e/o non intuitivo (ai fini dell’efficienza) Complessità: Stimare la quantità di risorse (tempo e memoria) necessarie all’algoritmo Misurata in complessità asintotica Non sempre è facile campire quale è la complessità di un algoritmo (es: algoritmi ricorsivi) Copyright © 2004 - The McGraw - Hill Companies, srl

Analisi della complessità stimare tempo e memoria necessari stimare il più grande input gestibile in tempi ragionevoli confrontare due algoritmi diversi ottimizzare le parti “critiche” Copyright © 2004 - The McGraw - Hill Companies, srl

Un’altra cosa che impareremo a fare (un po’): …analizzare problemi (computazionali) …cosa intendiamo con analizzare un problema? Copyright © 2004 - The McGraw - Hill Companies, srl

Formalizzazione di un problema Trovare un modello formale/matematico che descrive in modo non ambiguo il problema e renda esplicita la relazione fra input ed output Qualche volta piuttosto difficile Perché formalizzare? aiuta a comprendere meglio il problema una formalizzazione può suggerire un approccio risolutivo (possibilmente efficiente) per il problema Copyright © 2004 - The McGraw - Hill Companies, srl

Formalizzazione: un esempio Vogliamo progettare un algoritmo che aiuti la segretaria di dipartimento ad assegnare i corsi ai docenti (lei quando lo fa a mano impiega troppo tempo). C’è un insieme di docenti, a ognuno dei quali deve essere assegnato un solo corso (magari!). Un docente sa insegnare solo alcuni corsi. Copyright © 2004 - The McGraw - Hill Companies, srl

Una possibile formalizzazione: matching su grafi bipartiti docenti d1 d2 d3 d4 d5 Grafo bipartito nodi: docenti + corsi archi: (di,cj) se di sa insegnare cj c1 c2 c3 c4 c5 corsi Trovare insieme di archi che “coprono” tutti i corsi tale che due archi non incidono su uno stesso nodo Copyright © 2004 - The McGraw - Hill Companies, srl

Formalizzazione: un altro esempio Vogliamo progettare un algoritmo per un correttore ortografico di testi che, data una parola, controlla se essa è scritta bene e in caso di errore suggerisce una possibile correzione Copyright © 2004 - The McGraw - Hill Companies, srl

Una possibile formalizzazione Manteniamo un insieme D di parole dove D è il nostro dizionario (di parole corrette) Una parola x è corretta se x  D Definiamo un concetto di distanza tra parole Se x non è in D, cerco una parola y in D che minimizza la distanza da x Osservazioni: Distanza fra due parole x e y deve essere piccola quando x e y sono “simili” Distanza fra due parole deve poter essere calcolata (efficientemente) Copyright © 2004 - The McGraw - Hill Companies, srl

Analisi di un problema: scoprire proprietà utili Scoprire proprietà strutturali di un problema in modo da trarne vantaggio nella progettazione di un algoritmo efficiente Copyright © 2004 - The McGraw - Hill Companies, srl

Ragionare sulla complessità di un problema Ho progettato un algoritmo per un dato problema che usa una certa quantità di risorse di tempo e spazio Posso fare meglio? Quanto posso sperare di abbassare la mia complessità? Copyright © 2004 - The McGraw - Hill Companies, srl

Prerequisiti del corso Cosa è necessario sapere… programmazione di base strutture dati elementari concetto di ricorsione dimostrazione per induzione e calcolo infinitesimale Copyright © 2004 - The McGraw - Hill Companies, srl

Struttura del corso Corso strutturato in due moduli Modulo I (vecchio Elementi di Algoritmi e Strutture Dati) 6 CFU Ottobre – Gennaio Modulo II (vecchio Algoritmi e Strutture dati con Laboratorio) Marzo – Giugno Copyright © 2004 - The McGraw - Hill Companies, srl

Argomenti (Modulo I) Introduzione informale agli algoritmi Modelli di calcolo e metodoligie di analisi Strutture dati elementari Algoritmi di ordinamento Algortmi di vistita di alberi Algoritmi su stringhe Alberi binari di ricerca Alberi bilanciati (AVL) Code con priorità …???... Copyright © 2004 - The McGraw - Hill Companies, srl

Informazioni utili Orario lezioni Orario ricevimento Martedì: 15,00 – 17,00 Giovedì: 11,00 – 13,00 Orario ricevimento Martedì: 11,15 – 12,45 Ufficio: dip. di matematica, piano 0, corridoio B0, stanza 206 Copyright © 2004 - The McGraw - Hill Companies, srl

Libro di testo C. Demetrescu, I. Finocchi, G. Italiano Algoritmi e Strutture dati (sec. ed.) McGraw-Hill Slide e materiale didattico http://www.mat.uniroma2.it/~guala/ Copyright © 2004 - The McGraw - Hill Companies, srl

…altri testi utili… T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein Introduzione agli algortimi e strutture dati McGraw-Hill P. Crescenzi, G. Gambosi, R. Grossi Strutture di dati e algoritmi Addison-Wesley A. Bertossi, A. Montresor Algoritmi e strutture di dati Città Studi Copyright © 2004 - The McGraw - Hill Companies, srl

Modalità d’esame L’esame consiste in una prova scritta e una prova orale Quattro appelli 2 giugno/luglio 1 settembre 1 gennaio/febbraio Prova parziale a febbraio Per sostenere l’esame è obbligatorio prenotarsi online (una settimana prima) su delphi.uniroma2.it Copyright © 2004 - The McGraw - Hill Companies, srl

Buon inizio anno Copyright © 2004 - The McGraw - Hill Companies, srl