Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lezione 1
Presentazione del corso
Obiettivi del corso
3
Cos’è un algoritmo
Problema dell’ordinamento
Input: a0,a1,...,an-1
Output: a'0,a'1,...,a'n-1 permutazione di a0,a1,...,an-1
tale che a'0 a'1 ... a'n-1
Algoritmo di ordinamento: una procedura che prende
in input a0,a1,...,an-1 e produce in output a'0,a'1,...,a'n-1
6
Descrizione del corso
7
Analisi degli algoritmi
8
Le Strutture Dati
9
Le Strutture Dati
10
Le strutture dati logiche: la lista
13
Le strutture dati logiche: l’albero
15
Le strutture dati logiche: il grafo
E’ richiesta la conoscenza:
Analisi matematica
Algebra lineare (vettori e matrici)
Buone capacità di programmazione in C
E’ quindi preferibile che lo studente abbia seguito
e superato con successo l’esame:
Programmazione I
18
Orario
Lezioni in aula
Martedì e Giovedì dalle 9:00 alle 10:40
Laboratorio
I turno: Martedì dalle 14:30 alle 17:00
II turno: Mercoledì dalle 14:30 alle 17:00
Tutoraggio
Ricevimento
Lunedì 10:00-12:00
On demand
19
Calendario
6 appelli d’esame
11-25 giugno gennaio
9 luglio febbraio
10 settembre
20
Come funziona…
21
Come funziona…
Cecilia Di Ruberto
Telefono: 070 6758507
E-mail: dirubert@unica.it
Ricevimento: lunedì 10:00-12:00
Tutors
Gianmarco Cherchi, e-mail: g.cherchi@unica.it
Andrea Loddo, e-mail: andrea.loddo@unica.it
23
Materiale didattico
Di base:
C. Demetrescu, I. Finocchi, G. Italiano, Algoritmi e Strutture
Dati, McGraw-Hill, 2004
T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introduzione agli
algoritmi e Strutture Dati, McGraw-Hill, 2005
Per approfondimento
F. Luccio, La struttura degli algoritmi, Bollati-Boringhieri,
Torino, 1982 Rogers, Adams
E. Horowitz, S. Sahni, S. Anderson-Freed, Strutture Dati in C,
McGraw-Hill, Milano, 1993
R. Sedgewick, Algoritmi in C, Addison-Wesley Masson,
Milano 1993
Verranno distribuite (sulla piattaforma di elearning
Moodle) le slides delle lezioni. 24
Qualche suggerimento…
25
Cos’è un algoritmo
Correttezza
dimostrazione formale
ispezione informale
Semplicità
comprensibilità
manutenzione
27
Problema dell’ordinamento
Input: a0,a1,...,an-1
Output: a'0,a'1,...,a'n-1 permutazione di
a0,a1,...,an-1 tale che a'0 a'1 ... a'n-1.
28
Ordinamento per selezione
29
Ordinamento per selezione: codice
algoritmo selectionSort(array A)
for i 0 to n-2 do
min i
for j i+1 to n-1 do
if (A[j] < A[min]) then min j
scambia A[min] con A[i]
30
Ordinamento per selezione: esempio
5 2 8 4 7 1 3 6 1 2 3 4 7 5 8 6
5 2 8 4 7 1 3 6 1 1 2 3 4 7 5 8 6 5
5 2 8 4 7 1 3 6 1 2 3 4 7 5 8 6
1 2 8 4 7 5 3 6 1 2 3 4 5 7 8 6
1 2 8 4 7 5 3 6 2 1 2 3 4 5 7 8 6 6
1 2 8 4 7 5 3 6 1 2 3 4 5 7 8 6
1 2 8 4 7 5 3 6 1 2 3 4 5 6 8 7
1 2 8 4 7 5 3 6 3 1 2 3 4 5 6 8 7 7
1 2 8 4 7 5 3 6 1 2 3 4 5 6 8 7
1 2 3 4 7 5 8 6 1 2 3 4 5 6 7 8
1 2 3 4 7 5 8 6 4
1 2 3 4 7 5 8 6
31
Analisi dell’algoritmo: correttezza
32
Il problema della ricerca binaria
33
Algoritmo di ricerca binaria
34
Algoritmo di ricerca binaria
Se numric<lista[mezzo]
numric va ricercato tra le posizioni 0 e mezzo-1
Se numric=lista[mezzo]
l’algoritmo fornisce il valore mezzo
Se numric>lista[mezzo]
numric va ricercato tra le posizioni mezzo+1 e n-1
primo 0
ultimo lunghezza di lista - 1
while (primo ≤ ultimo) do
mezzo (primo+ultimo)/2
if (numric < lista[mezzo]) then ultimo mezzo - 1
else if (numric = lista[mezzo]) then return mezzo
else primo mezzo+1
return -1
36
La ricerca binaria: esempio
numric=6
0 1 2 3 4 5 6 7 8
2 4 6 8 10 12 18 20 24
primo=0
2 4 6 8 10 12 18 20 24 ultimo=8
mezzo=4
primo=0
2 4 6 8 10 12 18 20 24 ultimo=3
mezzo=1
primo=2
2 4 6 8 10 12 18 20 24 ultimo=3
mezzo=2
Trovato! mezzo=2
37
La ricerca binaria: esempio
numric=7
0 1 2 3 4 5 6 7 8
2 4 6 8 10 12 18 20 24
primo=0
2 4 6 8 10 12 18 20 24 ultimo=8
mezzo=4
primo=0
2 4 6 8 10 12 18 20 24 ultimo=3
mezzo=1
primo=2
2 4 6 8 10 12 18 20 24 ultimo=3
mezzo=2
primo=3
2 4 6 8 10 12 18 20 24 ultimo=3
mezzo=3
primo=3>ultimo=2!!!!! 38
Riassumendo …
Introduzione al corso
Cosa è un algoritmo
Cosa sono le strutture dati
Esempi di algoritmi
39