• Non ci sono risultati.

008AA – ALGORITMICA E LABORATORIO

N/A
N/A
Protected

Academic year: 2021

Condividi "008AA – ALGORITMICA E LABORATORIO"

Copied!
1
0
0

Testo completo

(1)

008AA – ALGORITMICA E LABORATORIO Appello del 5 febbraio 2018

Cognome Nome: N. Matricola: Corso: A B

Esercizio 1. [3+3 punti]

Indicare e risolvere la relazione di ricorrenza che descrive la complessit`a asintotica in tempo della seguente funzione:

foo( n ) {

if (n < 5) return 1;

i = 1;

while (i < n) { j = 1;

while (j < n) {j++;}

i++;

}

return 5 * foo(n/2);

}

Esercizio 2. [3+3 punti]

Si consideri l’albero 2-3 T mostrato in figura.

Alberi di ricerca 163

3 5 8 10 11

2 4

2 4 8 10

3 5

11

15 23 25 28

15 25

23 28

30 31 32 45 47 50 30 31 45 47

32

9

3 5 8 10 11

2 4

2 4

3 5

11

15 23 25 28

15 25

23 28

30 31 32 45 47 50 30 31 45 47

32

9

8 10

3 5 8 10 11

2 4

2 4

11

15 23 25 28

15 25

23 28

30 31 32 45 47 50 30 31 45 47

32

9

8 10

3 9

3 5 8 10 11

2 4

2 4

15 23 25 28

15 25

23

30 31 32 45 47 50 30 31 45 47

32

9

8 10

3 9

11

28 5

Figura 6.22 Inserimento del nodo con chiave ✏ in un albero -⇥.

eseguire un nuovo split sul padre di , procedendo nell’albero verso l’alto.

Nel caso peggiore, quando tutti i nodi lungo il cammino avevano gi`a tre figli, aggiungeremo all’albero una nuova radice. I valori e ⇥ dei nodi incontrati lungo la risalita vanno anch’essi aggiornati opportunamente.

Un esempio di inserimento `e illustrato in Figura 6.22. Lo pseudocodice della procedura split , richiamata su un nodo con ⇣ figli, `e inoltre mostrato in Figu- ra 6.23 (lo pseudocodice non mostra come aggiornare i campi ed ⇥ di ciascun nodo: aggiungere le opportune istruzioni pu`o essere un utile esercizio). Poich´e ciascuno split richiede tempo costante e l’altezza dell’albero `e ⌅⌦↵ ⌅⇧, nel caso peggiore l’inserimento richiede tempo ⇡⌅⌦↵ ⌅⇧.

1. Disegnare l’albero 2-3 T1 ottenuto da T rimuovendo il nodo contenente la chiave 15.

2. Disegnare l’albero 2-3 T2 ottenuto da T1 inserendo un nodo contenente la chiave 12.

Esercizio 3. [5+2 punti]

E dato un grafo orientato G = (V, E). Dati tre vertici x, y e z e un intero k, si deve stabilire se esiste un ciclo` che attraversa i tre vertici e consiste di al pi`u k archi.

1. Dare una realizzazione dell’algoritmo in pseudocodice, e commentarla.

2. Valutare la complessit`a dell’algoritmo proposto.

Esercizio 4. [3+5+3 punti]

Date le stringhe A = P AST A e B = P OST ,

• mostrare la formula applicata dall’algoritmo di programmazione dinamica EDIT DISTANCE,

• mostrare il contenuto della tabella che l’algoritmo riempie dinamicamente

• indicare come l’algoritmo deriva la soluzione dalla tabella (intesa come sequenza di operazioni — inserimento, cancellazione e sostituzione — per trasformare la stringa A nella stringa B).

Riferimenti

Documenti correlati

Calcolare la visita DFS su G e si mostri l’albero DFS specificando anche il tipo di archi individuati dalla visita (ossia dell’albero, indietro, in avanti, attraversamento – o

(4+3+3 punti) Si progetti un algoritmo ricorsivo basato sulla tecnica Divide et Impera che calcola il secondo elemento pi` u grande di un vettore A di n interi, senza modificarlo..

(4+4) Si definisca la relazione che consente di calcolare mediante Programmazione Dinamica la Edit Distance di due stringhe S1 e S2, nell’ipotesi che l’errore di mismatch abbia costo

• Si diano le regole per navigare sull’heap ternario, cio` e le regole per cui, dato il nodo i, si possa accedere direttamente ai 3 figli o al padre.. • Si fornisca l’algoritmo

Dato un albero binario T in cui ogni nodo contiene un intero positivo, diciamo che la media di un sottoalbero non vuoto ` e la somma degli interi contenuti nei suoi nodi diviso

In caso di risposta affermativa al punto 2, disegnare l’albero di decisione corrispondente all’algoritmo trovato che risolve il problema con due

Un grafo non orientato ` e detto 2-colorabile se ` e possibile attribuire a ogni vertice uno tra due colori in modo che vertici adiacenti siano colorati con colori distinti..

Progettare e descrivere in pseudocodice un algoritmo di tipo divide et impera per calcolare la somma di n interi positivi, ciascuno di valore Θ(1), memorizzati in un array1.