Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoEula Palmieri Modificato 10 anni fa
1
Algoritmi e Strutture Dati 8 crediti Calendario: 1 Ott. – 6 Dic. Aula: LuM250 Orario: Lun, Mar, Mer, Gio 15.30-17.30 Giorni di lezione disponibili 40 ~48 ore di teoria, ~18 ore di esercizi e 4 ore per le prove parziali I sessione esami: Dic 9-20 Gen 7-11
2
a.5 scritti (+ 2 compitini: uno a metà del corso ed uno a fine corso o assieme al primo appello). Indispensabile iscriversi nella lista di esame che verrà attivata su UNIWEB. b.Colloquio e registrazione: principalmente discussione dello scritto con qualche domanda di teoria. c.Si è ammessi al colloquio con almeno 17/30 come voto dello scritto.
3
Testo: Introduzione agli Algoritmi e Strutture Dati (terza edizione). T.H.Cormen, C.E.Leiserson, R.L.Rivest, C.Stein. McGraw-Hill. Altro materiale didattico verrà messo nel sito: www.math.unipd.it/~colussi oppure la versione inglese: Introduction to Algorithms and Data Structures (terza edizione). T.H.Cormen, C.E.Leiserson, R.L.Rivest, C.Stein. MIT Press.
4
Programma Le prime 5 parti del testo (con poche omissioni): I.Fondamenti: notazione per gli algoritmi e primi esempi di algoritmi e di analisi degli algoritmi II.Ordinamento e statistiche dordine III.Strutture dati fondamentali IV.Tecniche avanzate di progettazione ed analisi degli algoritmi V.Strutture dati avanzate
5
I problemi computazionali, gli algoritmi che li risolvono e le tecniche per sviluppare tali algoritmi INTRODUZIONE Esempio1: problema dellordinamento Input: a 1,a 2,...,a n Output: a' 1,a' 2,...,a' n permutazione (riarrangiamento) di a 1,a 2,...,a n tale che a' 1 a' 2... a' n
6
TECNICA INCREMENTALE
7
Soluzione1: Algoritmo Insertion-Sort. InsertionSort 1 n A 1 n A 1 n j A key 1 n j A i 1 n j A j 1 n A j 1 n j A i 1 n j A i
8
Insertion-Sort(A) n = A.length for j = 2 to n key = A[j] // inseriamo A[j] nella sequenza // ordinata A[1..j-1] i = j - 1 while i > 0 and A[i] > key A[i+1] = A[i] i = i – 1 A[i+1] = key
9
Insertion-Sort(A) n = A.length for j = 2 to n key = A[j] // inseriamo A[j] nella // sequenza ordinata // A[1..j-1] i = j – 1 while i > 0 and A[i] > key A[i+1] = A[i] i = i – 1 A[i+1] = key void Insertion-Sort(vector A) { int i, j, n = A.size(); T key; for (j = 1; j < n; j++) { key = A[j]; // inseriamo A[j] nella // sequenza ordinata // A[0..j-1] i = j – 1; while (i >= 0 && A[i] > key) { A[i+1] = A[i]; i--; } A[i+1] = key; } }
10
Insertion-Sort(A) n = A.length for j = 2 to n // inserisce A[j] nella // sequenza ordinata // A[1..j-1] key = A[j] i = j – 1 while i > 0 and A[i] > key A[i+1] = A[i] i = i – 1 A[i+1] = key A 5 2 8 4 7 1 3 6 key 5 # 8 4 7 1 3 6 2 # 5 8 4 7 1 3 6 2 5 8 4 7 1 3 6 2 5 # 4 7 1 3 6 8 2 5 8 4 7 1 3 6 2 5 8 # 7 1 3 6 4 2 # 5 8 7 1 3 6 2 4 5 8 7 1 3 6 2 4 5 8 # 1 3 6 7 2 4 5 # 8 1 3 6 2 4 5 7 8 1 3 6
11
Insertion-Sort(A) n = A.lenght for j = 2 to n // inserisce A[j] nella // sequenza ordinata // A[1..j-1] key = A[j] i = j – 1 while i > 0 and A[i] > key A[i+1] = A[i] i = i – 1 A[i+1] = key A 2 4 5 7 8 1 3 6 key 2 4 5 7 8 # 3 6 1 # 2 4 5 7 8 3 6 1 2 4 5 7 8 3 6 1 2 4 5 7 8 # 6 3 1 2 # 4 5 7 8 6 1 2 3 4 5 7 8 6 1 2 3 4 5 7 8 # 6 1 2 3 4 5 # 7 8 1 2 3 4 5 6 7 8
12
Insertion-Sort(A) n = A.length for j = 2 to n key = A[j] i = j - 1 while i > 0 and A[i] > key A[i+1] = A[i] i = i – 1 A[i+1] = key Analisi di Insertion-Sort: correttezza Correttezza InsertionSort 1n j A i 1 n j A 1n j A i 1n j A i1 n j A
13
Analisi di Insertion-Sort: complessità Insertion-Sort(A)// n = A.length // for j = 2 to n // key = A[j] // i = j -1 // while i > 0 and A[i] > key// A[i+1] = A[i] // i = i – 1// A[i+1] = key//
14
caso migliore:
15
caso peggiore:
16
caso medio:
17
TECNICA DIVIDE ET IMPERA
18
5 2 8 0 4 7 1 9 3 2 6 0 47255 285 2 80 4 75 2 8 0 4 71 9 3 2 62 61 9 31 93629140 5 2 8 0 4 7 1 9 3 2 6 5 2 8 0 4 71 9 3 2 6 5 2 80 4 72 61 9 3 5 28 25 0 471 93 4091 62 0 1 2 2 3 4 5 6 7 8 9 0 2 4 5 7 8 2 5 8 2 5 52 8 1 2 3 6 9 0 4 72 61 3 9 0 471 93 4091 62 Soluzione2: Algoritmo Merge-Sort
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.