Suggerimento generale
Per tutti gli argomenti, è necessario conoscere:
- il problema che si vuole risolvere
- l’algoritmo o gli algoritmi che lo risolvono
- la complessità delle soluzioni
Complessità
- Valutazione complessità
- Notazione asintotica, definizione, proprietà
- Risoluzione ricorrenze
- Master theorem
- Analisi ammortizzata
- Metodo degli accantonamenti
- Metodo dell’aggregazione
- Metodo del potenziale
Algoritmi di ordinamento
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Counting Sort
- Pigeonhole Sort
- Bucket Sort
- Limite inferiore per l’ordinamento
Strutture dati
- Alberi
- Definizione
- Implementazioni
- Visita {in,pre,post}-ordine
- Visita in ampiezza
- Alberi binari di ricerca: definizione e implementazione
- Ricerca, Inserimento, Cancellazione
- Successore/predecessore, minimo/massimo
- Alberi Red-Black
- Principi generali dell’implementazione
- Rotazione, inserimento (solo cenni, non sottocasi)
- Tabelle hash
- Tabelle ad indirizzamento diretto
- Funzioni hash: metodo della divisione
- Funzioni hash: metodo della moltiplicazione
- Inserimento e cancellazione
- Concatenamento
- Indirizzamento aperto
- Ispezione lineare
- Ispezione quadratica
- Doppio hashing
- Heap binari: definizione e implementazione
- Max/MinHeapify
- BuildMax/MinHeap
- Heapsort
- Merge-Find Set
- Implementazione basata su lista
- Implementazione basata su alberi
- Euristica sul peso
- Euristica sul rango
- Euristica della compressione dei cammini
Grafi
- Definizioni principali
- Implementazione
- Visite in ampiezza e applicazioni
- Cammini minimi
- Visite in profondità e applicazioni
- Individuazione cicli
- Ordinamento topologico
- Componenti connesse
- Componenti fortemente connesse
- Alberi minimi di copertura
- Definizione matematica del problema
- Kruskal
- Prim
- Cammini minimi, singola sorgente
- Definizione matematica del problema
- Dijkstra
- Johnson
- Fredman-Tarjan
- Bellman-Ford
- Cammini minimi su DAG
- Cammini minimi, sorgenti multiple
- Floyd-Warshall
- Chiusura transitiva
- Problemi di flusso
- Definizione matematica di rete di flusso, flusso
- Metodo delle reti residue
- Ford-Fulkerson
- Edmonds-Karp
- Abbinamento grafi bipartiti
Divide-et-impera
- Descrizione della tecnica
- Moltiplicazione grandi numeri (Karatsuba), principi generali (no formule)
- Moltiplicazione di matrici (Strassen), principi generali (no formule)
Programmazione dinamica
- Descrizione della tecnica
- Zaino senza limiti
- Sottosequenza comune massimale
- String matching approssimato
- Prodotto di catena di matrici
- Insieme indipendente di intervalli pesati
Greedy
- Descrizione della tecnica
- Insieme indipendente di intervalli
- Resto
- Scheduling
- Zaino frazionario
- Compressione di Huffman
Backtrack
- Descrizione della tecnica
- Enumerazione
- Sottoinsiemi
- Permutazioni
- Inviluppo convesso
Algoritmi probalistici
- Descrizione della tecnica
- Primalità
- QuickSort probabalistico
- Problema della selezione/mediana
NP-Completezza
- Definizione
- Riduzione
- Classe P
- Classe NP
- Problemi NP-completi
Problemi approssimati
- Algoritmi pseudo-polinomiali
- Algoritmi di approssimazione
- Algoritmi branch-&-bound
- Algoritmi euristici