第五章作业
1、对回溯算法的理解
解决问题的多条路中:从一条路往前走,能进则进,不能进则退回来,换一条路再试,回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。
2、请说明“子集和”问题的解空间结构和约束函数
解空间结构:“子集和”问题的求解方法与“01-背包”问题相似,针对解空间的每一个解,检测其是否被选择,如果是,则标记为1;如果不是,则标记为0,并且继续搜索。 直到找到求解的子集和,并输出路径。
约束函数:假设子集和为S,当前搜索到子集权重为w,前面累计权重为sum,若sum+w>S,则说明当前节点往下的节点权重加和大于S,此时需要回溯。
3、请说明在本章学习过程中遇到的问题及结对编程的情况
遇到的问题:很容易搞混约束函数与限界函数,在剪枝问题上很容易出错。
结队编程情况:回溯法解决0-1背包上遇到了问题,最后两个案例通过不了。
浙公网安备 33010602011771号