算法第五章作业
2018-12-24 12:44 linzexuan 阅读(224) 评论(0) 编辑 收藏 举报算法第五章作业
1. 你对回溯算法的理解(2分)
回溯法是一种搜索算法,通过对问题构造相应的解空间树,进行深度优先策略的搜索。常遇到的有子集树和排列数两种解空间树。在搜索的过程中,可以通过题目的具体情况,利用约束函数、限界函数等剪枝函数对解空间树进行剪枝,剪去不可行子树,使得算法的时间复杂度减低。
回溯法的基本步骤:
(1)针对所给问题,定义问题的解空间;
(2)确定易于搜索的解空间结构;
(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
2. 请说明“子集和”问题的解空间结构和约束函数(2分)
题目输入数据:
5 10
2 2 6 5 4
解空间:该问题的解空间为{a1, a2, …},由此可以构造一棵深度为6的二叉树,每个第一层到第二层表示“2”是否被选择,左分支表示选择,右分支表示不选择。
约束函数:sum 表示当前数值,a 表示未被访问的数值的总和
若sum + a > c,则不对该子树进行遍历,返回上一个结点。
3. 请说明在本章学习过程中遇到的问题及结对编程的情况(1分)
在本章的学习中,理解回溯法的基本思路和掌握基本的解题步骤,但在解决问题时不能很好的定义解空间。
通过在编程题上与队友一起讨论分析,提高了解决问题的速度,同时也在交流讨论中,提高了用回溯法解决问题的能力。