2016-11-27 54 views
0

我試圖運行Dijkstra的圖形上的算法。我需要讀取圖形建模語言(將gml文件插入到我的Graph,Vertex和Edges Data結構中)。 的GML文件是有點像這樣 圖表 [ 定向0 節點 [ ID 0 標籤 「楊百翰」 值7 ] 節點 [ ID 1 標籤 「FloridaState」 值0 ] 。 。 。 。 的Java是否有可以讀取這些數據轉化爲我的課任庫?或者有關在Java中創建解析器的建議?我正在嘗試jgraphT,但似乎無法弄清楚。有一個類GMLImporter,但我不明白如何使用它。它需要Vertex Provider和Edge提供程序。請提出一些解決方法!jGraphT庫爲Java

回答

0

在1.0.0版本從2016年9月,我們已包括全新的GML進口商/出口商。使用它們非常簡單。在Jgrapht每個班配備了一個廣泛的測試套件(只是爲了確保我們不會在版本之間打破任何東西)。這些測試類的好處是它們包含大量的例子。例如參見類GmlImporterTest.java

實施例:讀取從GML文件一個無向加權圖:

Graph<String, E> g=new SimpleWeightedGraph<String, E>(DefaultWeightedEdge.class); 

VertexProvider<String> vp = new VertexProvider<String>() 
     { 
      @Override 
      public String buildVertex(String label, Map<String, String> attributes) 
      { 
       return label; 
      } 
     }; 

     EdgeProvider<String, E> ep = new EdgeProvider<String, E>() 
     { 

      @Override 
      public E buildEdge(String from, String to, String label, Map<String, String> attributes) 
      { 
       return g.getEdgeFactory().createEdge(from, to); 
      } 

     }; 

     GmlImporter<String, E> importer = new GmlImporter<String, E>(vp, ep); 
     importer.importGraph(g, new File("myGraph.gml")); 

VertexProviderEdgeProvider告訴進口商如何創建頂點/邊對象。