第五章作业

1、对回溯算法的理解

解决问题的多条路中:从一条路往前走,能进则进,不能进则退回来,换一条路再试,回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。

 

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

解空间结构:“子集和”问题的求解方法与“01-背包”问题相似,针对解空间的每一个解,检测其是否被选择,如果是,则标记为1;如果不是,则标记为0,并且继续搜索。 直到找到求解的子集和,并输出路径。

约束函数:假设子集和为S,当前搜索到子集权重为w,前面累计权重为sum,若sum+w>S,则说明当前节点往下的节点权重加和大于S,此时需要回溯。

 

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

遇到的问题:很容易搞混约束函数与限界函数,在剪枝问题上很容易出错。

结队编程情况:回溯法解决0-1背包上遇到了问题,最后两个案例通过不了。

posted on 2018-12-23 14:04  fine_five  阅读(121)  评论(0)    收藏  举报