2016-11-17 4 views
0

Ich habe diesen Code in einem Java-Programm. Ich habe das Diagramm bereits erstellt, rufe es an und ich möchte den kürzesten Weg berechnen, aber ich bekomme nichts. Ich möchte dieses Ergebnis in der Java-Konsole. kann mir jemand helfen, bitte .....Java-Programm kürzester Pfad orientdb

 OrientGraphFactory factory = new OrientGraphFactory("plocal:DB_PATH", "admin", "admin"); 
    OrientGraph db = factory.getTx(); 
for (int i=0; i<=Number_Nodes; i++){ 
     for(int j=0; j<=Number_Nodes;j++) { 
      for (Vertex v : db.getVertices("vertexID", i)) { 
       for (Vertex v1 : db.getVertices("vertexID", j)) { 
        for (Edge e : db.getEdges()) { 
         if (e.getVertex(Direction.IN).equals(v)) { 
          if (e.getVertex(Direction.OUT).equals(v1)){ 
           String query = "select expand(shortestPath("+v+","+v1+",'OUT') "; 
          Iterable<OrientVertex> res = db.command(new OCommandSQL(query)).execute(); 
            while (res.iterator().hasNext()) { 
             OrientVertex vf = res.iterator().next(); 

             System.out.println("Id="+vf.getProperty("vertexID")); 


          } 
         } 

        } 

       } 

      } 
     } 
    }  
} 
+0

Welche Sprache ist das? Ich denke Java. Bitte fügen Sie einen Java-Tag hinzu, wenn dies der Fall ist, um einen Kontext hinzuzufügen. – randominstanceOfLivingThing

+0

Ich habe das Diagramm bereits erstellt, wenn ich System.out.println (e) setze; Druckt alle Kanten. Ich habe Probleme beim Berechnen des kürzesten Weges. –

+0

Haben Sie einen Datensatz, um Ihre Struktur zu reproduzieren? –

Antwort

0

In Ihrer String-Abfrage

"select expand(shortestPath("+v+","+v1+",'OUT') "

Sie 2 Klammern öffnen, aber Sie schließen nur einer von ihnen

habe ich versucht, mit dieser Struktur

enter image description here

und mit diesem Code

for (int i=0; i<=2; i++){ 
    for(int j=0; j<=2;j++) { 
     for (Vertex v : g.getVertices("vertexID", i)) { 
     for (Vertex v1 : g.getVertices("vertexID", j)) { 
      for (Edge e : g.getEdges()) { 
       if (e.getVertex(Direction.IN).equals(v)) { 
        if (e.getVertex(Direction.OUT).equals(v1)){ 
        String query = "select expand(shortestPath('"+v.getId()+"','"+v1.getId()+"','BOTH'))"; 
        Iterable<OrientVertex> res = g.command(new OCommandSQL(query)).execute(); 
        while (res.iterator().hasNext()) { 
         OrientVertex vf = res.iterator().next(); 
         System.out.println("Id="+vf.getProperty("vertexID")); 
        } 
       } 
      } 
     } 
     } 
    } 
}  

}

und es funktionierte.

enter image description here

Hoffe, es hilft.

+0

Haben Sie das Problem gelöst oder benötigen Sie weitere Hilfe? –