算法第5章作业
1.对回溯算法的理解:
(1)应用回溯法求解问题时,首先应明确定义问题的解空间,该解空间应至少包含问题的一个最优解。
(2)在定义了问题的解空间后,还需要将解空间有效地组织起来,使得回溯法能方便地搜索整个解空间,通常将解空间组织成树或图的形式。
(3)确定了问题的解空间结构后,回溯法将从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。
2.“子集和”问题的解空间结构和约束函数
(1)解空间结构:
(2)约束函数
先对左树剪枝,即走1与否的剪枝,判断方法为目前的和sum加上当前的a[t]是否大于给定的值,大于的话则不是1;然后是对右树进行剪枝,即走0与否的剪枝,判断方法主要是有一个变量rest表示数列a从t+1开始至后面所有剩下的元素之和,如果目前的和sum加上这个rest小于给定的值,则不是0.
3.结对编程情况
花了挺长时间才理解递归回溯和迭代回溯的过程。。。