我有一个没有权重的无向邻接增强图。我需要在图表中找到最小周期。
最小周期: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线程提供了一些带有boost的解决方案,但它给出了所有周期而不是最小周期,并且它没有实现。 Algorithm for finding minimal cycles in a graph还讨论了如何获得最小周期,但没有解决方案。
我很感激,如果某人有解决方法(在升级图库中更好)?
更新:此处的最小循环意味着在候选循环的顶点集中,两个顶点之间不应存在另一个直接连接。例如,在c3[1 2 5 6 7 4]
中,顶点之间没有备份,因此它是minimum
。但是在c4[1 2 3 6 7 4]
中,[3 4]
之间存在一个可以创建周期[1 2 3 4]
的边缘,因此我们不会将c4
视为最小值。