算法第五章作业
1.你对回溯算法的理解
回溯法有“通用的解题法”之称,可以系统地搜索一个问题的所有解或任一解,它是一个既带有系统性又带有跳跃性的搜索算法。
了解空间的组织结构后,回溯法从开始节点出发,以深度有优先方式搜索整个空间。这个开始节点成为活节点,同时成为当前的拓展节点。在当前的拓展节点处,搜索向纵深方向移至一个新节点。这个新节点就成为活节点,并成为当前拓展节点。如果在当前的拓展节点处不能再向纵深方向移动,则当前拓展节点就成为死节点。此时,应往回移动至最近的一个活节点处,并使这个活节点成为当前的拓展节点。回溯法以这个工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无死节点时为止。
限定函数和上界函数可以提高程序的效率。
2.请说明“子集和”问题的解空间结构和约束函数
解空间结构:集合Sn={a1,a2,a3,.......,an}的一个满足所有元素加起来之和为c的子集;
约束函数:如果当前的所加值已经大于指定值c,则不符合条件,进行回溯。
3.请说明在本章学习过程中遇到的问题及结对编程的情况
回溯法作为一种万能的解题方法,应当熟练掌握。
回溯法中要尽可能地分析问题,把不必检索的枝叶剪掉,提高代码效率。但同时也要注意不能把可能包含最优解的叶子节点删掉,避免错误。切记宁愿少删,也不能错删。
posted on 2019-12-18 12:28 Shenhaowen 阅读(107) 评论(0) 编辑 收藏 举报