2016-11-17 61 views
0

我在java程序中有此代碼。我已經建立了這個圖表,打電話給我,我想計算最短路徑,但是我什麼也沒得到。我想在java控制檯中得到這個結果。誰能幫助我,請.....Java程序最短路徑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

這是什麼語言?我猜Java。如果需要添加上下文,請添加java標記。 – randominstanceOfLivingThing

+0

我已經建立了圖表,如果我把System.out.println(e);打印所有邊緣。我在計算最短路徑時遇到問題 –

+0

您有數據集來重現您的結構嗎? –

回答

0

在你的查詢字符串

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

你開2個支架,但你只關閉其中的一個

我試着用這種結構

enter image description here

以及與此代碼

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")); 
        } 
       } 
      } 
     } 
     } 
    } 
}  

}

和它的工作。

enter image description here

希望它能幫助。

+0

你解決了問題還是需要更多的幫助? –