算法第五章作业

Posted on 2019-12-23 22:46  马浩文  阅读(104)  评论(0编辑  收藏  举报

1.你对回溯算法的理解(2分)

回溯算法解决问题的一般步骤为:

1、定义一个解空间,它包含问题的解

2、利用适于搜索的方法组织解空间

3、利用深度优先法搜索解空间

4、利用限界函数避免移动到不可能产生解的子空间。

回溯算法的一个重要特性是,问题的解空间通常是在搜索问题的解的过程中动态产生的

 

2.请说明“子集和”问题的解空间结构和约束函数(2分)

解空间结构:用树的结构判断集合中的某一个数是否放入子集集合的数组中。

约束函数:解空间结构中遍历的深度> n时没有可行解,进行剪枝;当放入子集的元素总和等于目标和,则输出子集元素并进行剪枝;如果元素总和与下一个遍历节点之和大于目标和,则也剪枝。剪枝结束后便返回上一层。

3.请说明在本章学习过程中遇到的问题及结对编程的情况(1分

问题就是上课的时候看代码看得懂,但自己敲代码是就很混乱,究其原因还是不够熟悉、缺少实践练习。一般情况下课后遇到不懂的都是上网搜别人的代码然后理解。结对编程还是挺好玩的,因为小伙伴会发现一些自己忽略的小问题,这样可以少走很多弯路。在结对过程中,因为我们刚开始都对回溯法的掌握都不是很熟,所以花了挺长时间的,因为题目是比较典型的,所以算法的思想还可以,但是实现算法的路有点艰难。