第五章作业

it2022-05-09  26

一、对回溯法的理解

 

回溯法是一种搜索方法。用回溯法解决问题时,首先应明确搜索范围,即问题所有可能解组成的范围。这个范围越小越好,且至少包含问题的一个(最优)解。实质就是在构建的解空间的树进行DFS(深度优先搜索)。我认为最重要的设计剪枝函数来避免不必要搜索的解空间,从而大大提高算法的效率,并且这也是一个难题。

 

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

1、解空间

对于集合中的每一个元素,可以选与不选,每个元素选与不被选的的所有可能集合构成了这个问题的解空间,可以构成一个二叉树,每一层代表对一个元素的选择,左子树代表选择此元素,右子树代表不选择。

2、约束函数

if(sum + x[t] <= m)

 

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

 

在写剪枝函数不够细心,导致了超时,将 sum + x [ t ] <=  m 写成 sum <= m 导致了多余的搜索,多亏了结对编程伙伴的提醒才发现的。

 

转载于:https://www.cnblogs.com/lussww/p/10153165.html

相关资源:c#第三章课后习题作业第五题

最新回复(0)