[IV] - Fondamenti di Informatica 2

Download PDF appunti


Algoritmi

    • Approccio algoritmico. Metodo risolutivo, semialgoritmo, algoritmo. Proprietà. Tipologia dei problemi. Strategia vincente dei giochi finiti.

Macchina di Turing

    • Funzionamento e struttura, matrice funzionale, applicabilità. Composizione di matrici. Ipotesi fondamentale degli algoritmi. Algoritmo di imitazione. Problema della codifica. Insieme semidecidibile e decidibile. Indecidibilità della terminazione.
    • Struttura e funzionamento della macchina di Von Neumann.

Grafi e alberi

    • Grafo e grafo diretto. Cammino e sua lunghezza, ciclo. Grafo connesso, fortemente e debolmente. Albero e albero diretto. Implementazioni (plessi, liste multiple, matrici di adiacenza, liste di adiacenza). Attraversamenti (breadth-first e depth-first). Grafo pesato. Algoritmo di Dijkstra. Chiusura transitiva. Algoritmo a matrice di adiacenza. Algoritmo di Warshall. Albero ricoprente e minimo albero ricoprente. Algoritmo di Prim. Algoritmo di Kruskal.

Metodi di ricerca

    • Ricerca lineare: tabella ordinata e non ordinata, costro con equiprobabilità, distribuzione di Ziff, legge di Helsing.
    • Ricerca logaritmica: metodo standard, metodo con interpolazione.
    • Albero binario di ricerca: albero bilanciato (AVL), perfettamente bilanciato, quasi perfettamente bilanciato, fattore di bilanciamento, teorema AVL, algoritmi di bilanciamento.
    • Ricerca hash: concetto di funzione hash, hash perfetto e non perfetto, hash per chiavi alfanumeriche, risoluzione delle collisioni (catene interne ed esterne), risoluzione collisioni "open" (scansione lineare, scansione quadratica normale e pesata, scansione random), double hashing, strategie di cancellazione, valutazione metodi hash.

Modelli per memoria secondaria

    • Memorie secondarie: unità a nastro, unità a disco, metodi di accesso, organizzazione sequenziale e ad accesso mirato (ordinamento per posizione, per chiave, struttura sequenziale ordinata e non).
    • File Hash: funzionamento a blocchi, recupero overflow, hash dinamico.
    • File indicizzati: organizzazione secondaria, concetto di indice e principio di guadagno, ISAM (overflow interno ed esterno).
    • B-alberi: alberi AVL in memoria secondaria (strategia lineare, raggruppata e ottima), definizione di B-albero, criterio di ricerca, evoluzione di un B-albero, esplorazione ordinata, gestione di overflow, analisi delle prestazioni, costo di inserzione, pregi e difetti, albero B+ e B*.

Complessità

    • Tipologia di macchine di Turing. Macchina di Turing non deterministica. Definizione di complessità in tempo. Macchina Ram e formato delle istruzioni.
    • Complessità computazionale: criterio del costo uniforme e logaritmico, ipotesi della teoria della complessità e teorema di Ram-Turing, operazione dominante, complessità asintotica e regole di composizione.
    • Modelli per linguaggi di alto livello: regole dei costi (I/O, cicli, test, sequenze), valore di taglio e tirannia della crescita, formule di ricorrenza (selection sort, ricerca binaria, quicksort perfetto e medio).
    • Algoritmi ottimali di ordinamento: albero binario esteso (EPL, IPL), albero quasi perfettamente bilanciato (EPL), concetto di albero di decisione come algoritmo, limite minimo dell'ordinamento, enumerazione, backtracking, backtracking ricorsivo, branch and bound.
    • Modelli di calcolo: correlazione tra modelli, problemi polinomialmente decidibili (P e NP), riducibilità dei problemi.

Linguaggi

    • Assemblatore: necessità, istruzioni, pseudoistruzioni, macroistruzioni, tavola delle macroistruzioni, codici operativi, simboli, a due passi e ad un passo.
    • Linguaggi formali: Sintassi, semantica e linguaggio, operazione concatenazione, teorema di Cantor, grammatica e produzioni, progetto di generazione diretta e linguaggio formale, produzione (albero sintattico e grafico sintattico), operazioni sui linguaggi (unione, intersezione, differenza, potenza ennesima, chiusura), classificazione di Chomsky (tipo 0,1,2,3), grammatiche equivalenti e non ambigue.
    • Automi a stati finiti: automa deterministico con grammatiche regolari, automa non deterministico, trasformazione di automi.
    • Analisi sintattica: obiettivi e strategie, concetto di analisi top-down, eliminazione backtracking, concetto di analisi bottom-up, grammatica a operatori a precedenza, teorema di Floyd e applicazione.
    • Struttura del compilatore: compilatore e interpreti, analisi lessicale, sintattica e semantica, sintesi del programma.
fondamenti di informatica 2