回溯法求解TSP问题回溯法求解TSP问题
人工智能实验报告
实验名称:TSP问题
姓名:xxx
学号:xxx
xx大学计算机学院
2014年1月14日
实验目的
掌握递归回溯法的思想,能够求解TSP问题,增强自己的编程能力.
实验内容
下图是5个城市的交通图,城市之间的连线权重表示城市之间路程的费用。要求从A城出发,经过其它城市一次且仅一次,最后回到A城,找出一条费用最低的回路。请用伪代码形式描述所设计的算法。
回溯法思想:
回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
若已有满足约束条件的部分解,不妨设为(x1,x2,x3,……xi),I
算法流程:
递归调用回溯法
否
是
否,返回
是
关键技术:
使用了递归回溯法,通过递归调用,节省了代码量,使代码更简洁易懂。
关键代码:
void Backtracking(int cityId, int depth, int len) { //正走到的城市的节点号 经过的节点数 走过的长度
if (cityId == 0 && depth == 5) { //如果从