有沒有人對Graph算法的任何Java庫有很好的經驗。我試過JGraph,發現它沒問題,而且google中有很多不同的東西。有沒有人實際使用生產代碼或推薦?爲了澄清,我不是在尋找一個產生圖形/圖表的圖書館,我正在尋找一個可以幫助圖表算法的圖表,例如最小生成樹,克魯斯卡爾算法節點,邊緣等。理想情況下,良好的Java OO API中的算法/數據結構。好的Java圖算法庫?
回答
如果您使用JGraph,你應該給一個嘗試JGraphT這是專爲算法。它的一個特點是使用JGraph庫進行可視化。它還在開發中,但非常穩定。我前段時間分析了JGraphT算法的複雜性。其中一些並不是最快的,但如果你要自己實現它們並需要顯示你的圖表,那麼它可能是最好的選擇。我非常喜歡使用它的API,當時我很快就要編寫一個在圖形上工作並在稍後顯示的應用程序。
爲了可視化,我們的小組在prefuse上取得了一些成功。我們擴展它來處理建築地板和氣泡圖,並沒有太多抱怨。他們有一個新的Flex工具包,名爲Flare,它使用了非常相似的API。
更新: 我不得不同意評論,我們最終寫了很多定製功能/解決prefuse限制。我不能說從頭開始會更好,因爲我們能夠通過使用prefuse從第1天展示進步。另一方面,如果我們再次執行相同的任務,則可能會跳過prefuse,因爲我們會更好地理解需求。
你對prefuse有什麼個人想法?在我上一份工作中,一個項目開始使用它,但最終以90%以上的版本重新編寫(並優化了,並增加了新功能)prefuse。 – 2008-09-09 11:33:22
如果你真的在尋找圖表庫,而不是爲節點/邊緣圖庫,我會建議在Big Faceless Graph庫(BFG)上揮霍。它比JFreeChart更容易使用,看起來更好,運行速度更快,有更多的輸出選項,真的沒有比較。
您誤解了這個問題:它是關於具有節點和邊緣的那種圖形,而不是那種有餡餅和條形的圖形。 – amarillion 2011-10-20 10:55:19
JUNG是一個很好的可視化選項,也有一套相當不錯的可用圖形算法,包括隨機圖形創建,重新佈線等幾種不同的機制。我也發現它通常很容易擴展並在必要時進行調整。
包hep.aida。*是LGPL(http://acs.lbl.gov/software/colt/license.html)。這是通過馬駒(http://jung.sourceforge.net/download.html)導入的。這可以防止JUNG被用於ASF和ESF的項目中。 也許應該使用github fork https:// github。com/rortian/jung2並刪除該依賴項。 https://github.com/rortian/jung2/commit/f4ca0cdcd3312589cbb48de7350b84cbff6067b9是鏡像最後的CVS提交。目前的提交似乎刪除了可視化功能。 – koppor 2013-05-26 11:58:24
自2010年以來沒有發佈,我認爲這個項目被放棄 – Yacino 2017-05-12 08:35:37
我不知道是否可以稱之爲生產就緒,但有jGABL。
退房JGraphT的,這是非常出色和,以消除任何混淆一個非常簡單而強大的Java圖形庫,比JGraph不同。有些sample code:
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);
這是一個偉大的演示在這裏https://github.com/jgrapht/jgrapht/wiki/DirectedGraphDemo – 2016-02-17 23:54:38
JDSL(數據結構庫中的Java)應該是足夠好,如果你到圖形算法 - http://www.cs.brown.edu/cgc/jdsl/
謝謝你,我從來沒有遇到它。你在使用它嗎? – 2009-02-24 09:31:13
摘要:
- JGraphT如果你更感興趣的數據結構和算法。
- JGraph如果您的主要焦點是可視化。
- Jung,yWorks和BFG是人們嘗試使用的其他東西。
- Prefuse是一個不是沒有,因爲必須重寫大部分。
- Google Guava如果您只需要良好的數據結構。
- Apache Commons Graph。目前處於休眠狀態,但爲許多算法提供了實現。見https://issues.apache.org/jira/browse/SANDBOX-458對於實現的算法,也與榮格,GraphT,Prefuse相比列表,jBPT
嘗試安納斯的一個開源圖形包這是很容易得到認真處理
http://neo4j.org/是一個圖形數據庫,它包含許多圖形算法,並且比大多數內存庫更好地擴展。
http://incubator.apache.org/hama/是一個關於Hadoop的分佈式科學軟件包,用於大規模矩陣和圖形數據。
從http://mmengineer.blogspot.com/2009/10/java-graph-floyd-class.html
JGraph提供一個功能強大的軟件與圖形(直接或undirect)工作。還生成Graphivz代碼,您可以看到圖形表示。您可以將自己的代碼算法放入pakage中,例如:回溯代碼。該包提供了一些算法:Dijkstra,backtracking minimun路徑成本等。
Apache Commons offers commons-graph。在http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/之下,可以檢查來源。示例API使用也是in the SVN。如果您只需要良好的數據結構,請參閱https://issues.apache.org/jira/browse/SANDBOX-458以獲取已實現算法的列表,並與Jung,GraphT,Prefuse進行比較,jBPT
JGraphT是一個圖表庫,其中實現了很多算法,並且具有(在我的思想中)一個好的圖模型。 Helloworld Example。許可證:LGPL + EPL。
JUNG2也是BSD許可的庫,其數據結構類似於JGraphT。它提供了佈局算法,目前在JGraphT中缺少。最近的提交是從2010年開始的,包hep.aida.*
是LGPL(通過colt library,其中is imported by JUNG)。這可以防止JUNG被用於ASF和ESF的項目中。也許應該使用github fork並刪除該依賴關係。 Commit f4ca0cd正在鏡像最後一次CVS提交。目前的提交似乎刪除了可視化功能。 Commit d0fb491c增加了一個.gitignore
。
Prefuse使用矩陣結構存儲圖,該矩陣結構對於稀疏圖不是有效的存儲器。許可證:BSD
Eclipse Zest內置了圖形佈局算法,可以獨立於SWT使用。見org.eclipse.zest.layouts.algorithms。所使用的圖形結構是Eclipse Draw2d之一,其中Nodes are explicit objects並非通過泛型注入(如在Apache Commons Graph,JGraphT和JUNG2中發生的那樣)。
教學圖形算法的實現可以在這裏找到(由教授塞奇威克等人。): http://algs4.cs.princeton.edu/code/
我被介紹給他們,而出席coursera這些特殊的算法課程(也由教授授課塞奇威克。 ):
這也是很好的確信,一個圖可表示爲:
class Node {
int value;
List<Node> adj;
}
並實現大多數您自己感興趣的算法。如果你在圖表的某個練習/學習環節的中間出現這個問題,這是最好的考慮。 ;)
你也可以喜歡鄰接矩陣爲最常見的算法:
class SparseGraph {
int[] nodeValues;
List<Integer>[] edges;
}
或矩陣的一些操作:
class DenseGraph {
int[] nodeValues;
int[][] edges;
}
- 1. 良好的圖形算法庫
- 2. 用於圖論算法的Java庫
- 3. 遺傳算法的哪個Java庫/庫?
- 4. Java中的熱圖算法
- 5. 良好的圖遍歷算法
- 6. 圖形數據庫對於最短路徑算法更好嗎?
- 7. Java圖形佈局算法
- 8. C#圖形算法庫
- 9. Java的算法
- 10. 好算法視頻
- 11. 什麼是最好的開源純java計算機視覺庫?
- 12. 爲範圍計算尋找一個好的Java IPV6庫
- 13. 更好庫矩陣運算
- 14. 最好的分割算法
- 15. 最好的壓縮算法
- 16. 「好」數字的算法
- 17. 幾何圖元的Java算法
- 18. 用於比較圖算法的Java
- 19. 用什麼java庫進行圖算法演示?
- 20. 什麼將是一個很好的算法來找到圖像移位(Java)
- 21. 教學好壞寫法(Python)的算法
- 22. Java中的良好數據透視表/數據表算法
- 23. 'MergeSort算法' - 在JAVA中有什麼更好的實現?
- 24. Java和VTK中的良好路徑最小化算法2D
- 25. 在Java處理3(2D)中碰撞檢測的更好算法?
- 26. Java String.equals()算法
- 27. Java OCR算法
- 28. MergeSort算法 - java
- 29. 好的UITableView設計圖庫
- 30. 最好的圖形庫
JGraph現在有一個分析包,包括一系列分析功能,http://jgraph.github.com/mxgraph/java/docs/index.html。 – David 2013-03-25 20:56:19