題:
一個現代的C ++圖形表示和操作庫
einpoklum
2016-03-08 07:01:27 UTC
view on stackexchange narkive permalink

在我以前的工作場所中,我對Boost的圖形庫有混合的經驗;我不是主要使用該代碼的人,但是我們經歷了脆性,腳下發生了變化,並且出於不夠充分的原因而需要反复刷新狀態。是的,我知道這聽起來有點誇張,但是重點是我想看看其他方法。

所以,我正在尋找一個圖形庫,

  • 代表無向圖和有向圖。
  • 根本不依賴於Boost,或者至少不顯著依賴。
  • 在圖是靜態的(例如,搜索,查找,
  • 在操作圖形時表現出良好的性能-邊和頂點的添加,移除,移動和更新。
  • 很好地縮放到大,但不一定是龐大的備用圖,而不是密集的圖-例如,成千上萬的頂點和成千上萬的邊。
  • 不會非常費力不均勻的頂點下降。
  • 友好地嘗試通過附加語義來豐富邊和頂點(是的,再次,這裡含糊其詞,不能事先排除答案)。
  • 免費且開源
  • 用C ++ 11和更高版本編寫。 。 你知道嗎?好的,不是嚴格的要求,但我會對這些有很大的偏見。

如果還可以,這也很好:

  • 很好地擴展到巨大圖。
  • 在稀疏圖和稠密圖上都表現良好。
  • 允許您根據性能目標配置其基本表示。
  • 不是其中之一malloc()就像沒有明天一樣,讓您陷於迷宮般的指針中。
  • 擁有一個不太流行的許可證。
  • 正在積極維護。 / li>
  • 有據可查。
  • 被廣泛使用。
還有[dlib](http://dlib.net/graph_tools.html)
@Antony:我認為這不能滿足我所有的要求...
抱歉,當我發表評論而不是回答時,我同樣擔心。我已經使用了Boost Graph Library一點,所以我感覺到您的痛苦:-(
一 回答:
einpoklum
2016-03-19 02:51:41 UTC
view on stackexchange narkive permalink

到目前為止,還沒有人回答...似乎沒有多少人經常訪問此站點上的C ++庫請求頁面。無論如何,我現在會在此答案中添加一些潛在的候選者或接近候選者:

可能是相關的:

  • LEMON L 庫,用於 N 高效 M 處理和 O 優化/ strong> etworks-“ C ++模板庫,可提供常見數據結構和算法的有效實現,並側重於主要與圖和網絡連接的組合優化任務。”這是一個 2010年演示文稿,描述了檸檬。
  • GGL G raph G rammar L 圖書館-。這是手冊
  • 地精-“用於處理圖形的工具鏈”,包括圖形相關組合優化算法的代碼;在空間中佈置圖(例如分層圖,正交圖),圖組成(?),文件之間的序列化,頂點和邊屬性以及入射結構。 可能不是C ++ 11ish,也不涉及太多模板。
  • SNAP-The S tanford N etwork A 分析 P 平台-一方面,它似乎非常專注於特定的應用程序;另一方面,它可能具有非常完整的圖形表示和操作API。還有一個提示,它可能基於另一個較低級別的圖形庫。
  • NGraph-超簡單的單個23 KiB .hpp文件圖形庫。 / li>
  • digraph-一個用於digraph的C ++ 11庫,旨在用作 Faust音頻信號處理編譯器的一部分。

不相關/不完全相關:

  • LEDA-包含相同名稱的組合算法和數據結構的較大代碼庫的一部分。這是商業軟件,甚至免費版也是封閉源代碼的(您可以-喘著氣-從他們那裡購買源代碼)。不用了,謝謝。
  • OGDF- O G 速動 D F 沖壓加工-似乎更關注平面圖上的佈局,圖形繪製。聲稱是LEDA的FOSS替代品。
  • igraph-創建用於網絡分析的C(非C ++)圖形庫。聲稱專注於大型但非大型圖形的性能;而且似乎已經有十多年的發展了。 GitHub頁面。它具有一些不穩定的API C ++綁定,名為igraphpp。
  • NoCycle-DAG表示庫。它使用鄰接表的緊湊(?)表示形式。可能與我所需的內容有很大不同,我不認為我“購買”了有關其表示的炒作。
  • libcgraph- GraphViz圖形佈局項目/工具包的一部分。請注意,那裡還有一個名為libgraph的組件-不確定使用哪個組件。
  • GCT- G raph C lass T emplates-另一個單頭文件準系統庫。

有些C庫不是很好,但我認為我不是我會花時間用C ++封裝它們,更不用說缺乏可用於它們的抽象了。

另請參閱以下StackOverflow問題:



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...