Algoritmi e strutture dati: pacchetto last-minute

Formulari, i passaggi chiave del metodo per ogni argomento e 6 esercizi, con le soluzioni complete in fondo.

Nuovi eserciziTorna al corso

Nella finestra di stampa scegli “Salva come PDF” per conservarne una copia sul tuo dispositivo.

1Formule e metodi

Teoria dei grafi

Lemma delle strette di mano
Σ deg(v) = 2|E|
Grafi completi
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
Grafo regolare
|E| = n·k/2
Albero e foresta
|E| = n − 1, |E| = n − c
Foglie di un albero
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
Eulero
circuito: tutti i gradi pari; cammino: esattamente 2 gradi dispari
Cicli hamiltoniani in Kn
(n − 1)!/2
Aggiornamento di Dijkstra
d(v) = min(d(v), d(u) + w(u, v))
Cammini di lunghezza L
(Mᴸ)ij

Metodo

  1. Scrivi il grado di ogni vertice; la somma dei gradi è il doppio del numero di lati.
  2. Nelle domande su Eulero, verifica che il grafo sia connesso e conta i vertici di grado dispari.
  3. Per gli alberi, usa n − 1 lati e il lemma delle strette di mano.
  4. Per Dijkstra, tieni una tabella delle distanze provvisorie e a ogni passo fissa il vertice non ancora fissato con la distanza minima.
  5. Per un albero di copertura minimo, ordina i lati per peso e salta ogni lato che chiude un ciclo (Kruskal), oppure fai crescere un solo albero a partire da un vertice iniziale (Prim).

2Esercizi

1.Algoritmi e complessitàMedia

Che cosa calcola l'algoritmo di Floyd–Warshall, e con quale velocità?

  1. AI cammini minimi da un vertice sorgente a tutti gli altri in O(V + E)
  2. BUn ordinamento topologico in O(V²)
  3. CI cammini minimi tra tutte le coppie di vertici in O(V³)
  4. DUn albero ricoprente minimo in O(E log V)
2.Algoritmi e complessitàDifficile

Quale affermazione sulla notazione o piccolo è corretta?

  1. An² = o(n)
  2. B2n = o(n), perché 2n cresce lentamente
  3. Cn = o(n), perché ogni funzione è o piccolo di se stessa
  4. Dn = o(n²), ma n non è o(n)
3.Strutture datiMedia

Quale struttura dati si usa per verificare se le parentesi in "{[()]}" sono bilanciate?

  1. AUna pila
  2. BUna coda
  3. CUna tabella hash
  4. DUn albero binario di ricerca
4.Strutture datiDifficile

Quali sono i costi in tempo e in spazio aggiuntivo dell'inversione sul posto di una lista concatenata semplice?

  1. ATempo O(n) e spazio aggiuntivo O(n)
  2. BTempo O(1) e spazio aggiuntivo O(1)
  3. CTempo O(n) e spazio aggiuntivo O(1)
  4. DTempo O(n log n) e spazio aggiuntivo O(1)
5.Teoria dei grafiMedia

Un albero ha 3 vertici di grado 3, e tutti gli altri suoi vertici sono foglie (grado 1). Quante foglie L ha?

3 × deg 3
L =
6.Teoria dei grafiDifficile
ABCDE

Quanti cammini chiusi di lunghezza 2 partono e terminano in E? Un cammino può ripetere vertici e lati. Chiama il numero N.

M = matrice di adiacenzaL = 2
N =

3Soluzioni

1.Algoritmi e complessità

Risposta: C · I cammini minimi tra tutte le coppie di vertici in O(V³)

Perché è questa la risposta

Floyd–Warshall è un algoritmo di programmazione dinamica che ammette a turno ogni vertice come punto intermedio, con tempo O(V³).

Risposta

C · I cammini minimi tra tutte le coppie di vertici in O(V³)
2.Algoritmi e complessità

Risposta: D · n = o(n²), ma n non è o(n)

Perché è questa la risposta

f = o(g) significa che f(n) / g(n) tende a 0; n / n² tende a 0, ma n / n = 1 no.

Risposta

D · n = o(n²), ma n non è o(n)
3.Strutture dati

Risposta: A · Una pila

Perché è questa la risposta

Si inserisce (push) ogni parentesi aperta e si estrae (pop) quando compare una parentesi chiusa; questa deve corrispondere a quella estratta e alla fine la pila deve essere vuota.

Risposta

A · Una pila
4.Strutture dati

Risposta: C · Tempo O(n) e spazio aggiuntivo O(1)

Perché è questa la risposta

Mantenendo tre puntatori (precedente, corrente, successivo) si può invertire ogni collegamento in un solo passaggio senza allocare nuovi nodi.

Risposta

C · Tempo O(n) e spazio aggiuntivo O(1)
5.Teoria dei grafi

Risposta: L = 5

Eulero, Hamilton e alberi: un grafo connesso ha un circuito euleriano (ogni lato una volta, di nuovo al punto di partenza) quando ogni vertice ha grado pari, e un cammino euleriano che non è un circuito quando esattamente due vertici hanno grado dispari; il cammino va allora da un vertice dispari all’altro. Un ciclo hamiltoniano visita ogni vertice una volta; Kn ne ha (n − 1)!/2. Un albero con n vertici ha n − 1 lati, e un grafo connesso con m lati mantiene un albero di copertura dopo aver tolto m − n + 1 lati.

Lemma delle strette di mano per un albero

L + 9 = 2(L + 3) − 2
L = 5

Risposta

L = 5

Scorciatoia: L = 2 + Σ (d − 2) sui vertici di grado d ≥ 3.

6.Teoria dei grafi

Risposta: N = 2

Gradi: il grado di un vertice è il numero di lati che vi arrivano. Ogni lato ha due estremi, quindi i gradi sommano al doppio del numero di lati: Σ deg(v) = 2|E| (il lemma delle strette di mano). Il numero di vertici di grado dispari è quindi pari. Kn ha n(n − 1)/2 lati, un grafo k-regolare con n vertici ne ha nk/2, e un albero con n vertici ha n − 1 lati.

Matrice di adiacenza

A: 0 1 1 0 0
B: 1 0 1 1 1
C: 1 1 0 0 0
D: 0 1 0 0 1
E: 0 1 0 1 0

Vicini comuni

(M²)EE = 0·0 + 1·1 + 0·0 + 1·1 + 0·0 = 2

Risposta

N = 2

ExamProblems · examproblems.com/courses/data-structures-and-algorithms