算法第5章作业

1.对回溯算法的理解:

(1)应用回溯法求解问题时,首先应明确定义问题的解空间,该解空间应至少包含问题的一个最优解。

(2)在定义了问题的解空间后,还需要将解空间有效地组织起来,使得回溯法能方便地搜索整个解空间,通常将解空间组织成树或图的形式。

(3)确定了问题的解空间结构后,回溯法将从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。

 

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

(1)解空间结构:

(2)约束函数

先对左树剪枝,即走1与否的剪枝,判断方法为目前的和sum加上当前的a[t]是否大于给定的值,大于的话则不是1;然后是对右树进行剪枝,即走0与否的剪枝,判断方法主要是有一个变量rest表示数列a从t+1开始至后面所有剩下的元素之和,如果目前的和sum加上这个rest小于给定的值,则不是0.

 

3.结对编程情况

花了挺长时间才理解递归回溯和迭代回溯的过程。。。

 

posted @ 2018-12-24 17:18  kiritsugu  阅读(123)  评论(0编辑  收藏  举报