算法第五章作业

 

1.对回溯算法的理解

回溯算法有“通用的解题法”之称,它是一个及带有系统系又带有跳跃性的搜索算法。

用回溯算法解决问题的一般步骤:
1、 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。
2 、确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间 。
3 、以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。

 

 

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

设集合S={x1,x2,…,xn}是一个正整数集合,c是一个正整数,子集和问题判定是否存在S的一个子集S1,使S1中的元素之和为c。试设计一个解子集和问题的回溯法。

 

解空间结构

正整数集合S={x1,x2,…,xn}中的一个子集S1,其元素之和为c

约束函数

用一个变量temp记录所用正整数的和,每次选择完一层后,不管是否选择这个数,都把这个数从temp中减去,然后判断剩余元素之和是否小于当前目标值。

 

 

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

回溯法思路容易理解,在其他算法想不出怎么做时可以用,只是剪枝限界函数比较难,经常卡在这里导致运行超过限定的时间,组队编程的时候就是因为这个卡在第一题那里比较久

posted on 2019-12-19 22:21  Aozaki  阅读(141)  评论(0编辑  收藏  举报