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