PDF created with FinePrint pdfFactory trial version http://www

Laboratorio di Algoritmi e Strutture Dati
Anno Accademico 2001/2002
Prova di Esercitazione Scritta del 18 febbraio 2002
Cognome e Nome:
Numero di Matricola:
Spazio riservato alla correzione
1
2
3
4
totale
/28
/10
/12
/50
/100
Non usare altri fogli, usare solo lo spazio sottostante. Fogli differenti da questo non saranno presi in
considerazione per la correzione.
1. [25 punti]
Definire la classe modello Coda, derivandola dalla classe slist di LEDA. L'interfaccia pubblica
della classe Coda deve contenere, oltre a costruttori, distruttori e operatori di assegnamento, i
seguenti metodi:
top()
//lettura elemento dal front della coda
pop()
//lettura ed estrazione elemento dal front della coda
append(T val) //inserimento elemento val nella coda
size()
// restituisce il numero di elementi contenuti nella coda
empty()
//controllo su condizione di coda vuota
clear()
//cancellazione di tutti gli elementi contenuti nella coda
2. [10 punti]
Eseguire l’algoritmo di Prim sul grafo dato in figura a partire dal nodo S. Mostrare l’albero
costruito dall’algoritmo ad ogni passo.
7
4
5
A
S
10
2
4
V
T
6
3
11
L
9
15
P
1
Z
10
Q
13
11
R
I
5
4
12
Pag. 1
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Laboratorio di Algoritmi e Strutture Dati
Anno Accademico 2001/2002
Prova di Esercitazione Scritta del 18 febbraio 2002
3. [12 punti]
La software house Magic Arts ha bisogno di un esperto in programmazione object-oriented per
progettare l'architettura di un nuovo video-game ispirato alle avventure di Harry Potter. L'esperto
deve definire l'insieme degli oggetti coinvolti nel gioco e le loro relazioni. In particolare, è
necessario individuare l'insieme dei personaggi che appaiono nel gioco e disegnarne il grafo di
derivazione.
Dalle discussioni con gli sceneggiatori della Magic Arts è scaturito che i personaggi presenti nel
gioco rientrano nelle seguenti categorie: Maghi, Docenti, Studenti, Mostri, Animali e Oggetti
incantati. Tutti i personaggi hanno un nome, possono parlare e muoversi, anche se ogni
personaggio ha un suo modo specifico di muoversi. Ogni personaggio ha un insieme di frasi che
può pronunciare. I Maghi, che sono o Docenti o Studenti della scuola, possono lanciare
incantesimi, afferrare oggetti incantati e volare su una scopa. I Mostri e gli Animali possono
aggredire altri personaggi del gioco; inoltre, i Mostri hanno delle armi con cui combattere.
[5 punti] Disegnare il grafo di derivazione delle classi che implementano i personaggi del gioco;
[2 punti] specificare quali classi del grafo sono astratte e quali, invece, sono concrete;
[5 punti] dare la definizione della classe base.
4. [50 punti]
L'ufficio di coordinamento della polizia ha il compito di coordinare l'attività delle varie forze di
polizia che operano sul territorio. In caso di ricerca di individui pericolosi l'ufficio ha il compito di
individuare la localizzazione dei posti di blocco necessari ad impedire che i ricercati riescano a
lasciare il territorio nazionale.
Progettare un algoritmo che fissato i luogo in cui sono stati localizzati gli individui da ricercare (ad
esempio si sa che una determinata persona è presente in una data città) individui i luoghi dove
posizionare i posti di blocco necessari ad impedire l'espatrio.
Progettare ed implementare un programma C++ che data la segnalazione della presenza di individui
pericolosi in alcune cittàcalcola il minimo numero di posti di blocco necessari per tagliare tutte le
vie di fuga dal territorio nazionale dei ricercati. Il programma deve inoltre fornire una lista di città
dove posizionare i posti di blocco.
Formato dell'input.
Il territorio nazionale è rappresentato come un grafo i cui nodi sono le città e gli archi i
collegamenti, stradali o di latro genere, tra le città. Tale grafo è contenuto nel file MAPPA passato
in input al programma. Il file FRONTIERE, invece, contiene la lista delle cittàdove sono presenti
posti di frontiera; mentre, il file RICERCATI contiene la lista dei ricercati ed i luoghi (città) dove
si ritiene che essi siano nascosti.
Formato dell'output.
Il programma calcola il numero di posti di blocco e restituisce la lista delle città in cui bisogna
posizionarli.
[20 punti] Descrivere l'implementazione del programma spiegando quali strutture dati e quale
algoritmo si intendono utilizzare per risolvere il problema. In particolare, spiegare come
si intende rappresentare il problema attraverso strutture dati. Giustificare tutte le
affermazioni.
Pag. 2
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Laboratorio di Algoritmi e Strutture Dati
Anno Accademico 2001/2002
Prova di Esercitazione Scritta del 18 febbraio 2002
[25 punti] Progettare ed implementare una funzione C++ che data la segnalazione della presenza di
individui pericolosi in alcune cittàcalcola il minimo numero di posti di blocco necessari
per tagliare tutte le vie di fuga dal territorio nazionale dei ricercati. Il programma deve
inoltre fornire una lista di cittàdove posizionare i posti di blocco.
[5 punti] Analizzare, giustificando tutte le affermazioni, la complessitàdella soluzione proposta.
Pag. 3
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com