回溯与分支限界算法设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

总结实验心得体会:

掌握回溯法解决问题的一般步骤。学会使用回溯法解决实际问题。掌握分支限界法解决问题的基本思想。学会使用分支限界法解决实际问题

改进意见:

对于分支限界法了解的不透彻,应与老师沟通解决此问题,回溯法可以帮我们更好的解决一些多解的复杂性问题,所以,要更好的去学习和运用回溯法思想。

实验成绩:指导教师:年月日

相关文档
最新文档