Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Algoritmi e strutture dati EXTRA 2026, Panieri di Algoritmi E Strutture Di Dati

FUORI PANIERE ESAME Algoritmi e strutture dati (INF/01) L-31

Tipologia: Panieri

2025/2026

In vendita dal 23/02/2026

LauShane
LauShane 🇮🇹

4.7

(78)

584 documenti

1 / 17

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Algoritmi e strutture dati (INF/01)
Piano Di Studi - Indirizzo Digital Transformation & Cybersecurity
Laurea in Informatica per le Aziende Digitali L-31
Definizioni ESAME 2026 + EXTRA PANIERE
Cos’è un algoritmo?!
Procedura finita, deterministica ed ecace che risolve un problema.#
Cos’è un problema computazionale?!
Specifica formale di input ammessi e output richiesti.#
Algoritmo corretto: definizione.!
Produce l’output corretto per ogni input valido.#
Cos’è la terminazione di un algoritmo?!
La garanzia che l’algoritmo finisca in tempo finito.#
Correttezza totale vs parziale.!
La totale include la terminazione, la parziale no.#
Cos’è un invariante di ciclo?!
Proprietà vera prima e dopo ogni iterazione.#
Perché gli invarianti sono centrali?!
Servono per dimostrare la correttezza.#
Cos’è la complessità temporale?!
Funzione che descrive il tempo di esecuzione rispetto all’input.#
Cos’è la complessità spaziale?!
Memoria utilizzata dall’algoritmo.#
Notazione O-grande: significato.!
Limite superiore asintotico del costo.#
Dierenza tra O, Ω e Θ.!
O: limite superiore, Ω: inferiore, Θ: stretto.#
Caso migliore, medio, peggiore.!
Dipendono dalla distribuzione degli input.#
Perché il caso peggiore è importante?!
Garantisce prestazioni minime.#
Cos’è un algoritmo in-place?!
Usa memoria ausiliaria costante.#
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Anteprima parziale del testo

Scarica Algoritmi e strutture dati EXTRA 2026 e più Panieri in PDF di Algoritmi E Strutture Di Dati solo su Docsity!

Algoritmi e strutture dati (INF/01) Piano Di Studi - Indirizzo Digital Transformation & Cybersecurity Laurea in Informatica per le Aziende Digitali L- Definizioni ESAME 2026 + EXTRA PANIERE Cos’è un algoritmo? Procedura finita, deterministica ed efficace che risolve un problema. Cos’è un problema computazionale? Specifica formale di input ammessi e output richiesti. Algoritmo corretto: definizione. Produce l’output corretto per ogni input valido. Cos’è la terminazione di un algoritmo? La garanzia che l’algoritmo finisca in tempo finito. Correttezza totale vs parziale. La totale include la terminazione, la parziale no. Cos’è un invariante di ciclo? Proprietà vera prima e dopo ogni iterazione. Perché gli invarianti sono centrali? Servono per dimostrare la correttezza. Cos’è la complessità temporale? Funzione che descrive il tempo di esecuzione rispetto all’input. Cos’è la complessità spaziale? Memoria utilizzata dall’algoritmo. Notazione O-grande: significato. Limite superiore asintotico del costo. Differenza tra O, Ω e Θ. O: limite superiore, Ω: inferiore, Θ: stretto. Caso migliore, medio, peggiore. Dipendono dalla distribuzione degli input. Perché il caso peggiore è importante? Garantisce prestazioni minime. Cos’è un algoritmo in-place? Usa memoria ausiliaria costante.

Cos’è un algoritmo stabile? Preserva l’ordine relativo di elementi uguali. Cos’è una struttura dati? Organizzazione dei dati per accesso efficiente. Trade-off strutture dati. Tempo vs spazio, accesso vs aggiornamento. Cos’è un array? Struttura contigua con accesso diretto. Costo di accesso a un array. Tempo costante. Cos’è una lista collegata? Struttura dinamica di nodi collegati. Array vs lista. Array: accesso veloce. Lista: inserimenti efficienti. Cos’è una pila (stack)? Struttura LIFO. Operazioni fondamentali dello stack. Push, pop, top. Cos’è una coda (queue)? Struttura FIFO. Coda circolare: perché serve? Per riutilizzare lo spazio. Cos’è una deque? Coda a doppia estremità. Cos’è una lista con sentinella? Lista con nodo fittizio per semplificare i casi limite. Cos’è una tabella hash? Struttura che usa una funzione hash per l’accesso. Costo medio delle operazioni hash. Tempo costante ammortizzato. Cos’è una collisione hash? Due chiavi mappate allo stesso indice.

Heap minimo vs massimo. Min: radice minima. Max: radice massima. Operazioni principali su heap. Insert, extract-min/max. Costo delle operazioni su heap. Tempo logaritmico. Cos’è una coda con priorità? Struttura che estrae l’elemento più prioritario. Implementazione tipica. Heap binario. Cos’è un grafo? Struttura di nodi (vertici) e archi. Grafo orientato vs non orientato. Archi direzionati vs bidirezionali. Rappresentazione di un grafo. Lista di adiacenza o matrice di adiacenza. Quando usare lista di adiacenza? Grafi sparsi. Quando usare matrice di adiacenza? Grafi densi. Cos’è una visita in profondità (DFS)? Esplorazione ricorsiva dei nodi. Cos’è una visita in ampiezza (BFS)? Esplorazione per livelli. Costo di DFS e BFS. Lineare in nodi + archi. Applicazioni di BFS. Cammini minimi in grafi non pesati. Applicazioni di DFS. Rilevamento cicli, componenti connesse. Cos’è un cammino minimo? Cammino con costo totale minimo.

Algoritmo di Dijkstra: quando funziona? Grafi con pesi non negativi. Costo di Dijkstra con heap. O((V+E)logV) O((V+E)logV). Cos’è un algoritmo greedy? Algoritmo che fa scelte localmente ottimali. Quando un greedy è corretto? Quando vale la proprietà di scelta greedy. Cos’è il divide et impera? Tecnica che divide il problema in sottoproblemi. Esempio classico. Merge sort. Costo di merge sort. O(nlogn)O(nlogn). Cos’è la programmazione dinamica? Tecnica che evita ricalcoli tramite memorizzazione. Caratteristiche di un problema DP. Sottostruttura ottima e sottoproblemi sovrapposti. Top-down vs bottom-up. Memoization vs tabulazione. Esempio classico di DP. Fibonacci, zaino, LIS. Cos’è un algoritmo esponenziale? Algoritmo con costo che cresce esponenzialmente. Perché sono impraticabili? Crescono troppo velocemente. Cos’è una riduzione tra problemi? Trasformazione di un problema in un altro. Perché le riduzioni sono importanti? Per confrontare la difficoltà dei problemi. Cos’è un problema trattabile? Risolvibile in tempo polinomiale.

Cos’è un ordinamento topologico? Ordinamento lineare che rispetta le dipendenze. Quando esiste un ordinamento topologico? Solo se il grafo è un DAG. Algoritmi per ordinamento topologico. DFS o BFS (Kahn). Costo dell’ordinamento topologico. Lineare in nodi + archi. Cos’è una foresta? Insieme di alberi disgiunti. Cos’è un albero di copertura? Sottoinsieme di archi che collega tutti i nodi. Cos’è un MST? Albero di copertura a peso minimo. Algoritmi per MST. Kruskal, Prim. Differenza tra Kruskal e Prim. Kruskal ordina archi, Prim espande da un nodo. Struttura dati chiave per Kruskal. Union–Find. Cos’è Union–Find? Struttura per gestire insiemi disgiunti. Operazioni di Union–Find. Make-set, find, union. Ottimizzazioni di Union–Find. Path compression, union by rank. Costo ammortizzato di Union–Find. Quasi costante. Cos’è un grafo pesato negativo? Grafo con archi di peso negativo. Perché Dijkstra non funziona con pesi negativi? Perché viola la proprietà greedy.

Algoritmo per pesi negativi. Bellman–Ford. Costo di Bellman–Ford. O(VE)O(VE). Cosa rileva Bellman–Ford oltre ai cammini minimi? Cicli di peso negativo. Cos’è un problema NP? Problema verificabile in tempo polinomiale. Cos’è un problema NP-completo? Problema NP più difficile di tutti gli altri NP. Perché NP-completo è cruciale? Indica problemi probabilmente intrattabili. Cos’è una riduzione polinomiale? Trasformazione efficiente tra problemi. Perché le riduzioni sono asimmetriche? Preservano la difficoltà, non la soluzione. Cos’è un algoritmo approssimato? Algoritmo che garantisce una soluzione vicina all’ottimo. Quando si usano algoritmi approssimati? Per problemi NP-difficili. Cos’è un fattore di approssimazione? Quanto la soluzione può deviare dall’ottimo. Cos’è un algoritmo randomizzato? Algoritmo che usa casualità. Monte Carlo vs Las Vegas. Monte Carlo può sbagliare, Las Vegas no. Perché usare algoritmi randomizzati? Semplicità e buone prestazioni attese. Cos’è una struttura cache-friendly? Struttura che sfrutta la località di memoria. Perché la cache conta negli algoritmi? Influenza pesantemente le prestazioni reali.

Esempio di lazy strategy. Lazy deletion. Trade-off della lazy deletion. Semplicità vs spazio sprecato. Cos’è la correttezza per induzione strutturale? Dimostrazione basata sulla struttura ricorsiva dei dati o dell’algoritmo. Perché l’induzione strutturale è naturale negli algoritmi? Perché liste, alberi e grafi sono definiti ricorsivamente. Cos’è una funzione di costo? Funzione che associa a ogni input il costo dell’algoritmo. Perché il costo dipende dalla rappresentazione? Perché strutture diverse implicano operazioni diverse. Cos’è un worst-case tight bound? Limite asintotico stretto nel caso peggiore. Perché Θ è più informativa di O? Perché fissa l’ordine di crescita esatto. Cos’è una lower bound informativa? Limite inferiore che vale per ogni algoritmo della classe. Lower bound e scelta dell’algoritmo. Se l’algoritmo raggiunge la lower bound è asintoticamente ottimo. Cos’è un algoritmo ottimo? Algoritmo che raggiunge il miglior costo possibile. Ottimo asintotico vs ottimo pratico. Il primo guarda la crescita, il secondo le costanti. Cos’è una costante nascosta? Fattore ignorato nella notazione asintotica. Quando le costanti contano davvero? Per input piccoli o sistemi real-time. Cos’è un algoritmo cache-oblivious? Algoritmo efficiente senza conoscere i parametri della cache. Perché i cache-oblivious sono interessanti? Sono portabili tra architetture diverse.

Cos’è la località spaziale? Accesso a dati vicini in memoria. Cos’è la località temporale? Riutilizzo recente degli stessi dati. Perché gli array sono cache-friendly? Perché sfruttano la località spaziale. Cos’è una struttura pointer-heavy? Struttura basata su molti riferimenti (es. liste). Perché è meno cache-friendly? Accessi non contigui in memoria. Cos’è una struttura implicitamente rappresentata? Struttura senza puntatori espliciti. Esempio classico. Heap binario in array. Perché gli heap sono efficienti in pratica? Buon compromesso tra costo e località. Cos’è una decisione greedy irrevocabile? Scelta che non viene mai rivista. Perché è rischiosa? Se la proprietà greedy non vale, l’algoritmo fallisce. Cos’è una prova di correttezza greedy? Dimostrazione che esiste una soluzione ottima coerente con la scelta. Cos’è una struttura di sottoproblemi sovrapposti? Stessi sottoproblemi risolti più volte. Perché la DP batte la ricorsione pura? Evita ricalcoli esponenziali. Cos’è il trade-off tempo–spazio nella DP? Più memoria per meno tempo. Cos’è una DP su stati compressi? DP che riduce lo spazio memorizzato. Esempio tipico. DP su righe consecutive.

Costo di Hopcroft–Karp. O(VE)O(V E). Cos’è un flusso massimo? Massima quantità trasportabile in una rete. Algoritmi per max-flow. Ford–Fulkerson, Edmonds–Karp. Relazione tra max-flow e matching. Il matching è un caso particolare di flusso. Cos’è un taglio minimo? Taglio che separa sorgente e pozzo con costo minimo. Teorema max-flow min-cut. Il flusso massimo è uguale al taglio minimo. Cos’è un algoritmo pseudo-polinomiale? Polinomiale nei valori numerici dell’input. Perché è rilevante? Spiega perché alcuni problemi sembrano trattabili. Cos’è una struttura dati adattiva? Si adatta al pattern di accesso. Esempio. Splay tree. Perché gli splay sono interessanti? Ottimi ammortizzati senza bilanciamento esplicito. Cos’è un algoritmo auto-riducibile? Risolve istanze grandi usando istanze più piccole. Perché è importante in complessità? Collega decisione e ricerca. Cos’è una scelta di rappresentazione? Decisione su come modellare i dati che condiziona tutto l’algoritmo. Perché la rappresentazione viene prima dell’algoritmo? Perché determina quali operazioni sono efficienti. Cos’è un algoritmo guidato dai dati? Algoritmo progettato partendo dalle proprietà dell’input.

Esempio tipico. Counting sort per interi in range limitato. Perché counting sort batte nlognnlogn? Perché non è basato su confronti. Lower bound nlognnlogn: quando NON vale? Quando si usano informazioni extra sugli input. Cos’è un algoritmo comparison-based? Algoritmo che usa solo confronti tra elementi. Cos’è un algoritmo non comparison-based? Algoritmo che sfrutta struttura dei dati. Cos’è una decisione irreversibile costosa? Scelta che vincola tutto il resto dell’algoritmo. Esempio di decisione irreversibile. Scelta del pivot in quicksort. Perché quicksort è amato nonostante il worst-case? Ottime prestazioni medie e località di memoria. Cos’è un input avversario? Input costruito per massimizzare il costo. Perché l’analisi worst-case protegge dagli avversari? Perché non dipende dalla distribuzione. Cos’è un algoritmo robusto? Algoritmo che degrada lentamente al peggiorare degli input. Esempio di algoritmo robusto. Merge sort. Cos’è un algoritmo fragile? Algoritmo che collassa su input particolari. Esempio. Quick sort senza randomizzazione. Cos’è la randomizzazione difensiva? Uso del caso per neutralizzare input avversari.

Cos’è un’approssimazione streaming? Risultato vicino all’esatto con poca memoria. Perché è accettabile? Perché l’esattezza è impossibile o troppo costosa. Cos’è un algoritmo sublineare? Algoritmo che non legge tutto l’input. Quando è possibile? Quando si cercano proprietà globali. Cos’è una query offline? Query nota prima dell’elaborazione. Vantaggio delle query offline. Riordinamento e ottimizzazione globale. Esempio. Mo’s algorithm. Cos’è Mo’s algorithm? Tecnica per rispondere a query su array offline. Perché è interessante didatticamente? Mostra il potere dell’ordine di elaborazione. Cos’è una struttura con complessità adattiva? Struttura che migliora con pattern favorevoli. Esempio. Splay tree. Perché l’ammortizzato è spesso più realistico del worst-case? Perché riflette sequenze reali. Quando il worst-case è invece obbligatorio? Sistemi real-time e safety-critical. Cos’è un algoritmo time-critical? Algoritmo con scadenze temporali rigide. Perché gli algoritmi teoricamente ottimi possono fallire in pratica? Per cache, costanti, branch misprediction. Cos’è un micro-ottimizzazione? Ottimizzazione locale del codice.

Quando è dannosa? Se oscura la logica algoritmica. Cos’è un’ottimizzazione strutturale? Cambio di algoritmo o struttura dati. Perché è quasi sempre superiore? Agisce sull’ordine di grandezza. Cos’è un benchmark ingannevole? Test che non rappresenta carichi reali. Perché i benchmark vanno interpretati criticamente? Perché dipendono dai dati.