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 è la complessità temporale dell'algoritmo standard di programmazione dinamica per la sottosequenza comune più lunga di stringhe di lunghezze m e n?

  1. AO(m + n)
  2. BO(2m+n)
  3. CO(mn log n)
  4. DO(mn)
2.Algoritmi e complessitàDifficile

Perché qualsiasi ricerca basata su confronti in un array ordinato richiede Ω(log n) confronti nel caso peggiore?

  1. AOgni confronto richiede un tempo logaritmico
  2. BLa ricerca binaria è l'unico algoritmo possibile e richiede log₂ n confronti
  3. CUn albero di decisione con n esiti possibili deve avere profondità almeno log₂ n
  4. DOgni elemento deve essere confrontato almeno una volta
3.Strutture datiMedia

Come si inserisce un nuovo elemento in un heap binario?

  1. ALo si pone alla fine dell'array e lo si fa risalire finché viola la proprietà di heap
  2. BLo si pone nella radice e lo si fa scendere
  3. CSi ricostruisce da zero l'intero heap
  4. DLo si inserisce nella posizione ordinata spostando di un posto a destra tutti gli elementi più grandi
4.Strutture datiDifficile

Perché in un filtro di Bloom standard non si possono semplicemente eliminare gli elementi azzerandone i bit?

  1. AI filtri di Bloom memorizzano gli elementi completi, che una volta sottoposti a hash non si possono più ritrovare
  2. BQuei bit possono appartenere anche ad altri elementi, il che causerebbe falsi negativi
  3. CL'eliminazione porterebbe il tasso di falsi positivi al 100%
  4. DI bit di un filtro di Bloom non si possono modificare dopo la creazione
5.Teoria dei grafiMedia

Quanti cicli hamiltoniani diversi H ha il grafo completo K6? I cicli che differiscono solo per il vertice iniziale o per il verso contano come lo stesso.

K6
H =
6.Teoria dei grafiDifficile
1341426916ABCDE

L’algoritmo di Kruskal costruisce un albero di copertura minimo. Clicca il lato che aggiunge come lato numero 2; i lati saltati non contano.

k = 2
  1. 1lato AB
  2. 2lato AC
  3. 3lato BC
  4. 4lato BD
  5. 5lato CE
  6. 6lato DE
  7. 7lato BE

3Soluzioni

1.Algoritmi e complessità

Risposta: D · O(mn)

Perché è questa la risposta

La tabella ha (m + 1)(n + 1) celle e ciascuna si calcola in O(1) dalle vicine.

Risposta

D · O(mn)
2.Algoritmi e complessità

Risposta: C · Un albero di decisione con n esiti possibili deve avere profondità almeno log₂ n

Perché è questa la risposta

Ogni confronto al massimo dimezza l'insieme delle possibilità rimanenti, quindi distinguere n posizioni richiede almeno log₂ n confronti.

Risposta

C · Un albero di decisione con n esiti possibili deve avere profondità almeno log₂ n
3.Strutture dati

Risposta: A · Lo si pone alla fine dell'array e lo si fa risalire finché viola la proprietà di heap

Perché è questa la risposta

Aggiungere alla fine mantiene l'albero completo; gli scambi con il genitore ripristinano l'ordine in O(log n) passi.

Risposta

A · Lo si pone alla fine dell'array e lo si fa risalire finché viola la proprietà di heap
4.Strutture dati

Risposta: B · Quei bit possono appartenere anche ad altri elementi, il che causerebbe falsi negativi

Perché è questa la risposta

Azzerare un bit condiviso farebbe sembrare assente un altro elemento; i filtri di Bloom a conteggio (counting Bloom filter) usano contatori invece di bit per permettere l'eliminazione.

Risposta

B · Quei bit possono appartenere anche ad altri elementi, il che causerebbe falsi negativi
5.Teoria dei grafi

Risposta: H = 60

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.

Conta

H = (6 − 1)!/2 = 120/2 = 60

Risposta

H = 60
6.Teoria dei grafi

Risposta: lato AC

Cammini minimi e alberi di copertura: l’algoritmo di Dijkstra fissa un vertice per passo: il vertice non fissato con la distanza provvisoria minima. La sua distanza è allora definitiva, e ogni vertice adiacente v riceve d(v) = min(d(v), d(u) + w(u, v)). L’algoritmo di Kruskal costruisce un albero di copertura minimo prendendo i lati dal più leggero al più pesante e saltando ogni lato che chiuderebbe un ciclo; l’algoritmo di Prim fa crescere un solo albero da un vertice iniziale aggiungendo sempre il lato più leggero che ne esce. Un albero di copertura di n vertici ha n − 1 lati.

Algoritmo di Kruskal

1. BD (2)
2. AC (4)
3. CE (6)
4. DE (9)

lato numero 2

AC

Risposta

lato AC

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