代码改变世界

算法第五章作业

2019-12-19 20:50  秃头小张  阅读(96)  评论(0编辑  收藏  举报

1.你对回溯算法的理解

回溯法就是试探法,每次向一条分支深搜,记录下每一条分支的最优解,再进相比较得到整个对象的最优解。在这之中可能会有无用的深搜,就用到约束函数,如果在一条分支中未走到叶子节点但是他的解已经劣于最优解的话,就不往下继续搜索;或者是已超过题目中的限定条件,就不继续往下搜索。

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

解空间结构即子集树,每一个位置存的是从第一个节点到该节点的数字之和,选即走左子树,不选走右子树,叶子节点存的就是每一条分支的解。约束函数就是到达每一层后先判断是否数字之和已超过题目给出的数字,若已经大于给定数字则没有必要继续往下搜索,因为往下搜索只会超过更多,不能实现等于。

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

在回溯法学习中,一开始对约束函数还不是很清楚所以一开始会出现超时的结果;结对编程情况良好包括在大作业的实现上彼此互帮互助,收获良多。