算法第五章作业

1.对回溯算法的理解

个人感觉回溯法就是枚举每一种可能来寻找问题的解,所有可能的解就组成了解空间,以深度优先搜索的方式来搜索这个解空间,然后得到最优解。

用回溯算法解决问题的一般步骤:
1、 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。
2 、确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间 。
3 、以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。
 
2.子集和问题
子集和问题的解空间结构是元素的所有子集组成的,可以类似0-1背包问题用一个向量表示所有元素的选择情况,0表示不在当前子集,1表示在当前子集,所有可能出现的排列就是解空间了。
子集和问题的约束函数可以这样确定:若当前选择的元素已经可以确定不能更新最优解,或者当前元素与剩余待选择的元素的最优情况相加确定不能更新最优解,那么就不需要继续搜索了。
 
3.
本单元的题目问题不算太大,就是要考虑好求解的问题解空间到底是子集树还是排列树,考虑不正确的话就解不出来了,其实每道题的求解模式都是一样的,掌握了之后就不难打了,最后结对编程很愉快,圆满完成任务。
posted @ 2019-12-19 21:11  显示名称已被使用.!  阅读(151)  评论(0编辑  收藏  举报