算法第5章作业

1、你对回溯算法的理解

 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。通过解空间建立一棵树,不断向叶子节点探索,发现通过某个节点得不到最优解则返回上一个节点,还有就是“剪枝”,通过上界函数和以及约束函数简化枚举的搜索尝试过程。

 

2、请说明“子集和”问题的解空间结构和约束函数

 {a1,a2,a3........an},的解空间为{0,1},代表每个结点是否被选上,约束函数if(sum + a[t] <= c),判断如果选择该结点是否超过所需的和,如果超过则不选择。还有一个上界函数sum + rest >= c,rest代表剩下没选所有结点的总和,如果加起来都并没有目标大,则剪枝。

 

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

 在做关于回溯法的编程练习的时候,很容易遇到超时 的问题,当然是因为剪枝不够多造成的,如何合理正确剪枝成为回溯法的一大难点,也是结队编程中两个需要互相讨论的地方。

posted @ 2018-12-24 19:26  张西西  阅读(135)  评论(0)    收藏  举报