用于动态图的C / C ++库?

时间:2011-07-06 21:47:42

标签: c++ c algorithm graph libraries

我正在寻找一个可以在动态图上运行的库。我有一个模拟,我必须在对其结构进行一些更改后重复计算图形的平均测地长度(添加和删除边,在无向图上,所有边具有相同的权重)。

我正在使用快速C ++包装而不是我制作的igraph。 igraph是静态图形,所以每次我更改图形时,我都会从头开始重新计算测地距离。这是一个蒙特卡罗模拟,所以我必须这样做数百万次来恢复一些统计数据。它开始变得很慢。

所以我查找了带有动态图算法的库,可以重新计算在删除或添加边后更新平均长度。我找到了一些关于这个主题的论文,但我真的不是专家(我只是一个物理学家,我只是偶然使用图表来解决问题......我几乎不了解数据结构和算法)所以我可以甚至没有阅读论文,更不用说实现算法了。

我发现这个图书馆LEDA(http://www.algorithmic-solutions.com/leda/)似乎有一个动态的图形扩展,但它似乎没有维护(下载免费版本的链接被打破)它是专有的。

还有其他选择吗?我正在寻找C / C ++库。如果必须的话,也许Haskell,我绝对绝望。

3 个答案:

答案 0 :(得分:1)

因为无论如何你都在做蒙特卡洛,我认为接近平均最短路径长度是可以接受的。在每个步骤中,您可以对少量节点进行采样,并报告从其中一个节点开始的路径的平均最短路径长度,这些节点具有相同的期望并且希望具有合理的方差。

或者,您在动态最短路径上提到的JACM论文的参考文献[3]是2004年的实验研究;也许作者会让你使用他们的代码。

答案 1 :(得分:0)

我知道这件事已经很晚了,但你看过LEMON吗?

答案 2 :(得分:-1)

你看过Boost Graph Library

吗?

我自己没有使用它,但作为Boost的一部分,你可以期待它的质量非常高,但它需要一定程度的C ++专业知识。