Algoritmi e Strutture dei Dati

039AA ALGORITMI E STRUTTURE DEI DATI
(6 crediti, Corso di Laurea in Matematica)

AA339 INFORMATICA II (mutuazione)
(5 crediti, Corso di Laurea in Fisica)

    AVVISI

    MOTIVAZIONI

    OBIETTIVI FORMATIVI

    PREREQUISITI E METODOLOGIA

    MODALITÀ D'ESAME

    CONTENUTI

    PROGRAMMA

    Registro delle lezioni disponibile in linea ed elenco delle attività di laboratorio in fondo a questa pagina (NOTA - studenti di Fisica: prime 25 lezioni per 5 crediti corrispondenti ai punti 1-5 sotto; studenti di Matematica: tutte le 35 lezioni per 6 crediti corrispondenti ai punti 1-9 sotto).

    Registro delle attività laboratorio.

    1. Problemi computazionali. Indecibilità di problemi computazionali - Trattabilità di problemi computazionali (rappresentazione e dimensione dei dati, algoritmi polinomiali ed esponenziali) - Problemi NP-completi - Modello RAM e complessità computazionale.
    2. Sequenze: array. Sequenze lineari: modalità di accesso e allocazione della memoria, array di dimensione variabile - Opus: scheduling della CPU (ordinamento per selezione e per inserimento) - Complessità di problemi computazionali (limiti superiori e inferiori) - Ricerca di una chiave (ricerca binaria) - Ricorsione e paradigma del divide et impera (moltiplicazione veloce di numeri, ordinamento per fusione, ordinamento e selezione per distribuzione) - Alternativa al teorema fondamentale delle ricorrenze - Opus: array a più dimensioni e matrici nella grafica (moltiplicazione veloce, sequenza ottima di moltiplicazioni) - Paradigma della programmazione dinamica (sottosequenza comune più lunga, partizione di un insieme di interi, problema della bisaccia, pseudo-polinomialità).
    3. Sequenze: liste. Liste (ricerca, inserimento e cancellazione, liste doppie e liste circolari) - Opus: problema dei matrimoni stabili - Liste randomizzate. - Liste ad auto-organizzazione - Tecniche di analisi ammortizzata.
    4. Alberi. Alberi binari (algoritmi ricorsivi, inserimento e cancellazione) - Opus: minimo antenato comune - Visita per ampiezza: rappresentazione implicita e succinta (rank, select, limite inferiore sullo spazio) - Alberi cardinali, alberi ordinali e parentesi bilanciate.
    5. Dizionari. Liste doppie - Tabelle hash - Alberi binari di ricerca (AVL) - Opus: trie, ricerca testuale e ordinamento di suffissi.
    6. Grafi. Grafi (alcuni problemi, rappresentazione, cammini minimi e chiusura transitiva mediante moltiplicazione di matrici) - Opus: colorazione di grafi (assegnazione delle lunghezze d'onda e grafi a intervalli).
    7. Pile e code. Pile (implementazione mediante array e mediante riferimenti) - Code (implementazione mediante array e mediante riferimenti) - Opus: visite di grafi (ampiezza, profondità) - Grafi diretti aciclici e ordinamento topologico.
    8. Code con priorità. Code con priorità (heap e ordinamento heapsort).
    9. NP-completezza. Definizione delle classi P, NP, NPC - Riduzioni polinomiali. Algoritmi di approssimazione.

    TESTI E MATERIALE DIDATTICO

    MATERIALE INTEGRATIVO

    MISCELLANEA