La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati con Laboratorio (Modulo I) Luciano Gualà

Presentazioni simili


Presentazione sul tema: "Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati con Laboratorio (Modulo I) Luciano Gualà"— Transcript della presentazione:

1 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati con Laboratorio (Modulo I) Luciano Gualà

2 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 2 Informazioni utili Orario lezioni –Lunedì: 12,00 – 14,00 –mercoledì: 9,00 – 11,00 Orario ricevimento –mercoledì: 11,15 – 12,45 –Ufficio: dip. di matematica, piano 0, corridoio B0, stanza 206

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 3 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) 6 CFU Marzo – Giugno

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 Prerequisiti del corso Cosa è necessario sapere… –programmazione di base –strutture dati elementari –concetto di ricorsione –dimostrazione per induzione e calcolo infinitesimale

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 Libro di testo C. Demetrescu, I. Finocchi, G. Italiano Algoritmi e Strutture dati (sec. ed.) McGraw-Hill Slide e materiale didattico

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 6 …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, G. Rossi Strutture di dati e algoritmi Pearson A. Bertossi, A. Montresor Algoritmi e strutture di dati Città Studi J. Kleinberg, E. Tardos Algorithm Design Addison Wesley

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Qualche consiglio: Lavorare sui problemi assegnati in gruppo Scrivere/formalizzare la soluzione individualmente Copyright © The McGraw - Hill Companies, srl 7

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 Modalità desame Lesame 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 lesame è obbligatorio prenotarsi online (una settimana prima) su delphi.uniroma2.it

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 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 begin if A[k]>max then max:=A[k]; end; InPascal:=max; end;

10 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 10 …un possibile pseudo-codice… Input: Sequenza di n numeri: Output: valore massimo della sequenza max=a 1 per ogni i=2,…, n se (a i > max) allora aggiorna max= a i restituisci max

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 11 Un algoritmo può essere visto come lessenza 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 può essere visto come un programma distillato da dettagli riguardanti il linguaggio di programmazione, ambiente di sviluppo, sistema operativo –Algoritmo è un concetto autonomo da quello di programma Algoritmi e programmi

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 Insieme di istruzioni, definite passo per passo, in modo da poter essere eseguite meccanicamente e tali da produrre un determinato risultato Definizione informale di algoritmo

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 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

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 Sequenza di passi ben definita che risolve un problema computazionale Algoritmo vs Problema La definizione del problema specifica in termini generali la relazione di input/output desiderata

15 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 Problema: ricerca del minimo fra n numeri Input: una sequenza di n numeri A= Output: un numero a i tale che a i a j j=1,…,n (stabilisce una relazione tra input e outut) Minimo (A) 1. min= a 1 2. for j=2 to n do 3. if (a j < min) then min=a j 4. return min Algoritmo (descrive procedura computazionale per realizzare tale relazione)

16 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 16 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

17 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 17 un esempio MCCXIV * XXI = 1214 * 21 = ?????? !!!!!!!

18 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 18 Cosa impareremo? …ad analizzare e progettare buoni algoritmi …che intendiamo per buoni? –Producano correttamente il risultato desiderato (correttezza) –Siano efficienti in termini di tempo di esecuzione ed occupazione di memoria (efficienza)

19 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 19 Analisi di algoritmi Correttezza: –dimostrare formalmente che un algoritmo è corretto –non è sempre facile –Un algoritmo può essere complesso e/o non intuitivo (ai fini dellefficienza) Complessità: –Stimare la quantità di risorse (tempo e memoria) necessarie allalgoritmo –Misurata in complessità asintotica –Non sempre è facile campire quale è la complessità di un algoritmo (es: algoritmi ricorsivi) Studio teorico del comportamento, delle proprietà e delluso delle risorse di un algoritmo.

20 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Cosa è (più) importante oltre lefficienza? Correttezza Semplicità Mantenibilità Stabilità Modularità Sicurezza User-friendliness … Copyright © The McGraw - Hill Companies, srl 20 Allora perché tanta enfasi sullefficienza? Veloce è bello A volte: o veloce o non funzionale Legato alla User-friendliness Efficienza può essere usata per pagare altre caratteristiche

21 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Altri motivi per studiare gli algoritmi Copyright © The McGraw - Hill Companies, srl 21 "There is a saying: If you want to be a good programmer, you just program every day for two years, you will be an excellent programmer. If you want to be a world-class programmer, you can program every day for ten years. Or you can program every day for two years and take an algorithms class." Charles E. Leiserson

22 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Altri motivi per studiare gli algoritmi Copyright © The McGraw - Hill Companies, srl 22 Se è vero che un problema non si capisce a fondo finché non lo si deve insegnare a qualcuno altro, a maggior ragione nulla è compreso in modo più approfondito di ciò che si deve insegnare ad ua macchina, ovvero di ciò che va espresso tramite un algoritmo." Donald Knuth In ogni algoritmo è possibile individuare due componenti fondamentali: lidentificazione della appropriata tecnica di progetto algoritmico (basato sulla struttura del problema; la chiara individuazione del nucleo matematico del problema stesso.

23 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Altri motivi per studiare gli algoritmi Copyright © The McGraw - Hill Companies, srl 23 Lalgoritmica è lanima dellinformatica." David Harel Le idee algoritmiche non solo trovano soluzioni a problemi ben posti, quanto costituiscono il linguaggio che porta ad esprimere chiaramente il problema soggiacente

24 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Altri motivi per studiare gli algoritmi Potenzia le capacità di: Critical Thinking: –un modo di decidere se un certo enunciato è sempre vero, vero a volte, parzialmente vero, o falso Problem Solving: –insieme dei processi atti ad analizzare, affrontare e risolvere positivamente problemi Copyright © The McGraw - Hill Companies, srl 24

25 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 25 Unaltra cosa che impareremo a fare (un po): …analizzare problemi (computazionali) …cosa intendiamo con analizzare un problema?

26 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 26 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

27 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 27 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à?

28 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 28 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.

29 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 29 Una possibile formalizzazione: matching su grafi bipartiti d1d1 d2d2 d3d3 d4d4 d5d5 c1c1 c2c2 c3c3 c4c4 c5c5 Grafo bipartito nodi: docenti + corsi archi: (d i,c j ) se d i sa insegnare c j docenti corsi Trovare insieme di archi che coprono tutti i corsi tale che due archi non incidono su uno stesso nodo

30 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 30 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

31 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 31 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)

32 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Trovare il cammino più breve Copyright © The McGraw - Hill Companies, srl 32

33 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 33 Una possibile formalizzazione: cammino minimo su un grafo pesato Grafo pesato nodi: incroci archi: strade e distanze Trovare un cammino (diretto) da s a t che minimizza la somma dei pesi degli archi s 3 t sorgente destinazione

34 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 34 Formalizzazione: un altro esempio Due robot telecomandabili R1 e R2 sono posizionati sui nodi s1 e s2 di un grafo G Vogliamo spostare R1 e R2 in t1 e t2, rispettivamente Possiamo spostarli uno alla volta seguendo gli archi di G Vincolo: i due robot non devono mai essere a distanza (minimo numero di archi che li separa) r (per evitare interferenze di segnale) Goal: trovare una sequenza minima di mosse valida s1 t1 s2 t2 r=1

35 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 35 Formalizzazione: un altro esempio Idea: costruire un grafo delle configurazioni su cui cercare la sequenza di mosse Costruiamo un nuovo grafo H Nodi di H: coppie {i,j} di nodi di G tali che i e j sono a distanza > r Archi di G: cè un arco fra {i,j} e {k,j} se cè un arco in G fra i e k Trova un cammino minimo in H da {s1,s2} a {t1,t2}

36 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Un problema da $ 1,000,000 Trovare un algoritmo efficiente per il seguente problema: Copyright © The McGraw - Hill Companies, srl 36 Dato un grafo G (non diretto e non pesato) e due nodi s e t, trovare il cammino (semplice) più lungo fra s e t s t s t

37 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 37 Buon inizio anno


Scaricare ppt "Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati con Laboratorio (Modulo I) Luciano Gualà"

Presentazioni simili


Annunci Google