Algoritmi e Strutture Dati Introduzione al corso Alberto Montresor Università di Trento 2016/10/15 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Cos’è un informatico? Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 1 / 35 L’azienda vi assegna un compito Problema Input: un vettore di interi A[1 . . . n] Output: il sottovettore A[i . . . j] di somma Pjmassimale, ovvero il sottovettore la cui somma degli elementi k=i A[k] è più grande o uguale alla somma degli elementi di qualunque altro sottovettore. Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 2 / 35 La vostra risposta Eh? Mi dica che programma devo scrivere! All’università ho imparato questo magnifico algoritmo! Posso sviluppare un nuovo algoritmo per lei! Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 3 / 35 L’azienda vi assegna un compito Problema Input: un vettore di interi A[1 . . . n] Output: il sottovettore A[i . . . j] di somma P massimale, ovvero il sottovettore la cui somma degli elementi jk=i A[k] è più grande o uguale alla somma degli elementi di qualunque altro sottovettore. Domande: Il problema è descritto bene? Riuscite a risolverlo? Riuscite a risolverlo in maniera efficiente? integer sum(integer[ ] A, integer i, integer j) integer sum = 0 for k = i to j do sum = sum + A[k] return sum Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 4 / 35 Version 1 – O(n3 ) integer maxsum(integer[ ] A, integer n) integer max = 0 for i = 0 to n − 1 do for j = i to n − 1 do integer sum = sum(A, i, j) if sum > max then max = sum % Massimo valore trovato % Subset sum return max integer sum(integer[ ] A, integer i, integer j) integer sum = 0 for k = i to j do sum = sum + A[k] return sum Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 5 / 35 Version 2 – O(n2 ) integer maxsum(integer[ ] A, integer n) integer max = 0 for i = 0 to n − 1 do integer sum = 0 for j = i to n − 1 do sum = sum + A[j] if sum > max then max = sum % Max so fa % Subset sum return max Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 6 / 35 Version 3 – O(n log n) integer maxsumRic(integer[ ] A, integer i, integer j) integer maxs , maxd integer max0s , max0d integer s, m, k if i > j then return 0 if i = j then return max(0, A[i]) m = b(i + j)/2c maxs = maxsumRic(A, i, m) maxd = maxsumRic(A, m + 1, j) sum = 0 max0s = max0d = 0 Alberto Montresor (UniTN) for k = m downto i do sum = sum + A[k] if sum > max0s then max0s = sum sum = 0 for k = m + 1 to j do sum = sum + A[k] if sum > max0d then max0d = sum return max(maxs , maxd , max0s + max0d ) ASD - Introduzione 2016/10/15 7 / 35 Version 4 – O(n) integer maxsum(integer[ ] A, integer n) integer max = 0 integer here = 0 for i = 0 to n − 1 do here = max(here + A[i], 0) max = max(here, max) % Max so far % Max value of a slice that ends here return max Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 8 / 35 Note storiche Somma di sottovettoe Jon Bentley. Programming Pearls. Addison-Wesley Publishing Company, Reading (MA). April, 1986. [Capitolo 7] Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 9 / 35 Programma del corso Introduzione Tecniche di programmazione Analisi degli algoritmi Notazione asintotica Ricorrenze Analisi ammortizzata Scelta della struttura dati Divide-et-impera Programmazione dinamica Algoritmi greedy Ricerca locale Backtrack Algoritmi probabilistici Data structures Pile, code, liste Alberi Grafi Alberi bilanciati Tabelle hash Strutture speciali Alberto Montresor (UniTN) Problemi intrattabili (cenni) Problemi NP-completi ASD - Introduzione 2016/10/15 10 / 35 Scopo del corso Conoscenze e competenze fondamentali Contenuto: una panoramica aggiornata sui problemi fondamentali e le loro soluzioni Metodo: i principi e le tecniche per risolvere i problemi che capitano nella vita di un programmatore Contenuto: elenco di algoritmi Analizzate il loro codice Convincetevi che funzionano Provate a implementarli Alberto Montresor (UniTN) Metodo: pensiero astratto Come sviluppare nuovi algoritmi per ogni problema che si presenta ASD - Introduzione 2016/10/15 11 / 35 Scrittura creativa Se volete fare gli scrittori, ci sono due esercizi fondamentali: leggere molto e scrivere molto. Non conosco stratagemmi per aggirare questa realtà, non conosco scorciatoie. [...] Quello che voglio dire è che per scrivere al meglio delle proprie capacità, è opportuno costruire la propria cassetta degli attrezzi e poi sviluppare i muscoli necessari a portarla con sè. Allora, invece di farsi scoraggiare davanti a un lavoro che si preannuncia complicato, può darsi che abbiate a disposizione l’utensile adatto con il quale mettervi immediatamente all’opera. On writing, Stephen King http://cricca.disi.unitn.it/montresor/teaching/asd/ la-cassetta-degli-attrezzi/ Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 12 / 35 Sul comportamento da tenere in aula Laurentius da Voltolina – Bologna, seconda metà del XIV secolo Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 13 / 35 Sul comportamento da tenere in aula Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 14 / 35 Sull’uso dei portatili durante la lezione Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 15 / 35 Sull’interazione a lezione Domanda e sembrerai sciocco per un minuto, non domandare e resterai sciocco per sempre Proverbio cinese Fate domande Se sono poco chiaro, non esitate a pretendere ulteriori spiegazioni Se volete ulteriori approfondimenti, chiedete e vi sarà dato Non è detto che conosca tutte le risposte – ma so dove cercare! Rispondete alle mie domande Parlare in 150 è difficile, ma cercate di partecipare tutti Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 16 / 35 Sull’interazione a lezione Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 17 / 35 Sito web del corso http://cricca.disi.unitn.it/montresor/ Lucidi e appunti Video lezioni Software didattico Esercizi e compiti passati Progetti Approfondimenti Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 18 / 35 Sito web del corso Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 19 / 35 Docenti e assistenti Prof. Alberto Montresor Titolare: lezioni teoriche, esercitazioni alberto.montresor [AT] unitn.it Dott. Cristian Consonni, Dott. Alessio Guerrieri Esercitazioni, esercitazioni in laboratorio, correzioni progetti cristian.consonni [AT] unitn.it , a.guerrieri [AT] unitn.it Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 20 / 35 Testi Libro adottato Bertossi, Montresor Algoritmi e Strutture di Dati. Tecniche nuove, 3a ed. (2014) (e26.35) Per approfondimenti Cormen, Leiserson, Rivest, Stein. Introduction to Algorithms. The MIT Press; 3rd ed. (2009) (e54.02) Jon Kleinberg, Eva Tardos. Algorithm Design. Addison Wesley, 1st Int. ed. (2013) (e84.15) Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 21 / 35 Lezioni e ricevimento Lezioni Martedì Mercoledì Giovedì Venerdì 14.00 11.00 11.00 14.00 – – – – 16.00 13.00 13.00 16.00 Esercitazione Lezione Lezione Laboratorio A103 A103 A105 Aule PC A202, B106 Ricevimento Dopo ogni lezione, in aula Via mail, quando volete Su appuntamento Ricevimenti di gruppo, più avanti Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 22 / 35 Esame Diviso in due parti obbligatorie 50% - Scritto Esame scritto (in aula) Progetto laboratorio (homework) 50% - Orale Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 23 / 35 Esame scritto Open-book È possibile usare libri e appunti, non strumenti elettronici Regole Portate documento d’identità con foto L’unico modo per uscire dall’aula è consegnare Tutte le volte che partecipate ad un esame scritto, i voti scritti precedenti vengono persi Compiti anni passati, con soluzioni http://disi.unitn.it/~montreso/asd/compiti/ Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 24 / 35 Esame scritto Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 25 / 35 Laboratorio Esercitazioni di laboratorio Corrette tramite software: Contest Management System (CMS) Due progetti durante il corso Deadline: novembre, dicembre Se consegnate entro le deadline previste: bonus da sommare al vostro voto scritto (+2,+3) ovviamente vale solo per progetti funzionanti Se non consegnate un progetto durante il corso: ci sono altre occasioni (maggio, agosto) almeno un progetto va consegnato per accedere all’orale ma non danno origine a punteggio aggiuntivo Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 26 / 35 Esame orale Niente orale se non avete consegnato almeno una esercitazione di laboratorio Niente orale se non avete passato lo scritto (voto minimo: 18) Dopo aver passato lo scritto, potete venire all’orale quando volete durante l’anno accademico Se rifiutate un voto all’orale, non potete ripresentarvi prima che siano passate due settimane Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 27 / 35 Validità esami Se non passate l’orale entro il nuovo anno accademico (Settembre 2017) I voti degli esami scritti vengono persi I bonus dei progetti vengono persi Novità Se consegnate un progetto funzionante e non riuscite a passare l’esame entro il corrente anno accademico, il progetto resta valido anche negli a.a. successivi Ma ripeto, perdete tutti i bonus Questa regola è retroattiva, vale anche per gli a.a. passati Siete ovviamente liberi di partecipare nuovamente alle esercitazioni di laboratorio per ri-ottenere i punti bouns Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 28 / 35 Date Scritti parziali Scritto parziale 1 Scritto parziale 2 3 Novembre 10 Gennaio Laboratorio Consegna Laboratorio 1 Consegna Laboratorio 2 Alberto Montresor (UniTN) 18 Novembre 22-23 Dicembre (TBD) ASD - Introduzione 2016/10/15 29 / 35 Appelli invernali (date non definitive) Scritto 03/11 + 10/01 (Parziali) 24/01 07/02 Alberto Montresor (UniTN) Orale 18/01 , 01/02 , 15/02 , 01/02 , 15/02 , 15/02 , ASD - Introduzione 25/01 08/02 17/02 08/02 17/02 17/02 2016/10/15 30 / 35 Cheating policies Durante gli scritti È 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 sia chi ascolta Se avete bisogno di qualunque cosa, chiedete al docente Dopo gli scritti Il compito potrà essere annullato anche in caso di manifesta copiatura scoperta nel corso della correzione degli scritti L’annullamento riguarderà sia il “copiatore” che il “copiato” Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 31 / 35 LEGGE 19/04/1925, n. 475 – GU 29/04/1925 , n. 99 Art. 1 “Chiunque in esami o concorsi, prescritti o richiesti da autorità o pubbliche amministrazioni per il conferimento di lauree o di ogni altro grado o titolo scolastico o accademico, per l’abilitazione all’insegnamento ed all’esercizio di una professione, per il rilascio di diplomi o patenti, presenta, come proprii, dissertazioni, studi, pubblicazioni, progetti tecnici e, in genere, lavori che siano opera di altri, è punito con la reclusione da tre mesi ad un anno. La pena della reclusione non può essere inferiore a sei mesi qualora l’intento sia conseguito.” Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 32 / 35 Varie ed eventuali Mailing list: https://groups.google.com/forum/#!forum/asd16 Questionario valutazione didattica: https://goo.gl/forms/cpRZKmmJelfUomfG3 ACM-ICPC Elezioni rappresentanti [email protected] [email protected] Facoltiadi Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 33 / 35 Varie ed eventuali Google Summer of Code Antonio Quartulli (2011) Federico Scrinzi (2012) Pietro Zambelli (2012) Edo Monticelli (2012) Savita Seetaraman (2014) Emilio Dorigatti (2015) Andrea Nardelli (2016) Lodovico Giarretta (2016) Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 34 / 35 Conclusioni Alberto Montresor (UniTN) ASD - Introduzione 2016/10/15 35 / 35