我有一个没有权重的无向邻接增强图 . 我需要在图表中找到最小周期 .
最小周期: c1[1 2 3 4 ]
, c2[2 3 6 5]
,...但是例如: [1 2 5 6 3 4]
不是 minimum cycle
,因为它包含循环 c1
.
我在搜索过程中经历了不同的帖子,但最终我得到的解决方案是将所有周期都放在图表中,而不是最小周期 . 从Finding all cycles in undirected graphs和Cycles in an Undirected Graph我明白最好的方法是进行 DFS
搜索并查找 back_edges
. This thread给出了一些带有boost的解决方案,但是它给出了所有周期而不是最小周期,并且它没有实现 . Algorithm for finding minimal cycles in a graph还讨论了如何获得最小周期,但没有解决方案 .
如果有人有解决方法(在boost图库中更好),我很感激?
Update: 此处的最小循环意味着在候选循环的顶点集中,两个顶点之间不应存在另一个直接连接 . 例如,在 c3[1 2 5 6 7 4]
中,顶点之间没有后备,因此它是 minimum
. 但是在 c4[1 2 3 6 7 4]
中, [3 4]
之间存在一个可以产生循环 [1 2 3 4]
的边缘,所以我们不认为 c4
是最小的 .