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

Qual è il tempo di esecuzione del radix sort LSD su n interi con d cifre in base k?

  1. AO(n²)
  2. BO(n log n)
  3. CO(d(n + k))
  4. DO(dn log k)
2.Algoritmi e complessitàDifficile

Per dimostrare che un nuovo problema X è NP-difficile, che cosa devi fare?

  1. ADimostrare che X si può verificare in tempo polinomiale
  2. BRidurre in tempo polinomiale X a un problema NP-difficile noto
  3. CDimostrare che X non ha un algoritmo polinomiale per input piccoli
  4. DRidurre in tempo polinomiale un problema NP-difficile noto a X
3.Strutture datiMedia

Che cosa è vero per la matrice di adiacenza di un grafo non orientato?

  1. AÈ simmetrica rispetto alla diagonale principale
  2. BOgni riga contiene esattamente un 1
  3. CÈ sempre triangolare superiore
  4. DLa sua diagonale principale contiene sempre degli uno
4.Strutture datiDifficile

Quale garanzia danno le regole degli alberi rosso-neri sull'altezza di un albero con n chiavi?

  1. AL'altezza è esattamente log2 n
  2. BL'altezza è al massimo log2 n + 1
  3. CL'altezza è al massimo 2 log2(n + 1)
  4. DL'altezza è al massimo n / 2
5.Teoria dei grafiMedia
ABCDEFGCircuito eulerianoCammino euleriano, nessun circuitonessuna delle due

Il grafo connesso ha un circuito euleriano, un cammino euleriano che non è un circuito, oppure nessuno dei due? Clicca la tua risposta.

|V| = 7|E| = 7
  1. 1Circuito euleriano
  2. 2Cammino euleriano, nessun circuito
  3. 3nessuna delle due
6.Teoria dei grafiDifficile
ABCDE

Quanti cammini di lunghezza 3 vanno da D a C? Un cammino può ripetere vertici e lati. Chiama il numero N.

M = matrice di adiacenzaL = 3
N =

3Soluzioni

1.Algoritmi e complessità

Risposta: C · O(d(n + k))

Perché è questa la risposta

Ciascuna delle d passate è un counting sort che costa O(n + k), quindi per d e k fissati il totale è lineare in n.

Risposta

C · O(d(n + k))
2.Algoritmi e complessità

Risposta: D · Ridurre in tempo polinomiale un problema NP-difficile noto a X

Perché è questa la risposta

Se un problema difficile noto può essere trasformato efficientemente in X, un algoritmo veloce per X risolverebbe anche il problema noto.

Risposta

D · Ridurre in tempo polinomiale un problema NP-difficile noto a X
3.Strutture dati

Risposta: A · È simmetrica rispetto alla diagonale principale

Perché è questa la risposta

In un grafo non orientato l'arco {u, v} implica che siano impostati sia M[u][v] sia M[v][u], quindi la matrice coincide con la sua trasposta.

Risposta

A · È simmetrica rispetto alla diagonale principale
4.Strutture dati

Risposta: C · L'altezza è al massimo 2 log2(n + 1)

Perché è questa la risposta

Ogni cammino ha lo stesso numero di nodi neri e i nodi rossi non possono essere adiacenti, quindi il cammino più lungo è al massimo il doppio del più corto, il che dà un'altezza O(log n).

Risposta

C · L'altezza è al massimo 2 log2(n + 1)
5.Teoria dei grafi

Risposta: nessuna delle due

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.

Gradi

deg(A) = 1, deg(B) = 3, deg(C) = 2, deg(D) = 3, deg(E) = 2, deg(F) = 2, deg(G) = 1

Vertici dispari

A, B, D, G → 4
nessuna delle due

Risposta

nessuna delle due
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 0 0 0
B: 1 0 1 1 1
C: 0 1 0 0 1
D: 0 1 0 0 1
E: 0 1 1 1 0

Un altro passo

(M³)DC = 1·0 + 1·1 + 2·0 + 2·0 + 1·1 = 2

Risposta

N = 2

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