Sei sulla pagina 1di 1

Algoritmi e Principi dell'Informatica

III Prova in itinere


8 giugno 2018

Esercizio 1
Si considerino due array A e B, ciascuno contenente n chiavi distinte. Si progetti un algoritmo
efficiente per determinare l’insieme di chiavi che compaiono in A o in B ma non in entrambi gli
array. Si valuti e si discuta la complessità dell'algoritmo proposto.

Esercizio 2
Si consideri una tabella di hash di 11 elementi. Inserire la seguente sequenza di chiavi,
considerando come funzione di hash h=K mod 11

55, 48, 61, 34, 22, 12, 25, 33, 28, 65

e come politica di risoluzione per le collisioni:


a) Il linear probing
b) La variante di quadratic probing data da: (i+i2)
c) La tecnica di doppio hashing con h2(K)=1+(K mod 10)

Esercizio 3
Si consideri un grafo orientato pesato. Si supponga che il peso sugli archi possa valere
solamente 1, 2 oppure 3. Si vuole calcolare il percorso più breve da un nodo di partenza verso
un nodo di destinazione. Si valuti, attraverso la definizione di algoritmi opportuni e la loro
analisi di complessità, se convenga o meno trasformare il grafo iniziale in un grafo non pesato
con cammini composti rispettivamente da 1, 2, e 3 archi.

Nota: gli algoritmi possono essere descritti tramite codice, pseudocodice o anche a parole purchè
la descrizione sia chiara e completa