BGL 图的简单循环消除算法
我的问题应该很简单,给定一个图(BGL adjacency_list),是否有一个简单的算法来删除循环?我的第一次尝试是使用 DFS 访问者来检测关闭循环的边缘,然后将其删除,但我无法正确实现它。
有什么建议吗?代码示例是最好的。
My problem should be pretty simple, given a graph (BGL adjacency_list) is there a simple algorithm to remove cycles? My first attempt was to use the DFS visitor to detect an edge that'd close the cycle and then remove it but I was unable to implement it correctly.
Any suggestions? Code samples would be best.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
提升很棒。它有一个接受访问者的
depth_first_search
方法。 您可以在此处查看有关它的更多信息。您需要做的就是实现这样的访问者:
当然要记住后边是图中闭合循环的边。
Boost is great. It has a
depth_first_search
method that accepts a visitor. You can see more information about it here.All you need to do is implement a visitor like this:
remembering of course that a back edge is an edge that closes a cycle in the graph.
正如你所说,这是一个简单的 DFS。每次来到之前访问过的节点,都会有一个循环。只需删除最后一个边缘即可。
没有特定语言的伪代码。
It's a simple DFS, as you said. Each time you come to a node you visited before, there's a cycle. Just remove the last edge.
A pseudocode in no particular language.