La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi e Strutture Dati con Laboratorio (Modulo I)

Presentazioni simili


Presentazione sul tema: "Algoritmi e Strutture Dati con Laboratorio (Modulo I)"— Transcript della presentazione:

1 Algoritmi e Strutture Dati con Laboratorio (Modulo I)
Luciano Gualà

2 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 © The McGraw - Hill Companies, srl

3 …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 © The McGraw - Hill Companies, srl

4 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 © The McGraw - Hill Companies, srl

5 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 © 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 Copyright © The McGraw - Hill Companies, srl

7 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 © The McGraw - Hill Companies, srl

8 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 © 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” Copyright © The McGraw - Hill Companies, srl

10 Cosa impareremo? …ad analizzare e progettare “buoni” algoritmi
…che intendiamo per “buoni”? 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 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 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 © 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” Copyright © The McGraw - Hill Companies, srl

14 Un’altra cosa che impareremo a fare (un po’):
…analizzare problemi (computazionali) …cosa intendiamo con analizzare un problema? 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 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. Copyright © The McGraw - Hill Companies, srl

17 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 © 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 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) 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 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à? 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 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) Marzo – Giugno 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à …???... Copyright © The McGraw - Hill Companies, srl

25 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 © 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 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 Copyright © The McGraw - Hill Companies, srl

28 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 © The McGraw - Hill Companies, srl

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


Scaricare ppt "Algoritmi e Strutture Dati con Laboratorio (Modulo I)"

Presentazioni simili


Annunci Google