这个回路问题还好不是很难,就是代码有点多,有很多看不懂
其实哈密顿回路就是说,如上图a中所示,有5个位置点,其中的连线表示两位置点之间可以往来,现在要求从其中某一个点出发,然后遍历所有点后(每个位置点只能走一次)回到起始位置点。它的行进方式还是有很多种的,也没有什么具体条件的要求。
然后b图就是利用回溯算法(其实就是穷尽所有的计算,只不过它的步骤比较系统)来计算可行的行进方式:
假设一开始从位置1出发,然后走向第二个点可选位置有三个,分别是2、3、4,然后在基于第二个位置点的基础上根据连线又可以确定第三个位置点的选择,直到所有的可能性都被穷尽。(其中有一个约束,在行进过程中同一个位置点不能出现2次,一旦出现该行进路线就无效,同时要求遍历完所有的点)
算法伪代码:
(有一部分为回溯的固定模板,后面代码会备注不用改变)
IS-COMPLETE(x)
1. if A[x[n],x[1]]!=0
2. then return true
3. return false
PRINT-SOLUTION(x)
1. for i<-1 to n
2. do print x[i],"->"
3. print x[1]
</