算法第五章作业

1. 你对回溯算法的理解

回溯算法类似枚举,在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就回溯返回尝试别的路径。许多复杂的、规模较大的问题都可以使用回溯法,但需要通过剪枝降低程序的时间复杂度。

运用回溯法解题的关键要素有以下三点:

(1) 针对给定的问题,定义问题的解空间;

(2) 确定易于搜索的解空间结构;

(3) 以深度优先方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。

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

解空间是一颗子集树,遍历左子树代表选中该结点代表的数,遍历右子树代表不选中该结点代表的数。约束函数的思路是,遍历右子树之前,将当前和加上该数之后所有数之和,与目标解比较,若小于目标解,则不必遍历右子树。

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

解决作业时较顺利,但解决实践题的0-1背包问题时对剪枝位置及严格剪枝理解有误(误认为用贪心算法解决0-1背包问题作为上界,实际是解决背包问题作为上界),后经修改得到正确答案。

posted @ 2019-12-13 16:18  超高校级的院长  阅读(145)  评论(0编辑  收藏  举报