我想生成一个完整的无向图的所有哈密顿循环(循环和反转算作重复的集合的排列,并且被排除在外)。
例如,{1,2,3} 的排列是
标准排列:
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
我希望程序/算法为我打印的内容:
1,2,3
由于 321 只是向后 123,所以 312 只是 123 旋转了一个位置,依此类推。
我看到很多关于给定集合具有的这些循环数量的讨论,以及查找图是否具有哈密顿循环的算法,但没有关于如何在完整的无向图中枚举它们(即一组数字可以在集合中的任何其他数字之前或之后)。
我真的很想要一个算法或 C++ 代码来完成这个任务,或者如果你能指导我到哪里有关于这个主题的材料。谢谢!