实验四:回溯算法的应用.docVIP

  • 13
  • 0
  • 约1.38千字
  • 约 3页
  • 2017-09-01 发布于重庆
  • 举报
实验四:回溯算法的应用 问题描述: 算法思路: 本次实验就是在实验一的基础上,对算法进行修正。说简单点,就是在每个可分隔的空间中,对每个可放入的方块,都放进去空间中试一次,并在这个尝试的基础上进行递归回溯。这个没有什么特别难的地方,关键是对整个解空间的定界修剪,本实验所采用的定界及修剪方法如下: 定界方法:设立一个bestHegiht变量,其记录着已经得到的结果中最优的解,以这个为边界,如果在切割过程中的高度totalHeight高于这个最优解,则没有继续递归下去的必要了。 剪枝方法:设立一个reArea变量,其记录的是还未放入空间中的方块的总面积,在每次递归中,挑出一个最低的子空间,假定该子空间高度为H,且所给总空间的宽是baseW,则如果存在H+reArea/baseW bestHeight的关系,表示该节点以下的填充都是没有必要的,达不到最优解,从而达到剪枝的目的。 但,由于解空间实在是太庞大,加上本程序的效率又不高(因为是在以前程序的基础上更改的),所以,但靠剪枝定界还是不能在短时间内计算出结果,所以,又加了一个递归搜索次数的限制,MAXSEARCH,如果,递归搜索的次数超过了此值,则表示该深度已经达到了一定的界限,没有必要再继续递归下去了,通过这点来达到限时的作用,压缩了解空间。 伪代码: 在此,就仅仅罗列本实验中的核心程序int solveQ(void); int

文档评论(0)

1亿VIP精品文档

相关文档