• Non ci sono risultati.

Si progetti un algoritmo tipo MergeSort che ordina l’array suddividendolo ricorsivamente in due sottoinsiemi di Fi−1 e Fi−2elementi ciascuno

N/A
N/A
Protected

Academic year: 2021

Condividi "Si progetti un algoritmo tipo MergeSort che ordina l’array suddividendolo ricorsivamente in due sottoinsiemi di Fi−1 e Fi−2elementi ciascuno"

Copied!
1
0
0

Testo completo

(1)

008AA – ALGORITMICA E LABORATORIO Appello del 13 Luglio 2016

Cognome Nome: N. Matricola: Corso: A B

Esercizio 1. (8 punti)

Dato un albero binario T ove i nodi hanno solo due valori rosso oppure verde, si progetti un algoritmo che conti quanti sono i nodi rossi. Si discuta la complessit`a della soluzione trovata.

Esercizio 2. (8 punti)

Si consideri un array A di n = Fi elementi, ove Fi `e l’i-esimo numero di Fibonacci. Si progetti un algoritmo tipo MergeSort che ordina l’array suddividendolo ricorsivamente in due sottoinsiemi di Fi−1 e Fi−2elementi ciascuno. Si valuti la complessit`a della soluzione trovata.

Esercizio 3. (8 punti)

In un grafo orientato aciclico (DAG) una sorgente `e un nodo con solo archi uscenti e un pozzo un nodo con soli archi entranti. Si progetti un algoritmo che, dato un DAG G, individui le sue sorgenti s1, s2...sh, h ≥ 1 e i suoi pozzi p1, p2...pk, k ≥ 1 e costruisca un nuovo grafo G0 che contenga, oltre a tutti i vertici e archi di G, un’unica sorgente s avente come archi uscenti gli archi (s, s1), (s, s2), . . . , (s, sh) e un unico pozzo avente come archi entranti gli archi (p1, p), (p2, p), . . . , (pk, p).

Esercizio 4. (6 punti)

Si mostri la matrice relativa all’esecuzione dell’algoritmo di programmazione dinamica che determina la LCS tra le due stringhe:

X = RADIXSORT e Y = RADIO

Si indichi inoltre la LCS sulla matrice stessa.

Riferimenti

Documenti correlati

• altrimenti, z può essere un nodo che prima non apparteneva alla frontiera (quando dist[z] == MAX_INT), oppure un nodo già della frontiera la cui distanza diminuisce se lo si

(2) I tipi utilizzabili sono i tipi di dato semplice (un solo valore possibile per una variabile in un certo istante durante ’esecuzione dell’algoritmo) o tipo di dato

Dato un albero binario T di n nodi, scrivere lo pseudocodice di un algoritmo efficiente che restituisce TRUE se per ogni nodo u di T vale la seguente propriet` a: il

Dato un albero binario, progettare un algoritmo efficiente che stampi le chiavi di tutti e soli i nodi 0-bilanciati e analizzarne la complessit` a..

Dato un array a di n interi, progettare un algoritmo efficiente che costruisca ricorsivamente un albero binario bilanciato tale che a[i] sia l(i+1)-esimo campo u.dato in ordine

Si definisca un algoritmo efficiente che, dato T, restituisca il puntatore alla radice del sotto-albero di T, di dimensione maggiore, formato da tutti nodi di colore rosso.. Si

Dato un albero binario i cui nodi sono colorati di rosso o di nero, progettare un algoritmo efficiente che calcoli il numero di nodi aventi lo stesso numero di discendenti rossi

Grafo particolare è quello "euleriano", dal matematico Eulero, che nel 1736 lo utilizzò per risolvere il problema dei ponti di Königsberg: un cammino o percorso è detto di