.dsy:it. Pages (5): « 1 2 [3] 4 5 »
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Algoritmi e strutture dati (http://www.dsy.it/forum/forumdisplay.php?forumid=207)
-- [Algoritmi - Torelli] Progetto "OLEODOTTI" (http://www.dsy.it/forum/showthread.php?threadid=19840)


Posted by Novalis on 11-06-2005 14:13:

Originally posted by CirAnto

Non so perchè ma riducendo l'insieme dei pozzi ad una coppia di grafi ordinati (uno da Nord a Sud e uno da Est a Ovest) si potrebbe vedere la scelta dell'oleodotto come la scelta di un cammino minimo tra due punti in un grafo ordinato aciclico (in quanto, data una direzione E-S-O-N, non è possibile tornare indietro).
A questo punto l'algoritmo DAG-Shortest-Path mi sembra il più semplice e ottimale tra tutti gli algoritmi NON svolti durante il corso...


Ma a questo punto non converrebbe utilizzare un doppio albero di ricerca? Costruendo una funzioncina apposita, possiamo restringere all'istante l'insieme di elementi sui quali eseguire la ricerca del percorso migliore.

Inoltre noi non dobbiamo concentrarci sul percorso più corto, ma su quello più economicamente conveniente...


Posted by CirAnto on 13-06-2005 16:00:

Il DAG-Shortest-Path non considera il cammino più corto ma il cammino costituito dai pesi minori.

Detto ciò preferisco creare due semplici liste per contenere i nodi da includere come possibili punti del mio oleodotto.

In pratica ponendo il caso che debba creare un oleodotto da Est a Ovest e che ho una lista (ordinata in base alle ASCISSE) costituita dai punti:

(2) - (4) - (3) - (8) - (5) - (12) - (10)

e devo partire da un punto A (2 < A < 4) e devo arrivare in un punto B ( 12 < B < 10) posso limitare la costruzione del mio grafo aciclico ai nodi 4, 3, 8, 5, 12 e su questo grafo ordinato topologicamente eseguo il DAG-Shortest-Path.

Il bello è che avendo una lista a doppia concatenazione mi basta invertire i puntatori all'elemento precedente con il puntatore all'elemento successivo posso costruire il grafo in entrambe i sensi ed eseguire l'algoritmo DAG-Shortest-Path in maniera equivalente.
Ovviamente durante la costruzione del grafo dovrò avere cura di non considerare gli archi irrealizzabili (perchè intersecanti con altri archi) e di effettuare la differenza:

ValorePozzo - CostoZonaDifficoltosaAttraversata

Questo valore sarà il peso effettivo del mio arco.

Idem dicasi nel caso si vada da Nord a Sud o viceversa.
Ovviamente prima devo aver costruito una seconda lista ordinata in base alle ORDINATE.

Spero possa aiutare.

Ciao


Posted by Jacoposki on 13-06-2005 19:46:

stavo pensando a qualcosa del genere, mi devo rivedere il DAG-S.-P., evidentemente...

Io pensavo di costruirmi localmente al metodo oleodotto() una lista di pozzi possibili (ovvero quelli che non escono dai limiti dei punti dati, la lista che per te è 4-3-8-5-12) e ordinare questa lista in base a ascissa o ordinata, crescente o decrescente, in base alla direzione passata. Dopodichè associare ad ogni pozzo nella lista locale il massimo valore di tutti i *cammini* che ci entrano, venendo da A. Procedendo a partire da A, questi valori dovrebbero aggiornarsi senza troppi problemi... 4 avrà associato il valore di A-4. 3 avrà associato il più alto valore tra (valore di 4 + valore del tubo 4-3) e A-3. E via dicendo, quindi i confronti andranno fatti sulla sottolista costituita dai tubi che precedono l'attuale.

Non so se sto descrivendo il DAG-Shortest-Path con altre parole, sinceramente, ma mi pare che potrebbe funzionare. Ora devo solo scriverlo :asd:

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by CirAnto on 14-06-2005 23:51:

Originally posted by Jacoposki
stavo pensando a qualcosa del genere, mi devo rivedere il DAG-S.-P., evidentemente...

Io pensavo di costruirmi localmente al metodo oleodotto() una lista di pozzi possibili (ovvero quelli che non escono dai limiti dei punti dati, la lista che per te è 4-3-8-5-12) e ordinare questa lista in base a ascissa o ordinata, crescente o decrescente, in base alla direzione passata. Dopodichè associare ad ogni pozzo nella lista locale il massimo valore di tutti i *cammini* che ci entrano, venendo da A. Procedendo a partire da A, questi valori dovrebbero aggiornarsi senza troppi problemi... 4 avrà associato il valore di A-4. 3 avrà associato il più alto valore tra (valore di 4 + valore del tubo 4-3) e A-3. E via dicendo, quindi i confronti andranno fatti sulla sottolista costituita dai tubi che precedono l'attuale.

Non so se sto descrivendo il DAG-Shortest-Path con altre parole, sinceramente, ma mi pare che potrebbe funzionare. Ora devo solo scriverlo :asd:


Beh concettualmente siamo sulla stessissima idea, il problema è solo realizzare l'algoritmo che calcola tutti i cammini possibili per raggiungere il punto di arrivo...
Detto sinceramente io ho preso il DAG-S-P perchè è una versione semplificata del Bellman-Ford...
Il codice del Bellman-Ford lo si trova qui:
http://www.algoteam.dsi.unimi.it/im...codici/ford.txt

La pagina è redatta dallo stesso Fiorentini quindi immagino che si possa prelevare e modificare il codice in base alle proprie necessità.
Ovviamente bisogna modificare l'input che nell'implementazione presentata viene presa da un file formattato in un certo modo.

:D


Posted by Novalis on 15-06-2005 00:58:

ragazzi ma perchè questi giorni non ci riuniamo nel tentativo di fare questo benedetto progetto?:caffe:


Posted by mitnik on 15-06-2005 07:48:

Io e Jacoposki ci troviamo questa mattina in silab verso le 10 chiunque voglia unirsi a noi è ok.

Io ora (8.45) sono gia qui, sui computer vecchi in fondo vicino alla vetrata con le due porte. L'ultimo computer della tavolata e alle mie spalle ci sono i pc nuovi, quelli con lo schermo LCD.


Posted by Jacoposki on 15-06-2005 07:51:

io mi sono svegliato mezz'ora fa... aspetto che passi il caffè e arrivo... gh, ho sonno...

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by Novalis on 15-06-2005 10:10:

io sono reduce dal compito di analisi e mi sono svegliato un pò dopo:D

se passo verso le 13-14 vi trovo ancora? :)


Posted by mitnik on 15-06-2005 11:26:

Passa dal Silab che qualcuno trovi!!

Ciao


Posted by Novalis on 15-06-2005 12:00:

allora in un'oretta son lì... rimanete sempre in quel pc mi raccomando, altrimenti non vi trovo :D


Posted by Jacoposki on 15-06-2005 12:01:

sono rimasto solo io, sempre sul suddetto PC... se non mi trovi vuol dire che sono stato assalito da crisi di fame e sono andato a procacciarmi del cibo... eventualmente aspettami che torno ^^

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by Jacoposki on 16-06-2005 00:12:

Domani per chi volesse discutere di questo orrido progetto ;) saremo in silab appena esco dalla prova di laboratorio di sisop. Suppongo sarà un orario tipo 10.30 - 11, per me.

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by Nonsaprei on 16-06-2005 17:14:

Se vuoi io ne posso discutere....ma io arrivo in silab per le 15...ti va bene?

__________________
Spaghetti!!!


Posted by Jacoposki on 16-06-2005 18:41:

domani non ci sono... sabato forse, ma non so ancora.

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by rox on 18-06-2005 01:00:

Volevo segnalarvi un problema che ho riscontrato intersecando due tubi.

I due tubi sono:

(3,3,6,5) e (1,1,6,5)

Il problema è che il coefficente angolare del primo è periodico, è 0,66666667, mentre il coefficiente angolare del secondo è discreto, è 0,8.

Quando uso i coefficienti angolari per trovare l'intersezione, ovviamente trovo che essa è situata nel punto (6 - 5).

Però il programma secondo me vede questo punto come(5,999999 - 4,99999999) o una cosa di questo genere, perchè secondo lui i due tubi si intersecano prima della loro fine...

Non penso di aver sbagliato la funzione, perchè questo è l'unico caso che mi si è presentato, e ho molti altri tubi che si intersecano proprio alla fine, ma li posso inserire tranquillamente

Avete suggerimenti? Vi è capitato anche a voi?


All times are GMT. The time now is 03:25. Pages (5): « 1 2 [3] 4 5 »
Show all 68 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.