elenco    
        corso    

Algoritmica

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

Docente

Fabrizio Luccio   luccio@di.unipi.it  Stanza 278  Tel. 0502212720

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 enumerazione. Strutture di dati elementari e avanzate. Problemi su sequenze, matrici, alberi e grafi. Problemi P, NP, RP, e NP-completi.

Programma

  1. Problemi computazionali
    1. Indecidibilità
    2. Trattabilità
    3. Complessità computazionale: limiti superiori e inferiori.
  2. Sequenze: array
    1. Ricerca di una chiave
    2. Problemi risolti ricorsivamente ("divide et impera")
    3. Problemi risolti per programmazione dinamica
  3. Sequenze: liste
  4. Alberi
    1. Alberi binari
    2. Visite
  5. Grafi
    1. Rappresentazione
    2. Algoritmi di ricerca e cammini in un grafo
  6. Pile e code
    1. Rappresentazione
    2. Applicazioni a diversi problemi
    3. Code con priorità: Heap e ordinamenti
  7. Dizionari
    1. Alberi AVL e B-alberi
    2. Tabelle hash
    3. Trie
  8. NP-completezza
    1. Le classi P, NP, NPC
    2. Riduzioni polinomiali
    3. Algoritmi di approssimazione
     

Bibliografia

  1. Dispense del docente depositate presso la sede di La Spezia.
  2. Testi consigliati per approfondimenti:
    • C.Demetrescu, I.Finocchi, G.F.Italiano, Algoritmi e strutture dati, McGraw Hill 2004.
    • P.Crescenzi, G.Gambosi, R.Grossi, Strutture di dati e algoritmi, Pearson-Addison Wesley 2006.

Modalità di esame


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


home


email