我想要效率,如果效率(= 0.9*速度+0.1*其他)很高,我愿意自己编写代码.如果我要在LEDA图形或Boost图形之间进行选择,我应该选择哪一个?
我的算法非常耗时(有些甚至是非多项式的,在大图上工作).
Boost通常是一个很好的库,但出于多种原因我不建议使用Boost图.
BGL文档是可执行的,没有易于遵循的用户指南.我发现尝试定义具有与我自己的问题相关的属性的图是非常困难的.
您经常会遇到巨大的编译器错误,这些错误会在模板中的模板中显示模板...几乎不可能看到正在发生的事情.
我发现的唯一解决方案是从Boost Graph附带的一个简单示例开始,并对其进行调整,直到它达到我想要的效果.
由于这些原因,我知道有很多聪明能干的人放弃了Boost Graph.很遗憾因为它下面有非常有效的算法.对我来说,BGL是模板过度使用的教科书示例.Boost Graph是一个很好的想法,完全忽略了这一点:如果无法读取,维护,扩展或调试代码,那么代码就毫无价值.
LEDA/Boost实现还有其他选择. 你可能会比调查这个类似的帖子更糟糕:https:
//stackoverflow.com/questions/510758/can-you-suggest-a-good-book-on-graphs-and-graph-algorithms (链接不再有效)
Boost 图算法可以在 LEDA 甚至斯坦福图基础图上工作,但反之则不然。 http://www.boost.org/doc/libs/1_46_1/libs/graph/doc/leda_conversion.html
我建议使用 boost graph,它是最先进的。
麦克风
| 归档时间: |
|
| 查看次数: |
2297 次 |
| 最近记录: |