代码改变世界

算法第5章作业

2018-12-24 13:18  葡萄葡萄葡葡萄  阅读(158)  评论(0)    收藏  举报

1、对回溯算法的理解

     回溯法可以系统地搜索一个问题的所有解或任意解,它按照深度优先策略,从根节点出发搜索解空间树。搜索至某一节点时,先判断该节点是否符合条件,如果不符合则返回父节点,否则,继续按深度优先策略搜索,如果求一个问题的一个或多个解,则应考虑设置约束函数和限界函数来降低算法的时间复杂度,提高算法的效率。

它的主要步骤是1、构建问题的解空间

                         2、确定易于搜索的解空间结构

                         3、设置合适的剪枝函数

                         4、按深度优先策略进行搜索。

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

      问题的解空间为n层的二叉树,每一层代表集合中的一个数,标记为0则被选中,标记为1则不选,遍历这棵树,一旦和为目标值则停止并打印被选中的数。

       约束函数:到t层时,若sum的值加上当前节点值大于目标值,则不选当前节点。

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

       在解题时剪枝函数处理得不是很好,后来和队友讨论后重新写剪枝函数。发现递归还是有要想清楚的地方。和队友讨论问题能加深印象以及可以更好理清思路。