• Non ci sono risultati.

Esame del 21 luglio 2003

N/A
N/A
Protected

Academic year: 2021

Condividi "Esame del 21 luglio 2003"

Copied!
3
0
0

Testo completo

(1)

1

Algoritmi e Programmazione Avanzata

Esame del 21 luglio 2003

Parte I (teoria)

Tempo: 45 minuti, NON è possibile consultare libri o appunti.

Esercizio 1 (2 punti)

Si supponga di voler applicare l’algoritmo di insertion sort al vettore 4 23 12 41 54 10 8 12

Si determini il numero di operazioni di confronto eseguite durante l’esecuzione dell’algoritmo.

Esercizio 2 (2 punti)

Si disegni il BST risultante al termine dell’inserimento dei seguenti valori 40 9 21 25 35 91 8 70 16 14 12 20

Si esegua poi la cancellazione dei valori 91, 9 e 35, e si disegni nuovamente l’albero risultante.

Esercizio 3 (2 punti)

Si consideri una tabella di hash basata su open addressing che utilizza la tecnica del linear probing per risolvere le collisioni. La tabella è inizialmente vuota. Su di essa viene eseguita una sequenza di operazioni di inserimento di elementi con chiave corrispondente alle seguenti stringhe :

orazio, pippo, pluto, paperino, minnie, gastone, qui, quo, qua, paperoga, topolino, paperina,

Si mostri il contenuto della tabella di hash al termine della sequenza di inserimenti, assumendo che la sua dimensione sia pari a M=13 e che la funzione di hash utilizzata corrisponda al resto della divisione tra la somma dei codici ASCII delle lettere componenti la stringa ed il valore M.

Si ricorda che il codice ASCII della lettera ‘a’ è 97 e della lettera ‘z’ è 122.

(2)

2 Esercizio 4

Sia dato il seguente grafo:

E F

I L

A B C D

G H

M N

9

8

5

1

1

3

2 1

2 3

3 2

7 1

8

2

Punto a (2 punti)

Si disegnino la matrice di adiacenza e la lista di adiacenza del grafo.

Punto b (3 punti)

Si visiti il grafo in profondità ed in ampiezza, considerando A come vertice di partenza. Si indichi la sequenza di visita dei vertici nei due casi. Qualora necessario, si trattino i vertici secondo l’ordine alfabetico.

Esercizio 5 (4 punti)

Si determini l’albero dei cammini minimi a partire dal vertice A per il grafo di cui sopra utilizzando l’algoritmo di Dijkstra.

(3)

3

Parte II (programmazione)

Tempo: 60 minuti, è possibile consultare libri o appunti.

Si scriva un programma C che risolva il problema del quadrato magico di dimensione 4x4. Un quadrato magico di dimensione N è una matrice in cui sono presenti tutti e soli i numeri tra 1 e N2, disposti in modo tale che la somma dei valori su tutte le righe è costante, ed è pari alla somma dei valori su tutte le colonne e sulle due diagonali.

Esempio

Il seguente è un quadrato magico di dimensione 3:

8 3 4 1 5 9 6 7 2

Riferimenti

Documenti correlati

• Con un appropriato dimensionamento della tabella hash, è possibile avere nel caso medio un costo (1) per tutte le operazioni. ‣ Intuitivamente, le liste di trabocco sono

Se si considera ogni chiave c come un intero (di |c| bit), è possibile trasformarla in un indirizzo considerando il resto della divisione (modulo) per M :. H(c) =

• quando, in seguito a un inserimento, si ha α = 1 (cioè ogni lista contiene in media 1 elemento), si crea una nuova tabella di dimensione 2M (cioè doppia), vi si trasferiscono i

2 h(k) 6= l , i.e., the element is in the middle of a chain ⇒ Save the pointer to the next element, erase the content of this slot and push it to the free slots stack. ,→ As for

Scrivere un programma che legga da tastiera una sequenza di n interi NON distinti e li inserisca senza duplicati in una tabella hash di dimensione 2n posizioni utilizzando

Data una tabella hash T in cui le collisioni sono risolte con le liste di trabocco, definire una procedura di ricerca di una chiave che sposti la chiave cercata, se presente

Scrivere un programma che legga da tastiera una sequenza di n interi NON distinti e li inserisca senza duplicati in una tabella hash di dimensione 2n posizioni utilizzando

[r]