Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2. Si consideri un dizionario realizzato tramite tabelle hash in cui le collisioni sono risolte per
mezzo di liste di collisione. Si supponga
Algorithmche le chiavi del dizionario siano stringhe di lettere
2 Metodo
1: function metodo(nodo t)
e che la funzione hash sia definita 2:
per tavole di dimensione m = 5. Si consideri come
if t = null then
funzione hash la funzione che, data una stringa,
3: return 0
if t.left = null and t.right=null then
a. Somma i codici ascii dei caratteri dellat.val
stringa (ascii(A) = 65, ascii(B) = 66…)
4:
5: return
b. Divide il risultato per m 6: return metodo(t.left) + metodo(t.right)
c. Restituisce il resto della divisione.
3. Data una sequenza V di n numeri interi distinti, progettare un algoritmo basato sulla
programmazione dinamica per trovare la più lunga sotto-sequenza crescente di V
4. Dato il seguente pseudo-codice che riceve in input un albero binario in cui ogni nodo
memorizza un valore nella variabile val:
a. descrivere il problema che l’algoritmo vuole risolvere e scegliete un opportuno
nome per l’algoritmo
b. determinarne il costo computazionale nell’ipotesi che l’albero in input sia
perfettamente bilanciato e completo
Algorithm 1 Metodo
1: function metodo(nodo t)
2: if t = null then
3: return 0
4: if t.left = null and t.right=null then
5: return t.val 1
6: return metodo(t.left) + metodo(t.right)
5. Dato il seguente grafo, si calcoli il minimo albero ricoprente con l’algoritmo di Prim (si
forniscano commenti che permettano di comprendere come l’algoritmo è stato applicato)