• Non ci sono risultati.

Algoritmi e Strutture dati a.a. 2013/2014

N/A
N/A
Protected

Academic year: 2021

Condividi "Algoritmi e Strutture dati a.a. 2013/2014"

Copied!
16
0
0

Testo completo

(1)

Algoritmi e Strutture dati a.a. 2013/2014

Informazioni sul corso

Dr Maria Federico

(2)

Informazioni docente

• E-mail docente: fdrmra@unife.it

• Ricevimento:

– Mercoledì 15:00-16:00 presso ufficio docenti a contratto (3°piano), Dipartimento di

Matematica e Informatica, Campus scientifico tecnologico Blocco B via Saragat 1

– Su appuntamento (inviare e-mail)

(3)

Algoritmi e Strutture dati Informazioni sul corso

Università degli studi di Ferrara Maria Federico

3

Informazioni lezioni

• Martedì, Mercoledì 16:30-18:30

• Giovedì 14:30-17:30 (7 ore a settimana)

• Aula F6

• 1 Ottobre 2013 – 17 Dicembre 2014 (80 ore, 10 CFU per Informatica)

• 1 Ottobre 2013 – 14 Novembre 2014 (48

ore, 6 CFU per Matematica)

(4)

Perché un corso di algoritmi e strutture dati?

“Prima dei calcolatori c’erano già gli algoritmi.

Ma adesso che ci sono i calcolatori, ci sono più algoritmi e gli algoritmi sono il cuore del calcolo.”

(Prefazione Introduzione agli algoritmi e strutture dati 3/ed, Cormen et al. 2010)

Lo studio degli algoritmi costituisce la base

dell’informatica perché prima che un computer

esegua qualsiasi attività è necessario fornirgli un

algoritmo che gli indichi esattamente cosa fare

(5)

Processo di sviluppo di un programma

1. Specifica funzionale del problema

2. Analisi del problema e definizione di un algoritmo risolutivo

3. Descrizione con diagramma di flusso e/o pseudocodice

4. Traduzione dell’algoritmo in programma in linguaggio di programmazione ad alto livello

5. Compilazione

6. Esecuzione e Verifica

(6)

Cosa studieremo

• Algoritmi = descrizione precisa di una

sequenza di azioni che devono essere eseguite per giungere alla risoluzione di un problema

– Sintesi / disegno / progetto – Analisi dell’efficienza

• Strutture dati = è fondamentale che i dati siano ben organizzati e strutturati in modo che

l’algoritmo li possa elaborare efficientemente

(7)

Algoritmi e Strutture dati Informazioni sul corso

Università degli studi di Ferrara Maria Federico

7

Materiale didattico

• Libro di testo

Titolo: Introduzione agli algoritmi e strutture dati 3/ed Autori: Thomas H. Cormen, Charles E. Leiserson,

Ronald L. Rivest, Clifford Stein ISBN: 9788838665158

Pub Date: Giugno 2010

Pagine: 1030

(8)

Materiale didattico

• Libro di riferimento

Titolo: Strutture di dati e algoritmi.

Progettazione, analisi e visualizzazione Autori: Pierluigi Crescenzi, Giorgio Gambosi,

Roberto Grossi ISBN: 9788871922737 Pub Date: 2006

Pagine: 384

(9)

Algoritmi e Strutture dati Informazioni sul corso

Università degli studi di Ferrara Maria Federico

9

Materiale didattico

• Slide e altro materiale presentato a lezione

– Reperibili sulla pagina del corso

http://www.unife.it/scienze/informatica/inse gnamenti/algoritmi-strutture-dati

– Sulla home page del docente

http://algogroup.unimore.it/people/maria/

algoritmi_2013-2014.html

(10)

Propedeuticità

• Istituzioni di matematica

• Programmazione e laboratorio

• Sono consigliati come propedeutici, anche

se non costituiscono prerequisito formale

(11)

Algoritmi e Strutture dati Informazioni sul corso

Università degli studi di Ferrara Maria Federico

11

Programma del corso

1. Introduzione al corso [1, 2]

• Definizione di problema, algoritmo,

rappresentazione di algoritmi, sintesi e analisi di algoritmi, strutture dati

2. Complessità computazionale [3, 4-(4.2, 4.6)]

• Analisi asintotica, calcolo complessità

algoritmi iterativi, metodi di risoluzione delle

relazioni di ricorrenza per algoritmi ricorsivi,

classificazione problemi e NP-completezza

(cenni) [34.1, 1 Crescenzi]

(12)

Programma del corso

3. Strutture dati statiche [slide; 2.1 Crescenzi]

• Array, record

4. Algoritmi di ordinamento su array

• Iterativi: selection sort, insertion sort, bubble sort

[2 Cormen + 2.2 Crescenzi)]

• Ricorsivi: merge sort, quick sort [4, 7-(7.3); 2.5 Crescenzi]

– Tempo lineare: Counting sort, Radix sort, Bucket sort [8]

5. Algoritmi di ricerca su array [2.4 Crescenzi]

(13)

Algoritmi e Strutture dati Informazioni sul corso

Università degli studi di Ferrara Maria Federico

13

Programma del corso

6. Heap e code con priorità [6; 8.1 e 8.2 Crescenzi]

• Operazioni su heap, Heapsort

7. Strutture dati dinamiche [10, appendici B.4 e B.5; 3.1, 7.1, 7.3 Crescenzi]

• Pile, code, liste, grafi, alberi

8. Algoritmi su alberi binari [12-(12.4); 4.1, 5.4 Crescenzi]

• Visita (con generalizzazione ad albero n-

ario), ricerca e modifica per alberi binari di

ricerca

(14)

Programma del corso

9. Algoritmi su grafi [*21-(21.4); 22-(22.5), 23, *24-(24.5, 24.6); 7.4, 7.5.1 Crescenzi]

• Visita DFS e BFS, ordinamento topologico, algoritmi di Kruskal, Prim, Dijkstra, Bellman-Ford

10. Hashing [*11]

• Tabelle hash, funzioni hash, indirizzamento diretto e aperto

11. Programmazione dinamica [15-(15.4,15.5)]

12. Algoritmi golosi [16.1, 16.2]

(15)

Algoritmi e Strutture dati Informazioni sul corso

Università degli studi di Ferrara Maria Federico

15

Esame

• Prova scritta

– 4 esercizi

– Disegno di algoritmi – Analisi di algoritmi

– Applicazione di algoritmi visti a lezione – Operazioni su strutture dati

• Prova orale

– Può riguardare qualunque argomento trattato a lezione – è volta a verificare la padronanza dei concetti e delle

tecniche oggetto dell'insegnamento

È obbligatoria l’iscrizione on-line tramite il sito studiare UNIFE

durante la prova scritta NON si possono usare appunti, libri, calcolatrici,

cellulari, etc.

(16)

Domande?

Riferimenti

Documenti correlati

Si scriva una procedura Pascal, basata sulla ricerca binaria, per individuare in tempo O(log n) l’unico intero dell’intervallo 1..n+1 che non compare in V.... Si scriva

Esistono due classi di memoria: automatica e statica La classe di memoria automatica è relativa a quegli oggetti locali ad un blocco (funzione o programma) che viene liberata

E responsabilità del programmatore controllare che il numero ed il tipo degli argomenti passati ad una funzione corrisponda con quanto specificato nella dichiarazione della

L Insertion Sort è uno algoritmo di ordinamento molto efficiente per ordinare un piccolo numero di elementi. L idea di ordinamento è quella che potrebbe usare un persona

L’array A[p…r] viene “suddiviso” in due sotto- array “non vuoti” A[p… q] e A[q+1…r] in cui ogni elemento di A[p…q] è minore o uguale ad ogni elemento

Lo scopo del gioco è quello di trasferire i dischi dal paletto di sinistra a quello di destra, senza mai mettere un disco su un altro di dimensione più piccola4. Regole

Si noti che l ordine in cui i piatti sono tolti dallo stack è inversa all ordine in cui essi sono stati inseriti nello stack, visto che solo il top dello stack è accessibile..

Nella situazione iniziale, tutti gli elementi sono posti nello Stack H dove l elemento al Top è la testa (Head) della coda, mentre quello al Bottom rappresenta la fine