====== Tema d'esame di esempio ====== Nota: questo compito non e' ancora del tutto rappresentativo, cercheremo di migliorarlo al piu' presto. Inoltre, ho fatto le soluzioni un po' di fretta -- se c'e' qualcosa che non vi torna ne parliamo a lezione. ==== Esercizio 1: Strutture Dati ==== a) Dato un 2-3-4 Tree vuoto, inserire nell'ordine i seguenti caratteri: a u k b q o g s v i x z **soluzione**: ['k'] ['b'] ['a'] ['g', 'i'] ['q', 'u'] ['o'] ['s'] ['v', 'x', 'z'] **Nota**: implementate l'inserimento nei BTree in un qualsiasi linguaggio di programmazione ed usate il programma realizzato per generare soluzioni di esercizi simili. Lo stesso approccio si puo' usare per quasi tutti gli algoritmi visti a lezione. b) Date le seguenti coppie < valore, probabilita' di ricerca >, costruire un BST con tempo di ricerca medio ottimo: a b c d e f 0.26 0.12 0.2 0.21 0.15 0.06 **soluzione**: d a e c f b **Nota**: implementate l'inserimento nei BTree in un qualsiasi linguaggio di programmazione ed usate il programma realizzato per generare soluzioni di esercizi simili. ==== Esercizio 2: Ricorrenze e complessita' ==== a) Determinare la complessita' computazionale in funzione di n ed m per il seguente frammento di codice: for(i=1; i0; k-=2) A[i,j,k]=B[i,j,k] } else { for(k=0; k0; k-=2) // m/2 A[i,j,k]=B[i,j,k] // O(1) } else { for(k=0; k O(m n lg n) b) Determinare i limiti inferiori e superiori piu' stretti possibile per T(n) per le seguenti ricorrenze: 1) T(n) = 3 T(n/4) + 2 sqrt(n) 2) T(n) = T(n-3) + n lg n 3) T(n) = 4 T(n/3) + n lg n 4) T(n) = T(n-1) + T(n-2) + n2 **soluzione**: 1) Th(n^(lg_4 3)) (caso r<1 del T. maestro semplificato) 2) Th(n2 lg n) 3) Th(n^(lg_3 4)) (caso 1 del T. maestro generale) 4) Th(n2 2^n) ==== Esercizio 3: Progetto di algoritmi ==== Progettare un algoritmo che risolva il problema dello zaino con disponibilita' illimitata di elementi di ciascun tipo. Valutarne la complessita' computazionale [bonus]. **soluzione**: Il problema dello zaino con disponibilita' illimitata si puo' affrontare con il metodo della programmazione dinamica. Lo zaino ha un peso totale massimo k, calcoliamo per ogni sotto-zaino di peso h, 0