Algoritmi e Strutture Dati [24pt]Introduzione al

annuncio pubblicitario
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
Scarica