java - unity根號 - 程式語言開根號




好的Java圖形算法庫? (12)

Apache Commons提供公共圖表 。 在http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/下可以查看源代碼。 樣例API使用也在SVN中 。 請參閱https://issues.apache.org/jira/browse/SANDBOX-458獲取已實現算法的列表,並與Jung,GraphT,Prefuse, jBPT

谷歌Guava,如果你只需要好的數據結構。

JGraphT是一個圖表庫,其中實現了許多算法,並且具有(在我的看法中)一個好的圖形模型。 Helloworld示例 。 許可證:LGPL + EPL。

Jung也是一個BSD許可的庫,其數據結構類似於JGraphT。 它提供了佈局算法,目前在JGraphT中缺少。 最近的提交是從2010年開始的,包hep.aida.*是LGPL(通過jung.sourceforge.net/download.htmlacs.lbl.gov/software/colt/license.html )。 這可以防止JUNG被用於ASF和ESF的項目中。 也許應該使用github fork並刪除依賴關係。 github.com/rortian/jung2/commit/…鏡像最後一次CVS提交。 目前的提交似乎刪除了可視化功能。 提交d0fb491c添加一個.gitignore

Prefuse使用矩陣結構來存儲圖形,這對於稀疏圖形來說不是有效的。 許可證:BSD

Eclipse Zest內置了圖形佈局算法,可以獨立於SWT使用。 請參閱org.eclipse.zest.layouts.algorithms 。 所使用的圖形結構是Eclipse Draw2d ,其中節點是顯式對象,並且不是通過泛型注入的(就像在Apache Commons Graph,JGraphT和JUNG2中那樣)。

有沒有人對Graph算法的任何Java庫有很好的經驗。 我試過JGraph ,發現它沒問題,而且谷歌裡有很多不同的東西。 有沒有人實際使用生產代碼或推薦?

為了澄清,我沒有尋找一個產生圖形/圖表的庫,我正在尋找一個可以幫助圖形算法的庫,例如最小生成樹,克魯斯卡爾算法節點,邊等等。理想情況下,一個算法/數據很好結構在一個不錯的Java OO API中。



http://neo4j.org/是一個圖形數據庫,其中包含許多圖形算法,並且比大多數內存庫更好地擴展。


也可以確信圖表可以簡單表示為:

class Node {
   int value;
   List<Node> adj;
}

並實現大多數您自己感興趣的算法。 如果你在圖表的某個練習/學習環節的中間討論這個問題,那麼這是最好的考慮。 ;)

您也可以選擇最常用算法的鄰接矩陣:

class SparseGraph {
  int[] nodeValues;
  List<Integer>[] edges;     
}

或者某些操作的矩陣:

class DenseGraph {
  int[] nodeValues;
  int[][] edges;     
}


在我用yWorks玩弄yFiles的一個大學項目中,發現它有非常好的API。


如果你真的在尋找Charting庫而不是Node / Edge Graph庫,我會建議在Big Faceless Graph庫( BFG )上揮霍。 它比JFreeChart更容易使用,看起來更好,運行速度更快,有更多的輸出選項,真的沒有比較。


如果你需要表演,你可以看看Grph。 該圖書館由法國大學和CNRS / Inria開發。

http://www.i3s.unice.fr/~hogie/grph/

該項目是積極的,並提供被動支持!


我不知道我是否會將其稱為生產準備,但有jGABL


查看JGraphT是一個非常簡單,功能強大的Java圖形庫,它可以很好地完成,為了消除任何混亂, 它與JGraph不同 。 一些示例代碼

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

    String v1 = "v1";
    String v2 = "v2";
    String v3 = "v3";
    String v4 = "v4";

    // add the vertices
    g.addVertex(v1);
    g.addVertex(v2);
    g.addVertex(v3);
    g.addVertex(v4);

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

檢查Blueprints

藍圖是屬性圖數據模型的接口,實現,聯繫和測試套件的集合。 藍圖類似於JDBC,但對於圖形數據庫。 在TinkerPop開源軟件堆棧中,Blueprints可作為以下的基礎技術:

Pipes :一個懶惰的數據流框架

Gremlin :圖形遍歷語言

Frames :一個對象映射器

Furnace :圖算法包

Rexster :一個圖形服務器


為了可視化,我們的團隊在prefuse取得了一些成功。 我們擴展它來處理建築地板和氣泡圖,並沒有太多抱怨。 他們有一個新的Flex工具包,名為Flare,它使用了非常相似的API。

更新:我不得不同意評論,我們最終編寫了很多自定義功能/解決prefuse限制。 我不能說從頭開始會更好,因為我們能夠通過使用prefuse從第1天展示進步。 另一方面,如果我們再次執行相同的任務,那麼我可能會跳過prefuse,因為我們會更好地理解需求。





graph