Algoritmi e Strutture Dati Introduzione al corso Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. © Alberto Montresor 1 So, you wanna be a computer scientist? © Alberto Montresor Slide (c) Jeff Edmonds, [email protected] 2 Il vostro boss vi assegna un compito... Input: Sia π una permutazione di { 1, ..., N } Sia π-1 una sequenza ottenuta rimuovendo un numero di π Output Il numero mancante Domande Riuscite a risolvere questo problema? Riuscite a risolverlo in una sola “passata”? Riuscite a risolverlo senza memoria aggiuntiva? Riuscite a risolverlo con 2 log N bit di memoria? © Alberto Montresor Slide (c) Jeff Edmonds, [email protected] 3 La vostra risposta... Um? Mi dica che programma devo scrivere! All'università ho imparato questo magnifico algoritmo! Posso sviluppare un nuovo algoritmo per lei! © Alberto Montresor Slide (c) Jeff Edmonds, [email protected] 4 Scopo del corso Fornire due elementi fondamentali: Contenuto: una panoramica aggiornata sui problemi fondamentali e le loro soluzioni Metodo: i principi e le tecniche per risolvere i problemi insoliti che capitano nella vita di tutti i giorni Contenuto: lista di algoritmi Studiate il loro codice Non a memoria! Convincetevi che funzionano Provate a implementarli © Alberto Montresor Metodo: pensiero astratto Come sviluppare nuovi algoritmi per ogni problema che si presenta 5 Un consiglio Lo studio degli algoritmi non è uno sport in cui si guarda e basta... E' necessario Scrivere molti algoritmi Analizzare la loro correttezza Analizzare la loro efficienza © Alberto Montresor 6 Sito Web del corso Il corso è dotato di un sito web: http://www.dit.unitn.it/~montreso/asd/index.shtml Trovate: Lucidi e appunti Documentazione Compiti passati Informazioni generali sul corso © Alberto Montresor 7 Programma del corso Introduzione Analisi degli algoritmi Strutture dati base: Pile, code, liste Notazione asintotica Alberi, grafi Ricorrenze Alberi di ricerca Analisi ammortizzata Alberi bilanciati (RB) Ordinamento Tecniche di programmazione Heapsort, Quicksort Divide et impera Limiti inferiori Programmazione dinamica Ordinamento in tempo lineare Algoritmi greedy Backtrack Tecniche euristiche © Alberto Montresor 8 Programma del corso Strutture dati avanzate Tabelle hash B-Alberi Strutture dati per insiemi disgiunti Algoritmi su grafi **** © Alberto Montresor Visite in ampiezza e profondità Ordinamento topologico Componenti fortemente connesse Alberi di copertura minima Cammini minimi Problemi di flusso 9 Docente e assistenti Prof. Alberto Montresor Titolare, lezioni “teoriche” http://www.dit.unitn.it/~montreso/index.shtml Dr. Tommaso Mazza Assistente, esercitazioni [email protected] Dott. Marco Biazzini Assistente, alcune lezioni, orali [email protected] © Alberto Montresor 10 Domande? © Alberto Montresor 11 Figura e ruolo dei docenti Domande, domande, domande Se ci sono punti poco chiari nella lezione, non esitate a domandare ulteriori spiegazioni Se volete ulteriori approfondimenti su uno degli argomenti delle lezioni, chiedete e vi sarà dato © Alberto Montresor 12 Laptop Laptop proibiti in aula durante le lezioni! © Alberto Montresor 13 Testi Adottato: Cormen, Leiserson, Rivest, Stein [CLRS] Introduction to Algorithms The MIT Press; 2nd edition (2001) Edizione italiana: Introduzione agli Algoritmi e Strutture Dati McGraw-Hill, 2a edizione (2005) Per approfondimenti: Jon Kleinberg, Eva Tardos Algorithm Design Addison Wesley, 1st edition (2006) © Alberto Montresor 14 Organizzazione di una lezione Organizzazione di una settimana di corso Lunedì 13.30-15.30 Lezione frontale Mercoledì 15.30-17.30 Esercitazione Giovedì 13.30-15.30 Lezione Venerdì 10.30-12.30 Lezione Ricevimento Via mail, quando volete Dopo ogni lezione, in aula Per l'orario ufficiale: http://www.dit.unitn.it/~montreso/agenda.shtml © Alberto Montresor 15 Esame Diviso in due parti obbligatorie: Scritto risoluzione problemi (lab?) 15 punti Durante lo scritto è possibile usare libri e appunti Orale 15 punti Alcune regole Niente orale se non avete passato lo scritto (voto: 9 o più) Dopo lo scritto, potete venire all'orale quante volte volete Se volete rifare lo scritto, il vecchio voto viene perso Entro febbraio 2010, poi si riparte da capo © Alberto Montresor 16 Appelli Scritti parziali (da decidere) L'idea è incentivare lo studio durante il corso Appelli regolari Giugno, Luglio 2010 Settembre 2010 Gennaio, Febbraio 2011 Esercitazioni di “laboratorio” opzionali Corrette tramite mezzi automatici Non danno punteggio © Alberto Montresor 17 "Cheating policies" Durante gli scritti E' vietato comunicare in qualunque modo (oralmente, in forma scritta o elettronicamente), per qualsivoglia motivo. Chi viene sorpreso a parlare, viene invitato a lasciare l'aula e a ripresentarsi al prossimo appello Questo vale per entrambi gli "estremi" della comunicazione: sia chi parla che chi ascolta Nota: Se avete bisogno di qualunque cosa, chiedete al docente © Alberto Montresor 18 "Cheating policies" Dopo gli scritti Il compito potrà essere annullato anche in caso di manifesta copiatura scoperta nel corso della correzione degli scritti Anche in questo caso, l'annullamento riguarda sia il "copiatore" che il "copiato" © Alberto Montresor 19