回溯与分支限界算法设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计与分析实验报
告
骑士游历问题(采用回溯法):
在国际象棋的棋盘(8行×8列)上放置一个马,按照“马走
日字”的规则,马要遍历棋盘,即到达棋盘上的每一格,并
且每格只到达一次。若给定起始位置(x0,y0),编程探索出一
条路径,沿着这条路径马能遍历棋盘上的所有单元格。
2. 行列变换问题(采用分支限界法):
给定两个m n方格阵列组成的图形A和图形B,每个方格的
颜色为黑色或白色,如下图所示。行列变换问题的每一步变
换可以交换任意2行或2列方格的颜色,或者将某行或某列颠
倒。上述每次变换算作一步。试设计一个算法,计算最少需
要多少步,才能将图形A变换为图形B。
图形A图形B
}
}
}
}
实例:
2. 行列变换问题的程序:
package ;
import graph{
static int sour, dest;//sour是图形的初始整数,dest是图形的目的整数
static int ans[]=new int[1<<16];//静态变量(即全局变量),用于存放图形变换的路径
int m=4,n=4,x;
int row[]=new int[4];
int col[]=new int[4];
void setx(int x){
=x;
}
总结实验心得体会:
掌握回溯法解决问题的一般步骤。学会使用回溯法解决实际问题。掌握分支限界法解决问题的基本思想。学会使用分支限界法解决实际问题
改进意见:
对于分支限界法了解的不透彻,应与老师沟通解决此问题,回溯法可以帮我们更好的解决一些多解的复杂性问题,所以,要更好的去学习和运用回溯法思想。
实验成绩:指导教师:年月日