欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

马步遍历问题与骑士巡游问题的回溯算法

时间:2015-10-20  作者:王力强

【摘要】马步遍历问题与骑士巡游(knight's tour)问题是指在有8  8方格的国际象棋棋盘上进行奇异的骑士“L型”(L-shaped)移动的问题。而骑士巡游问题实际是带有约束条件的马步遍历问题,因此在用程序求解的时候可以一并求解。本文给出求解这一问题的回溯算法之C++语言程序。
论文关键词:骑士巡游,回溯算法,C++语言

一般地说,我们用如下方法表示一个解:即把数字0,1,…,63放入棋盘中的方格来表示到达这些方格的顺序。解决骑士巡游问题更具创意的方法之一是由J. C. Warnsdorff在1823年提出的。其规则是:骑士总是移向具有最少出口且没有到达过的方格之一。

由于骑士巡游问题实际是带有约束条件的马步遍历问题,因此在用程序求解的时候可以一起求解。程序算法依然是回溯法,和皇后问题有相似之处。马步遍历和骑士巡游问题的复杂度较高,求出一个解相对容易,但要求出所有的解是要花一定时间的。

一、回溯算法的实现

1.为解决这个问题,我们把棋盘的横坐标定为i,纵坐标定为j。i和j的取值范围是从1到SIZE。当某个骑士占了位置(i,j)时,其在这个位置上可以向8个方向以“L型”移动,它们分别是:

方向1:i+2,j+1;

方向2:i+1,j+2;

方向3:i-1,j+2;

方向4:i-2,j+1;

方向5:i-2,j-1;

方向6:i-1,j-2;

方向7:i+1,j+2;

方向8:i+2,j-1。

2.棋盘以二维数组表示,其下标最大值8,将骑士的每一步按1,2,3 … 64填入数组相应单元。其过程如下:

………

for(int i=0;i<8;i++)

for(int j=0;j<8;j++)

trajKT[i][j]=0;

[作者简介] 王力强(1965- ),江苏省常州市武进区人,陕西省城市经济学校财务科长,工程师。

………

for(int e=0; e<=curPointSub; e++)

{

trajKT[moveTraj[e].Location.x_pos][moveTraj[e].Location.y_pos] = e+1;

}

for(i=0;i<8;i++)

{

for(int j=0;j<8;j++)

cout<

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:逆向工程的数据处理技术简析
下一篇论文:浅谈几种宽带接入技术优劣
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
    无相关信息
最新计算机论文
读者推荐的计算机论文