Compito
A del 01-09-05 - Programmazione
================================================================
Esercizio Assembler MIPS
================================================================
E data una rappresentazione lineare (mediante array) di un albero binario
di ricerca contenente interi positivi. In tale rappresentazione:
(i) la
posizione di indice zero dellarray contiene la dimensione in byte dellarray
stesso,
(ii) uno zero in una posizione dellarray indica lassenza
nellalbero del nodo corrispondente,
(iii) i nodi esterni (che non
contengono informazione) sono rappresentati con uno zero nella
corrispondente posizione dellarray oppure non sono esplicitamente
rappresentati. Vedi anche Figura b di seguito riportata.
Come esercizio si chiede di fornire il codice MIPS della procedura insert
per linserimento di un elemento nellalbero binario di ricerca. La
procedura:
(i) ritorna zero quando larray non ha spazio sufficiente a
contenere lelemento da inserire (overflow),
(ii) ritorna loffset della
posizione in cui è stato inserito lelemento quando nellarray vi è ha
spazio sufficiente.
N.B. La procedura ha complessità O(log n).
Fornire il codice della procedura richiesta utilizzando il file
risultato1.s
a tale scopo predisposto.
N.B. Non modificare né i dati specificati nella
direttiva .data né il codice del main presenti nel file
risultato.s, pena
la non presa in considerazione della soluzione.
Traccia di soluzione
================================================================
Esercizio JAVA
================================================================
La classe Graph contenuta nel file risultato1.zip realizza un grafo non orientato rappresentato mediante
matrice delle adiacenze. In tale rappresentazione i vertici del grafo sono
identificati dagli interi 1..N.
Come esercizio si
chiede di fornire il codice JAVA del metodo public int[] prim(int s)
che calcola con lalgoritmo di Prim (a partire dal vertice s) un Minimum
Spanning Tree delloggetto grafo a cui viene applicato e che ritorna un
array contente lalbero calcolato rappresentato come vettore dei
predecessori.
Al fine di facilitare
la codifica dellalgoritmo richiesto viene fornita la classe MyVertexPQ che
implementa il tipo di dato Coda con Priorità definito dallinterfaccia
VertexPQ.
Si noti la presenza in
tale interfaccia dei metodi particolari:
a) public boolean isIn(int v) che ritorna true se il vertice v è
nella coda;
b) public int dis(int v) che ritorna la priorità (distanza)
associata al vertice v
anche quando v è stato estratto dalla coda.
La classe Main nel file
risultato.java contiene il codice per la verifica del corretto
funzionamento del metodo richiesto. Tale codice è completo e non deve essere
modificato in alcun modo, pena la non presa in considerazione della
soluzione fornita.
Traccia di soluzione
Compito
B
del 01-09-05 - Programmazione
================================================================
Esercizio Assembler MIPS
================================================================
E data una rappresentazione lineare (mediante array) di un albero binario
di ricerca contenente interi positivi. In tale rappresentazione:
(i) la
posizione di indice zero dellarray contiene la dimensione in byte dellarray
stesso,
(ii) uno zero in una posizione dellarray indica lassenza
nellalbero del nodo corrispondente,
(iii) i nodi esterni (che non
contengono informazione) sono rappresentati con uno zero nella
corrispondente posizione dellarray oppure non sono esplicitamente
rappresentati. Vedi anche Figura b di seguito riportata.
Come esercizio si
chiede di fornire il codice MIPS della procedura find per la ricerca di un
elemento nellalbero binario di ricerca. La procedura:
(i) ritorna zero
quando lalbero non contiene lelemento cercato,
(ii) ritorna loffset della
posizione in cui è stato trovato lelemento quando nellarray contiene
lelemento cercato.
N.B. La procedura ha complessità O(log n).
Fornire il codice della
procedura richiesta utilizzando il file risultato2.s a tale scopo
predisposto. N.B. Non modificare né i dati specificati nella direttiva
.data né il codice del main presenti nel file risultato.s, pena la non
presa in considerazione della soluzione.
Traccia di soluzione
================================================================
Esercizio JAVA
================================================================
La classe Graph contenuta nel file risultato2.zip
realizza un grafo non orientato rappresentato mediante
matrice delle adiacenze. In tale rappresentazione i vertici del grafo sono
identificati dagli interi 1..N.
Come esercizio si
chiede di fornire il codice JAVA del metodo public int[] dijkstra(int s)
che calcola con lalgoritmo di Dijkstra lalbero dei cammini minimi (con
origine in s) delloggetto grafo a cui viene applicato e che ritorna un
array contente lalbero calcolato rappresentato come vettore dei
predecessori.
Al fine di facilitare
la codifica dellalgoritmo richiesto viene fornita la classe MyVertexPQ che
implementa il tipo di dato Coda con Priorità definito dallinterfaccia
VertexPQ.
Si noti la presenza in
tale interfaccia dei metodi particolari:
a) public boolean isIn(int v) che ritorna true se il vertice v è
nella coda;
b) public int dis(int v) che ritorna la priorità (distanza)
associata al vertice v
anche quando v è stato estratto dalla coda.
La classe Main nel file
risultato.java contiene il codice per la verifica del corretto
funzionamento del metodo richiesto. Tale codice è completo e non deve essere
modificato in alcun modo, pena la non presa in considerazione della
soluzione fornita.
Traccia di soluzione
|