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, jeff@cs.yorku.ca
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, jeff@cs.yorku.ca
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, jeff@cs.yorku.ca
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
mazza@cosbi.eu
Dott. Marco Biazzini
Assistente, alcune lezioni, orali
biazzini@dit.unitn.it
© 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