Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Fondamenti di architettura e programmazione
Pages: [1] 2 
Nuovo Progetto Giugno Luglio
Clicca QUI per vedere il messaggio nel forum
giron
Ragazzi ecco il testo del nuovo progetto!

http://homes.dsi.unimi.it/~malchiod...giugno-2009.pdf

il_gege
Cioè. Adesso. Non so voi, ma a me sembra LEGGERMENTE pesante come progetto.

Ste Ramone
ma sti gran cazzi.. e poi che vuole.. sempre peggio -_-

Lukkei
Originally posted by giron
Ragazzi ecco il testo del nuovo progetto!

http://homes.dsi.unimi.it/~malchiod...giugno-2009.pdf


se non fumi della roba buona o non fai uso di LSD, sarà difficile capire il testo di questo progetto...:schoked:

Lukkei
ho iniziato il "debug" del testo del progetto....pagina 2, l'insieme E degli archi riferiti al grafo di esempio contiene un errore: il quarto arco è (2,5) e non (2,6) come invece riportato, inoltre credo che la matrice di incidenza non sia corretta, sto verificando....

Lukkei
la matrice di incidenza, se non ho fumato roba che mi ha fatto davvero male, secondo me dovrebbe essere la seguente:
1| 7| 0| 0| 0| 0|-7| 0
-1| 0| 2| 6| 0| 0| 0| 0
0| 0|-2| 0| 3| 3| 0| 0
0|-7| 0| 0|-3| 0| 7|-5
0| 0| 0|-6| 0|-3| 0| 5

attendo opinioni e commenti.......

Biggest_Niko
ma cos'è sta roba!!!! oddio... settembre...

Ste Ramone
Originally posted by Biggest_Niko
ma cos'è sta roba!!!! oddio... settembre...

vedo che condividiamo lo stesso pensiero :shock:

sHADOw001
Mio dio..che casino..è sempre peggio :S

giron
Lukkei io sono daccordo con te! Anche io ho notato che la matrice di incidenza verrebbe come l hai postata tu! Il prof sembrerebbe aver utilizzato un altro ordine nell'insieme di archi, ma non riesco a trovare il senso...secondo me si è sbagliato..servirebbe una sua conferma

towl88
ricominciamo come lo scorso progetto, che dopo una settimana ne fanno uscire altre due versioni modificate senza avvisare??? speriamo di no...

Supernick
Ushhhh... gps project.... uhauhauhauahu :twisted:

il_gege
Beh, se il buon giorno si vede dal mattino..

Ste Ramone
mi viene in mente il ragazzo di campagna

ste84
ma dai ma non hanno di meglio da fare che inventarsi cose del genere?
un altro appello sprecato e io intanto invecchio :evil:

simo555
io quasi quasi nn capisco manco il testo.. :(

ridgh
La matrice di incidenza cambia a seconda di come "numero" gli archi del grafo? Leggendo il testo del progetto troviamo E =
{(1, 2), (1, 4), (2, 3), (2, 5), (3, 4), (3, 5), (4, 1), (5, 4)} cioè gli otto archi descritti dai 5 nodi. Se proviamo a calcolare la matrice di incidenza otteniamo il risultato di Lukkei.
se invece numeriamo le colonne della matrice così E = {(1,2),(2,3),(3,5),(3,4),(5,4),(2,5),(1,4),(4,1)} otteniamo la stessa matrice descritta nella documentazione.
Visto che non sono molto ferrato in materia, possiamo presumere che sia irrilevante la numerazione degli archi, e che ci interessi solo il valore contenuto nella matrice?

giron
è quello che ci stiamo chiedendo anche noi..almeno io..

Supernick
Allora, il numero attribuito agli archi non serve per identificarli, ma indica il loro peso.
La matrice di incidenza non cambia struttura a senconda dei "numeri" degli archi, gli zeri resteran sempre tali, quelli che cambiano sono i pesi, ovvero dove in effetti c'è un collegamento devi specificare il peso di quel collegamento

Lukkei
a mio parere le alternative sono 2:
1) è sbagliata la definizione degli elementi della matrice
2) è sbagliata la matrice.

risultato:
passo (anche stavolta) e spero che al prox progetto si diano una regolata........

ste84
beato te che puoi passare cosi senza problemi, io sono anni che mi trascino per colpa di questo esame, non ne posso piu !
eppure anche questa volta mi sa non riusciro a farlo..
che tristezza

Supernick
Ragazzi ma nella classe Graph dice di utiilizzare la stringa vuota come descrizione di tutti gli archi... gli insiemi degli archi del grafo sono rappresentati nelle matrici, ma in queste dove vado a specificare il nome dell'arco? la matrice accetta valori double... sono un po' confuso...:shock:

towl88
Originally posted by Lukkei
la matrice di incidenza, se non ho fumato roba che mi ha fatto davvero male, secondo me dovrebbe essere la seguente:
1| 7| 0| 0| 0| 0|-7| 0
-1| 0| 2| 6| 0| 0| 0| 0
0| 0|-2| 0| 3| 3| 0| 0
0|-7| 0| 0|-3| 0| 7|-5
0| 0| 0|-6| 0|-3| 0| 5

attendo opinioni e commenti.......


anche a me viene la stessa matrice di incidenza seguendo i calcoli che dice di fare, non quella che mette lui... c'è qualcosa che nn quadra

towl88
poi non capisco quando dice nella classe Matrix: "poter istanziare un elemento della classe specificando il numero di righe, il numero di colonne e un valore double, che verrà utilizzato per riempire tutti gli elementi della matrice"......ma a cosa serve il valore double usato per riempire tutti gli elemnti dell matrice, cioè doverbbe essere una cosa del genere: "Matrix(4, 6, 5.0)" e lui mi crea un'array di 4X6 tutti con valore 5.0?

Lukkei
Originally posted by ste84
beato te che puoi passare cosi senza problemi, io sono anni che mi trascino per colpa di questo esame, non ne posso piu !
eppure anche questa volta mi sa non riusciro a farlo..
che tristezza


non nego che mi girano gli zebedei a dover passare anche stavolta, però non posso perder tempo a cercare di capire un testo troppo spesso "crittografato" quando ho altri esami in ballo, anche perchè quando sei un lavoratore-studente, il tempo a disposizione per studiare è davvero risicato all'osso....

Supernick
risolto, non avevo letto la consegna fino alla fine :D

Supernick
Gente domanda importantissima

Ma l'algoritmo di Floyd Warshall come funzione per le matrici di INCIDENZA???

sempre lo stesso modo??

è una curiosità in quanto non essendo N x N ma N x M ho paura funzioni in modo un po' diverso... booooohhh

Pupino
Originally posted by Supernick
Gente domanda importantissima

Ma l'algoritmo di Floyd Warshall come funzione per le matrici di INCIDENZA???

sempre lo stesso modo??

è una curiosità in quanto non essendo N x N ma N x M ho paura funzioni in modo un po' diverso... booooohhh


Ma tu non avevi passato L' oca??? :asd:

Supernick
si ma avevo preso 18 e non l'avevo accettato...

risposte a sta domanda????????????????????????????????????

EDIT:

Nel metodo computeShortestPaths() son riuscito, nel caso tratta una matrice di incidenza a trasformarla in mat di adiacenza per poi applicarli l'algoritmo di floyd-warshall... ma ha senso secondo voi?? sennò non saprei che fare per trovare il cammino in quella di incidenza... boh

Jaky
Originally posted by Supernick
si ma avevo preso 18 e non l'avevo accettato...


credo che d'ora in poi nessuno di questo thread ti degnerà di risposte :D:D:D

towl88
qualcuno invece riesce a darmi una mano?

Supernick
credo che d'ora in poi nessuno di questo thread ti degnerà di risposte :D:D:D


beh, allora potete evitare anche quelle inutili...

Pavo88
Ragazzi,non scrivete cose inutili; scusate i modi ma di leggere 3 pagine che non hanno un minimo di informazioni utili è un po' seccante. io direi di cercare di tenerci ordinati sia con le domande che con le risposte. più ci aiutiamo e più si risolvono i problemi e il lavoro diventa più facile x tutti.

passo alla mia domanda:

nella descrizione della classe Matrix si dice che bisogna istanziare un elemento della classe che dati come argomenti due int e un double crea una matrice int x int e la riempie con i valori double. quello che non ho capito è: con la parola elemento si indica la creazione di un nuovo metodo o semplcemente una seconda definizione del costruttore?

Supernick
Allora io l'ho intesa così, ovvero come due costruttori, uno a cui passi l'array e l'altro a cui passi righe colonne e valori, due modi per istanziare la matrice... credo sia così

Ragazzi,non scrivete cose inutili; scusate i modi ma di leggere 3 pagine che non hanno un minimo di informazioni utili è un po' seccante. io direi di cercare di tenerci ordinati sia con le domande che con le risposte. più ci aiutiamo e più si risolvono i problemi e il lavoro diventa più facile x tutti.


Straquoto!

Ripropongo ancora la mia domanda, ovvero...

Matrici di incidenza/adiacenza vanno trattate differentemente? Ovvero posso istanziarne o una o l'altra, e per quella di incidenza il computeShortestPaths ritorna sempre una matrice N X N (non posso applicare l'algoritmo direttamente a quella di incidenza, però posso con pochi conti trasformare quella di incidenza in quella di adiacenza e poi applicarlo...)

O non ho interpretato bene io???

piero88
secondo me il metodo computeShortestPath può essere applicato solo alle matrici di adiacenza...
anke xkè se noti nell'esempio nelle prime pagine dove calcola le D(n) e P(n) le matrici sono tutte n x n...

spero di esserti stato d'aiuto...

x qualsiasi cosa chiunque voglia può scrivermi per aiuti..

nel caso ne avrò bisogno io scriverò io... :-)

Supernick
si, in teoria lo puoi applicare solo a quelle di adiacenza, però la questione è, come comportarsi con quelle di incidenza??

Le soluzioni sono due

1- Applicare l'algoritmo di Dijkstra per il percorso più breve (molto macchinoso da fare e non espressamente richiesto)

2- Trasformare la matrice di incidenza in una di adiacenza (semplice e breve come cosa, secondo me la migliore tra le due scelte, basta aggiungere un piccolo controllo all'inizio del metodo computeShortestPath())

Avrei una'altra piccola domanda, secondo voi qual è il modo migliore per associare un nodo ad un elemento della matrice??
Perchè così come richeisto i nodi e gli element idella matrice non sono relazionati tra di loro, bisognerebbe inserire un qualche identificatore per ognuno.... sento odore di HashTables :D

piero88
io per evitare di utilizzare gli hashCode non li associo..ho creato un 'array per i nodi..uno per i nodi di partenza..per quelli di arrivo e così via...
spero vada bene...

piero88
ho un problemino nella lettura da file...
dato che nel file della matrice di incidenza la prima parte è divisa dalla seconda da uno spazio come si può individuare una riga con l'invio a capo?
spero di avere vostre risposte..

giron
devi fare un controllo in cui verifichi che la riga non sia nulla ma allo stesso tempo non contenga alcun carattere...io ho usato le regex.

Io invece vi chiedo in quale classe calcolate le matrici D(0) D(n) P(0) P(n), dato che P(n) va calcolata in Graph nel metodo computeShortestPaths(), ma a me risulta più semplice in GPS. O sbaglio?

eli88
sarebbero le regex?

giron
espressioni regolari..servono a parsare una stringa per vedere se rispetta un certo formato;

http://it.wikipedia.org/wiki/Espressione_regolare

piero88
io ho fatto un semplice controllo sulla stringa che leggo..
ma facendo while(! linea.equals("\n")) non funziona..

la stringa con l'invio a capo contiene solo il carattere "invio a capo" ma non riesco a capire come si può individuare...

eli88
l'invio a capo non è un carattere che viene messo nella stringa vuota, al max viene messo accanto all'ultima stringa prima di ritornare a capo... la stringa è vuota quindi il controllo si fa con while(! linea.equals("")) cioè controllo che la stringa sia vuota

tetsuo
Ciao a tutti! Vi sottopongo anch'io qualche quesito riguardo l'interpretazione di alcune parti del progetto:

1 - nella classe Matrix quando ci chiede di invocare i metodi, on il toString che cosa si intende, visto che nella classe successiva la Node prevede un toString dettagliato e dal chiaro significato?

2 - Nel classi Adjacency e Incidency Matrix posso lanciare la stessa exeption cioè un IllegalArgumentExeption?

Grazie
:?
ps: nel caso posso girare via mail domande al prof Cazzola? Risponde? non riuscendo ad andarci di persona?

giron
1 - nella classe Matrix quando ci chiede di invocare i metodi, on il toString che cosa si intende, visto che nella classe successiva la Node prevede un toString dettagliato e dal chiaro significato?


Credo che il toString() di matrice debba stampare a video il contenuto di ogni elemento della matrice; comunque sarà sicuramente diverso dal toString() di Node il quale stampa a video la posizione del nodo.


2 - Nel classi Adjacency e Incidency Matrix posso lanciare la stessa exeption cioè un IllegalArgumentExeption?


Credo di si.

piero88
ho un problema con il computeShortestPath nel momento in cui devo usarlo con le matrici di incidenza visto ke hanno dimensione diversa e non n x n..
come posso fare per usare il metodo anke con le matrici di incidenza??
grazie

Supernick
io le ho trasformate in matrici di adiacenza con dei semplici controlli per poi processarle quindi come matrici nxn

ridgh
supernick ha ragione, convertire le matrici di incidenza è la via migliore, io ho controllato ogni colonna della matrice di incidenza per poter avere una matrice compatibile

piero88
si ma come posso fare?

Supernick
Se noti ogni colonna della matrice di incidenza ha esattamente 2 elementi uguali, non nulli e opposti (e deve sempre essere così, altrimenti vuol dire che un arco va a vuoto, e lo stesso non possono esserci più di due elementi, altrimenti vorrebbe dire che lo stesso arco collega più di due nodi ), e te devi controllare ogni colonna, ad esempio la colonna 1 (quelli a destra sono gli indici)

[0]
[-5]
[0]
[5]
[0]

equivale a dire, "metti nella matrice di adiacenza un 5, alla posizione [4][2]", dove il numero positivo sarebbe l'indice della riga e quello negativo l'indice della colonna, se fosse stato

[0]
[5]
[0]
[-5]
[0]

voleva dire metterlo all'indice [2][4]

Comunque...credo sia così :D niente è sicuro, l'unica cosa sicura (spero) è che funziona.

Pavo88
ma perchè le convertite in adiacenza? non conviene estrapolare direttamente le matrici D e P? comunque il procedimento è corretto!

volevo chiedervi, i metodi getRow e getColumn della classe matrix a cosa servono? cosa ritornano? io pensavdo di dare in input un int e lui ti ritorna l'intera riga. voi cosa dite?

AnTHrAx
Si, anche io la penso così. è l'unica cosa possibile.

Cmq, andando relativamente offtopic... io sono da solo in gruppo e abito a milano... se qualcuno fosse disponible per fare gruppo contattatemi su msn la mail è aimer71@hotmail.com

a piu tardi.

Supernick
volevo chiedervi, i metodi getRow e getColumn della classe matrix a cosa servono? cosa ritornano? io pensavdo di dare in input un int e lui ti ritorna l'intera riga. voi cosa dite?


credo sia così, almeno, io ho fatto così

ma perchè le convertite in adiacenza? non conviene estrapolare direttamente le matrici D e P?


Il problema è che la matrice D e P non la puoi estrapolare da una di incidenza così com'è, andrà prima processata in qualche modo

AnTHrAx
credo che google possa essere nostro amico a riguardo... essendo un algoritmo "famoso" vuoi che nessuno lo abbia utilizzato in java??

Supernick
a beh ma da implementare in java non è difficile, basta che effettui le operazioni nelle matrici così come fa l'algoritmo

AnTHrAx
suvvia non c'è nessuno che ha un posto vacante nel gruppo? ;_;

Jackl
Nella classe Graph ad un certo punto si legge:
  • invocare i metodi public int size() e public Node getNode(int i) dall’ovvio significato;

Fino a getNode(int i) non c'è problema, leggi il nodo in posizione i..
ma size() del Graph cosa sarebbe? Il numero di Nodi? Il numero di Archi?
Nella definizione di Graph si dice che è una copia di valori Graph = (Array di Nodi, Array di Archi).

Quindi, quali sono state le vostre scelte?

ridgh
visto che prima si parla di size() e poi di getNode(int i) io ho interpretato come la dimensione dell'array dei nodi e il nodo in posizione i;

Per quanto riguarda la matrice di adiacenza invece si legge "la descrizione degli archi che partono dal nodo, data da una serie di zero o più terne i cui valori saranno, nell’ordine"...cosa avete capito come serie di zero?

in particolare secondo voi quale sarebbe una situazione possibile?

file corretto:
1,37.11,43.74,Stazione ferroviaria,4,7,via Lunga,2,1,via Breve

Nodo collegato con un altro nodo con prima una serie di 3 zero?
1,37.11,43.74,Stazione ferroviaria,0,0,0,2,1,via Breve

Nodi isolati?
1,37.11,43.74,Stazione ferroviaria,0
1,37.11,43.74,Stazione ferroviaria,0,0,0

secondo voi quale ha più senso?
Grazie in anticipo

Pavo88
non possono esistere nodi isolati, gli fai un controllo quando leggi il file e se è 0 lanci l'eccezione sia per distanza, peso e descrizione.

il size() non ho proprio idea di cosa sia, ma mi convinco semore di più che sia la dimensione dell'array di archi.

inolte volevo chiedere, il costruttore di Graph crea un'istanza dell'omonima classe sia per la matrice di adiacenza e sia per quella di incidenza definendo un array di descrizioni vuoto (utilità? mah...-.-'');

la mia domanda è questa:

come lo uso in modo utile nel getPath e nel sayPath, sempre che vada usato lì? se non va usato lì, dove va usato?
Io e i miei compagni di gruppo ci staimo convincendo sempre di più che Graph ci serva solo per calcolare la P(n).

Voi he ne dite?

giron
beh io ho creato un'istanza di Graph nel costruttore di GPS, istanza che poi userò nel getPath e sayPath per richiamare il metodo computeShortestPath in Graph. è quello che avete fatto voi?

Pavo88
si la stessa cs che abbiamo fatto noi, ma mi chiedevo a cosa servissero le descrizioni vuote, e in che modo potevano essere utili ai fini del get e saypath().

Lukkei
curiosità: come avete risolto il problema della descrizione (sbagliata) della matrice di incidenza?
rispondete senza fretta e se ne avete voglia, altrimenti ignorate pure la mia domanda (ho rinunciato al progetto per questo motivo)
ciao e in bocca al lupo a tutti

giron
scusate ma se dobbiamo trasformare le matrici di incidenza in matrici di adiacenza, allora poi creo un graph passando l'array di node e la matrice di adiacenza appena trasformata giusto?
a questo punto, il costruttore Graph(Node[], IncidencyMatrix) a cosa serve????

Jaky
lukkei: la matrice di incidenza è perfetta ;)
l'ordine in cui sono messi gli archi è irrilevante al fine della costruzione della mappa...

giron: concordo pienamente..è del tutto privo di senso trasformare da adiacenza a incidenca...ci sono 2 sottoclassi di Matrix apposta, nel proj è richiesto che si possa costruire una mappa partendo o da una configurazione di una matrice di adiacenza o di incidenza.

Supernick
no, non è così.
Non è che devi proprio trasformare la matr di inc in una di adj.
Semplicemente nel metodo computeshortespath la matrice di incidenza la devi prima trattare in qualche modo per poi applicarli l'algoritmo di floyd (come ad esempio trasformarla in matrice di adiacenza, per potere poi ottenere una P(n) nella forma nxn.

Però ti serve per forza Graph(Node[], IncidencyMatrix), perchè se hai come file di ingresso uno del tipo %...inc come fai??

Jaky
Originally posted by Supernick
la matrice di incidenza la devi prima trattare in qualche modo per poi applicarli l'algoritmo di floyd .


sisi chiaro, però la conversione va fatta in una fase sucessiva; nn bisogna passare al cosuttore una matrice già convertita.

la classe Graph deve avere due costruttori, uno che riceve una matrice di incidenza e un altro una matrice di adiacenza.

Supernick
Si beh, questo è ovvio, bisogna poter istanziare entrambe, è poi il metodo computeShortestPath() che si arrangia con l'una o con l'altra

l'ordine in cui sono messi gli archi è irrilevante al fine della costruzione della mappa


giustissimo:D

Ah una cosa anzi 2... non è richeisto esplicitamente però...

1:

Nel metodo sayPath(lat,lon,descr)

se il nodo più vicino a lat e lon che mi vien restituito o è isolato o semplicemente non permette di raggiungere la destinazione...secondo voi basta lanciare l'eccezione, o bisogna cercare il primo nodo vicino a lat e lon con il quale si può effettivamente raggiungere la destinazione?? (spero di esser stato chiaro... :D )

2:

La descrizione di ogni nodo è univoca??
In teoria si vero? perchè altrimenti non avrebbe senso il metodo getPath(descrStart, descrEnd).


Jaky
Originally posted by Supernick

1:

Nel metodo sayPath(lat,lon,descr)

se il nodo più vicino a lat e lon che mi vien restituito o è isolato o semplicemente non permette di raggiungere la destinazione...secondo voi basta lanciare l'eccezione, o bisogna cercare il primo nodo vicino a lat e lon con il quale si può effettivamente raggiungere la destinazione?? (spero di esser stato chiaro... :D )



senza ombra di dubbio la seconda :)



2:

La descrizione di ogni nodo è univoca??
In teoria si vero? perchè altrimenti non avrebbe senso il metodo getPath(descrStart, descrEnd).



si..per forza, è come dire che ci sono 2 stazioni centrali a milano :D

Jaky
un controllino sul file di testo che le descrizioni siano univoce, ci sta ;)

Jaky
in Matrix dice:
Il costruttore dovrà verificare che l’array passato al costruttore sia composto da array non vuoti.

Ovvero? che nessun elemento degli array abbia null?

Jaky
Originally posted by Jaky
senza ombra di dubbio la seconda :)



rettifica..ho letto meglio..dice da un punto qualsiasi, quindi il + vicino che trova, quello sarà il punto di partenza

Supernick
un controllino sul file di testo che le descrizioni siano univoce, ci sta

gia non sarebbe una cattiva idea...

in Matrix dice:
Il costruttore dovrà verificare che l’array passato al costruttore sia composto da array non vuoti.

Ovvero? che nessun elemento degli array abbia null?


Beh, più che altro per evitare una NullPointerException
Ovvero verificare che vabbeh, priam di tutto l'array di array non sia nullo (ovvero il num di elementi > 0 ), e lo stesso per ogni array dell'array.

senza ombra di dubbio la seconda

purtroppo mi sa anche a me...

AnTHrAx
Vorrei specificare che un double[][] array non avrà mai valori null, viene creato direttamente con valori 0.0 quello che va controllato è che ci siano dei valori differenti da 0 o NaN o POSITIVE_INFINITY


ora ho io una domanda.... ma dentro a graph il testo dice:

istanziare la classe passando come argomenti al costruttore, nell’ordine, un array di
Node e un’istanza di AdjacencyMatrix, dove questi argomenti rappresentano gli insiemi
dei nodi e degli archi del grafo, secondo quanto precedentemente indicato; il costruttore
dovr`a lanciare una IllegalArgumentException nel caso in cui i due argomenti abbiano dimensioni incompatibili e utilizzare la stringa vuota come descrizione di tutti gli archi;

con il " utilizzare la stringa vuota come descrizione di tutti gli archi" che caspita intende??

AnTHrAx
io ho capito che intende la riga vuota dell'illegalargumentexception però non so...

Jaky
raga ma, getRow e getColumn ritornano cosa, una stringa vero?

Supernick
credo di si...

Jaky
nel caso in cui, per comodit`a, si intenda utilizzare le istanze di Node come chiavi in una
mappa in qualsiasi parte del codice, sar`a anche necessario ridefinire opportunamente
anche i metodi equals e hashCode.

:?:?:?

giron
io a getRow e getColumn faccio ritornare un'array contenente tutti i valori della riga o della colonna passata come argomento invece. sembrano un pò a libera interpretazione alcuni metodi!!!!

Supernick
nel caso in cui, per comodit`a, si intenda utilizzare le istanze di Node come chiavi in una
mappa in qualsiasi parte del codice, sar`a anche necessario ridefinire opportunamente
anche i metodi equals e hashCode. :?:?:?


Beh, io ho dovuto usare una hashtable in una parte del codice per poter ottenere l'id di un nodo data la descrizione come chiave, e comunque va beh, l'equals l'ho usato nel metodo ricorsivo x vedere se un nodo era uguale a un altro, ma l'hashcode, no, non l'ho usato...

giron
ma il costruttore di Graph, quello a cui passo anche un array bidimensionale di String cosa deve fare?

AnTHrAx
Originally posted by giron
ma il costruttore di Graph, quello a cui passo anche un array bidimensionale di String cosa deve fare?


da quello che ho capito io crei una matrice delle stesse dimensioni della matrice di adiacenza/incidenza solo che al posto del peso come argomento ci metti una stringa che descrive l'arco.

giron
ah ok!grazie del consiglio..non vedendo proprio l'utilità di questo costruttore mi risultava difficile immaginare cosa avesse dovuto fare!

giron
però se fosse come dici tu, allora dovrei creare anche un costruttore di Matrix che prenda come argomenti l'array String[][]

public Matrix(Node[] nodi, String[][] descrizioni)


inoltre descrizioni[][] dovrebbe contenere le descrizioni nella giusta riga e colonna altrimenti io non saprei a priori a quale collegamento assegnare la decrizione..non capisco

AnTHrAx
ma tu le descrizioni le hai nel graph, nel matrix hai solo i pesi

AnTHrAx
ah avevo una domanda... mi sono tenuto il parser dell'incidencymatrix come ultima cosa... ma ho notato che la matrice di incidenza mi viene di posizioni differenti rispetto a quella nel pdf...
anche xkè nel pdf della matrice gli archi sono descritti in posizioni differenti rispetto a quella del testo... in teoria non dovrebbe essere un problema... ma voi come avete risolto?

giron
si era un problema sollevato a inizio thread ma risolto man mano facevamo prove. Le posizioni delle colonne all'interno della matrice di incidenza non devono avere un ordine particolare, l'import è che ogni colonna della matrice di inc abbia due valori (uno negativo e l'altro uguale e negativo)!
guarda indietro che trovi tutte le info.

per qunto riguarda il problema del terzo costruttore di graph io non capisco in che modo vuole che vengano "associati" (come scritto nel pdf) i i pesi degli archi alle descrizioni

AnTHrAx
giron dammi il tuo msn che vediamo di ragionare assieme XD

Supernick
ragazzi se non sbagli avevate un dubbio sui valori di ritorno di getColumn(int i) e getRow(int i)

Beh, ho provato ora la sottoposizione e deve tornare un ARRAY di double

Pavo88
ragazzi, ma il metodo size() cosa deve ritornare??

Supernick
io credo semplicemente il numero di nodi del grafo....

sto a pezzi, sti problemi idioti dell'ultimo giorno che ti fan restare 16 ore filate incollato al pc son davvero simpatici :D

Jackl
Finish, consegnato >.<
Concordo con Supernick, una volta che son sicuro che tutto funziona carico il progetto e vedo comparire infiniti warning e errori.. mezza serata per rendere il tutto compatibile con il sistema di analisi automatica :/
Ormai è tardi, ma se avete domande vi dico come ho affrontato i vari problemi...

Ecco alcune risposte:
La matrice incidente deve essere traformata nella matrice adiacente per creare le matrici P e D.
NON è necessario fare la trasformazione inversa (da adiacente a incidente)

Graph.size() <-- serve nell'ultima parte del progetto GPS.java, e dovrebbe indicare la dimensione dell'array di nodi

Matrix.getColumn(int i) <-- ritorna un'array di double, precisamente la colonna i

Matrix.getNumColumns() <-- ritorna il numero di colonne dell'array

Matrix.getRow(int i) <--- ritorna un'array di double, precisamente la riga i

Matrix.getNumRows() <-- ritorna il numero di righe dell'array

GPS.sayPath(lat,lon,descr) <-- per logica dovrebbe restituire il percorso più breve cercando il nodo vicino a [lat,lon] e se non è la destinazione finale calcolare il percorso partendo da quel nodo

Ciao, alla prossima :)

Jackl
(Se un moderatore può eliminare questo messaggio mi fa un favore)

Supernick
consegnato pure io... speriamo :D

tetsuo
Qualcuno è stato così fortunato da uscire senza errori dai test? ho visto che su 33 studenti totali lo hanno passano solo in 5 (gruppi intendo)....

Supernick
boh, più che altro mi piacerebbe molto sapere cosa ho cannato sta volta, visto che son stato su 3 notti a far test e non dava problemi...
O mi è sfuggito qualcosa (forse + di qualcosa) oppure ho fatto qualcosa in modo diverso da come doveva essere fatto....bahh

*Dia*
c'è x caso qualcuno che è passato che potrebbe gentilmente postare i codici così da poterli confrontare con i miei e vedere dove ho sbagliato e riuscire a passarlo la prossima volta??
grazie :)

ilsanta
Io l'ho passato col mio gruppo! :)

Domani sono in Comelico se vuoi ti passo i codici su chiavetta :)
Mi riconosci subito...lo sfasato col 'mi' del basso attaccato allo zaino eheheheh
Altrimenti te li passerò via mail, no problem :)

...tra l'altro appena ha messo fuori gli esiti, lo avevano passato solo in due gruppi (esclusi noi, ovviamente) al che ci siamo fiondati nel suo ufficio e ci dice 'Eh ragazzi lancia un illegal' 0__0
Abbiamo capito dopo che la mappa inserita aveva un errore (chiaramente una svista, comparivano due virgole una di seguito all'altra).
Corretto quello infatti il nostro GPS funzionava perfettamente e evidentemente anche quello di altri due gruppi :)
... trovato l'errore, in preda al panico, ha ritirato gli esiti e ricorretto tutto....passatooooo!

Tra l'altro qualcuno di voi sa quanti test venivano effettuati?
Dovrebbero essere 25 e se così fosse il nostro li ha passati tutti, cioè inizialmente ne superava 24..e lanciava un Illegal, credo che quidni ora ne passi 25....

Supernick
Ma scusate quindi su 25 test, x andare all'orale il programma deve passarli tutti???

*Dia*
Originally posted by ilsanta
Io l'ho passato col mio gruppo! :)

Domani sono in Comelico se vuoi ti passo i codici su chiavetta :)
Mi riconosci subito...lo sfasato col 'mi' del basso attaccato allo zaino eheheheh
Altrimenti te li passerò via mail, no problem :)


Guarda io oggi ero in festa del perdono..quindi non sono riuscita ad arrivare in comelico..se riesci a passarmelo via mail mi faresti un enorme favore..ti mando x pm l'indirizzo grazie :D

Jackl
Originally posted by *Dia*
c'è x caso qualcuno che è passato che potrebbe gentilmente postare i codici così da poterli confrontare con i miei e vedere dove ho sbagliato e riuscire a passarlo la prossima volta??
grazie :)


Domani vi pubblico la mia soluzione

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate