• Non ci sono risultati.

Algoritmi e programmazione avanzata Compito di teoria 2 Marzo 2002

N/A
N/A
Protected

Academic year: 2021

Condividi "Algoritmi e programmazione avanzata Compito di teoria 2 Marzo 2002"

Copied!
2
0
0

Testo completo

(1)

Algoritmi e programmazione avanzata

Compito di teoria 2 Marzo 2002

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

Esercizio 1

Sia data la sequenza di interi supposta memorizza in un vettore:

50 70 37 45 20 30 18 22 36 65 Punto a (3 punti)

La si trasformi in un heap, ipotizzando di usare un vettore come struttura dati. Si riportino graficamente i diversi passi della costruzione dell’heap ed il risultato finale. Si ipotizzi che, alla fine, nella radice dell’heap sia memorizzato il valore minimo.

Punto b (2 punti)

Si eseguano su tale heap i primi 2 passi dell’algoritmo di heapsort, riportando graficamente i passi dell’algoritmo.

Esercizio 2

Sia data la sequenza di chiavi MAISTRAC, dove ciascun carattere è individuato dal suo ordine progressivo nell’alfabeto (A=1, ..., Z=26). Si riporti la struttura di una tabella di hash di dimensione 19, inizialmente supposta vuota, in cui avvenga l’inserimento della sequenza di cui sopra.

Punto a (1 punto)

Si definisca la funzione di hash che meglio si adatta al problema.

Punto b (1 punto)

Si esegua l’inserimento delle chiavi di cui sopra supponendo di utilizzare il chaining per la gestione delle collisioni.

Punto c (1 punto)

Si esegua l’inserimento delle chiavi di cui sopra supponendo di utilizzare l’open addressing con probing lineare.

Esercizio 3

Sia dato il seguente grafo orientato e pesato.

A B

C

D E

2

1 3 2

3 6

5

F 1

2

Punto a (1 punti)

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

Punto b (2 punti)

Si visiti il grafo in profondità ed in ampiezza, considerando A come vertice di partenza. Qualora necessario, si trattino i vertici secondo l’ordine alfabetico.

Punto c (4 punti)

Si determinino i valori di tutti i cammini minimi che collegano il vertice A con ogni altro vertice mediante l’olgoritmo di Dijkstra. Si assuma, qualora necessario, un ordine alfabetico per i veritici e gli archi.

(2)

Algoritmi e programmazione avanzata

Compito di programmazione 19 Marzo 2002

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

La clinica 7 chili in 7 giorni ha deciso di computerizzare la gestione delle diete dei suoi pazienti. In particolare, nella cartella clinica di un paziente, memorizzata in un file, è memorizzato l’elenco delle pietanze che il paziente può mangiare e per le quali non presenta reazioni allergiche. Il file con la cartella clinica del paziente ha il seguente formato:

Numero pietanze ammissibili Codice pietanza numero 1 Codice pietanza numero 2 .

.

In un secondo file è memorizzato l’elenco delle pietanze che la mensa della clinica può cucinare, memorizzato nel seguente formato:

Numero pietanze

codice pietanza numero 1 numero calorie codice pietanza numero 2 numero calorie .

.

Si assuma che il codice delle pietanze ed il numero di calorie siano numeri interi.

Opzione a (max 12 punti)

Supponendo che ad ogni pasto il paziente debba mangiare esattamente M pietanze, si scriva una procedura in linguaggio C in grado di identificare un elenco di M pietanze compatibili con il paziente e il numero totale di calorie assunte nel pasto.

Opzione b (max 15 punti)

Supponendo che ad ogni pasto il paziente debba mangiare esattamente M pietanze, si scriva una procedura in linguaggio C in grado di calcolare l’elenco delle M pietanze, compatibili con il paziente, che permetta di minimizzare il numero di calorie assunte durante il pasto.

Esempio

Cartella clinica del paziente:

3 /* Numero pietanze ammissibili */

1 /* Codice pietanza numero 1 */

3 /* Codice pietanza numero 3 */

5 /* Codice pietanza numero 5 */

Elenco pietanze disponibili:

5 /* Numero pietanze */

1 2000 /* codice pietanza numero 1 numero calorie */

2 1000 /* codice pietanza numero 2 numero calorie */

3 200 /* codice pietanza numero 3 numero calorie */

4 400 /* codice pietanza numero 4 numero calorie */

5 600 /* codice pietanza numero 5 numero calorie */

Supponendo M=2, si ha:

Opzione a

Menu: 1, 3

Totale calorie: 2200

Opzione b

Menu: 3, 5

Totale calorie: 800

Riferimenti

Documenti correlati

Sarebbe interazione forte, ma non conserva S (ΔS = -2). ΔS = -1, quindi può avvenire come decadimento mediato da interazione debole Colonna destra dall’alto in basso. 1) Non

Affinché lo scritto venga valutato lo studente dovrà realizzare su PC il programma funzionante ed inviare al docente (servetti@polito.it) il codice sorgente [ ENTRO il 28.05.2007 ]

Il grafo che rappresenta le connessioni della rete wireless ha come vertici i nodi della rete e come archi, le connessioni tra i nodi che si trovano ad una distanza inferiore ad L

Si mostri il contenuto della tabella di hash al termine della sequenza di inserimenti, assumendo che la sua dimensione sia pari a M=9 e che la funzione di hash utilizzata

Dato un asterisco, un secondo asterisco è ad esso adiacente se si trova in una delle 8 posizioni contigue (stessa riga subito a sinistra o a destra, stessa colonna in alto o in

Scrivere inoltre un breve programma di prova che illustri l’uso della classe Nazione e delle sottoclassi Monarchia e

la stringa restituita dal metodo get nome stato di queste due classi deve contenere, oltre al nome, la dizione ”Regno di” nel caso di una monarchia e ”Repubblica di” nel caso di

I per poter usare i moduli della lista completa advanced (farlo come prima cosa!): module load profile/advanced. I per avere la lista dei moduli disponibili: