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 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;

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

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 Un algoritmo è 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 è un programma distillato da dettagli riguardanti il linguaggio di programmazione, ambiente di sviluppo, sistema operativo Algoritmi e programmi

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

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

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

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

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

10 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 10 Cosa impareremo? …ad analizzare e progettare buoni algoritmi …che intendiamo per buoni?

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

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

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

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

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

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

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

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

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

20 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 20 Analisi di un problema: scoprire proprietà utili Scoprire proprietà strutturali di un problema in modo da trarne vantaggio nella progettazione di un algoritmo efficiente

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

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

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

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

25 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 25 Informazioni utili Orario lezioni –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

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

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

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

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