|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Mar 2008
Messaggi: 11
|
Implementare Algoritmo Di Dijkstra?
Salve a tutti. Mi trovo molto in difficoltà nell'implementazione (in linguaggio JAVA), del noto algoritmo di Dijkstra, utilizzato per trovare il cammino minimo dal nodo di partenza a quello di arrivo (http://it.wikipedia.org/wiki/Algoritmo_di_Dijkstra). Tralasciando il linguaggio di programmazione (di cui ho conoscenze appena di base, acquisite durante un corso universitario) che uso, mi interesserebbe soprattutto capire il tipo di struttura dati migliore da utilizzare e come utilizzarla, in particolare:
- come faccio ad implementare un grafo? (nodi, archi...) - come faccio ad inizializzare un grafo casuale formato da n nodi? ad esempio quando avvio il programma, inizializzo il mio grafo con, per esempio, 10 nodi, ma poi come faccio a realizzare i collegamenti tra nodi in maniera casuale senza che sia io a realizzare i collegamenti ogni volta che avvio il mio programma? Grazie in anticipo per le risposte! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
Solitamente per implementare un grafo diretto con n nodi conviene implementare una matrice binaria nxn dove 1 nella posizione i,j significa che vi è un arco dal nodo i al nodo j (se il grfo non è diretto la matrice è simmetrica).
A questo punto crei gli archi casualmente tramite una funzione randomizzante in due modi: - o per ogni casella della matrice produci randomicamente un intero in {0,1} - oppure se vuoi m archi produci randomicamente m coppie (i,j) di numeri interi in [0,n).
__________________
Concluso con:... |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Mar 2008
Messaggi: 11
|
...
Grazie per la dritta...in pratica è una matrice di adiacenza...! Esiste una libreria in Java per realizzare Grafi?
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
JGraph invece se ti serve anche visualizzare i grafi in componenti grafici Swing. (oppure, in questo secondo caso, usi JGraphT e i suoi wrapper per JGraph).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:02.



















