算法第5章作业

1.你对回溯算法的理解

回溯算法类似于枚举法,先确定一个解空间然后进行深度优先搜索,在约束函数和限界函数下不停剪枝以减少遍历次数,当某条路径遍历完成或者是不满足条件便进行“回溯”返回上一层,再进入另一条路径,从满足条件的路径中选择最优路径作为这个问题的最优解。

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

子集和问题的解空间是一个n层的二叉树,向左代表选择这个数,向右代表不选择这个数。约束函数是遍历到当前的总和值sum加剩余值小于目标值,则不进行遍历,或当前总和sum加下一个节点大于目标值,则不进行遍历。

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

这次作业的问题主要在“子集和”问题,一直不知道怎么处理当下一节点与当前总和sum相加大于目标值的回溯情况,后来和队友谈论,发现只需要再增加一条if(sum+v>c)v是剩余总和,c是目标值,进行回溯就可以了,结对编程的过程真的让我解决了很多问题。

你可能感兴趣的:(算法第5章作业)