elenco    
        corso    

Algoritmica

Codice: AA006Crediti: 9Semestre: 1Sigla: ALG 
 
Settore disciplinare: INF/01 - Informatica

Docente

Anna Bernasconi   annab@di.unipi.it  Stanza 322  Tel. 0502213121

Prerequisiti

  1. Conoscenza di un linguaggio di programmazione (Pascal, C, C++ o Java).
  2. Dimestichezza con l'uso dei puntatori e della ricorsione.
  3. Nozioni matematiche: proprietà e limiti di funzioni, sommatorie, numeri di Fibonacci, permutazioni, coefficienti binomiali, aritmetica modulare, numeri primi, metodi di dimostrazione (per induzione, per assurdo, per casi).

Obiettivi di apprendimento

Definire formalmente la nozione di algoritmo e di modello di calcolo. Caratterizzare i dati da elaborare, organizzandoli e strutturandoli nel modo più opportuno al fine di agevolarne l'uso da parte degli algoritmi. Progettare algoritmi corretti (che risolvono cioè sempre e solo il problema a cui si è interessati) ed efficienti (cioè che lo risolvono il più velocemente possibile o usano il minor spazio di memoria possibile), attraverso l'esame di diversi paradigmi. Studiare le limitazioni inerenti dei problemi da risolvere, in particolare di quelli la cui soluzione richiede l'esame di tutte le possibilità.

Descrizione

Introduzione ai modelli di calcolo, all'analisi e alla complessità degli algoritmi. Algoritmi ricorsivi e relazioni di ricorrenza. Algoritmi di ordinamento. Strutture dati elementari e avanzate. Algoritmi su grafi e stringhe. Enumerazione e non determinismo. Problemi P, NP, RP, e NP-completi.

Programma

  1. Analisi di Algoritmi e Complessità
    1. Introduzione alla complessità di calcolo
    2. Ordini di grandezza delle funzione
    3. Algoritmi ricorsivi: Numeri di Fibonacci, Ricerca Binaria, Mergesort, Moltiplicazione rapida, Moltiplicazione di matrici.
    4. Relazioni di ricorrenza
    5. Limiti inferiori alla complessità
  2. Progetto di Algoritmi e Strutture dei Dati
    1. Code, Pile, Heap
    2. Heapsort
    3. Quicksort
    4. Ordinamento in tempo lineare
    5. Tabelle hash
    6. Alberi binari di ricerca
    7. Grafi: rappresentazione e visite
    8. Stringhe: ricerca esatta e approssimata
  3. Classi di Complessità
    1. Enumerazione e non determinismo [dispense]
    2. Classi P, NP, NPC, RP
    3. Algoritmi randomizzati [dispense]
  4. Modelli di Calcolo e Calcolabilità
    1. Indecidibilità e universalità [dispense]
    2. Macchina di Turing [dispense]
    3. Equivalenza tra modelli di calcolo [dispense]
     

Bibliografia

[CLRS] T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. "Introduzione agli algoritmi e strutture dati". McGraw-Hill 2005.
[L] F. Luccio "La struttura degli Algoritmi". Boringhieri 1982. [Fuori catalago, disponibile in biblioteca.]
Dispenze distribuite a lezione.

Modalità di esame


Ulteriore pagina web del corso: http://www.di.unipi.it/~annab/ALG-05/ALG.html


home


email