我需要一个在无向图中找到循环(提升)并返回其顶点和边的函数。它只需要返回图中一个周期的顶点/边。
我的问题是 - 使用 boost 来做到这一点的最佳方法是什么?我没有使用它的经验。
我不知道Boost,但是here https://stackoverflow.com/questions/526331/cycles-in-an-undirected-graph是来自S.O.的回答。在概念层面上:
这是我的猜测:使用 BFS 遍历该图。在每个节点上记下其“深度”并添加对“父节点”的引用(即使有很多循环,也应该只有一个)。一旦您发现从 A 到 B 的链接创建了一个循环(因为 B 已经着色),则:
1)从A回溯到根,保存沿途的边/顶点。
2)从B回溯到根,保存沿途的边/顶点。
3)添加A、B、AB
4)“排序”恢复正确的顺序。考虑对 1) 使用 LIFO(堆栈),对 2) 使用 FIFO
我希望这有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)