Oppure

Loading
10/11/11 8:51
carmelolg
Ciao,
sto facendo un progetto dove vado ad utilizzare i grafi.
Ho trovato questa struttura dati gia implementata in Java
jgrapht.org/javadoc/

Potete trovare gli algloritmi a sinistra, tra i quali quello di dijkstra.

Ora ho un problema, creato un grafo con i nodi, ho trovato il cammino minimo con questo algoritmo, solo che quando uso la sua funzione getPath() per prendermi il contenuto dei nodi mi stampa null null, ma il cammino minimo lo calcola correttamente.
So che lo calcola correttamente perché mi faccio stampare la length del cammino minimo ed è corretta.

Vi passo il mio codice in modo tale da farvi capire meglio.


 UndirectedGraph<String, DefaultEdge> g =
            new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
        ConnectivityInspector<String, DefaultEdge> a = new ConnectivityInspector<String, DefaultEdge>(g);

        String v1 = "v1";
        String v2 = "v2";
        String v3 = "v3";
        String v4 = "v4";
        String v5 = "v5";
        String v6 = "v6";
        // add the vertices
        g.addVertex(v1);
        g.addVertex(v2);
        g.addVertex(v3);
        g.addVertex(v4);
        g.addVertex(v5);
        g.addVertex(v6);

        // add edges to create a circuit
        g.addEdge(v1, v2);
        g.addEdge(v2, v5);
        g.addEdge(v6, v5);
        g.addEdge(v1, v4);
        g.addEdge(v4, v6);
        g.addEdge(v6, v5);

      DijkstraShortestPath<String, DefaultEdge> f = new DijkstraShortestPath<String, DefaultEdge>(g,v1,v5);
      
      List<DefaultEdge> list = f.getPathEdgeList();
//qui metto in una lista i nodi del cammino minimo ma non va comunque
//potrei usare anche getPath() ma è uguale solo che li stampa tutto il cammino
//mentre con la lista devi scorrertela per farti stampare cio che c'è dentro.
      
      for (int i = 0; i < list.size(); i++) {
    	  System.out.println(list.get(i)+" "); 
      										}
      
      System.out.println(f.getPath());



Ho risolto cambiando il tipo di arco che passavo, non vuole un DefaultEdge ma un org.jgrapht.graph.DefaultEdge di jgrapht.
Grazie uguale, spero che questo problema sia utile per altri.
Ultima modifica effettuata da carmelolg 10/11/11 10:08
aaa