算法期末总结
应用回溯算法的三个步骤:
1.首先得构造解空间树:子集树和排列树;
2.以深度优先的方式搜索解空间:递归或迭代;
3.设计剪枝函数避免无效搜索:使用约束函数,剪去不满足约束条件的路径或使用限界函数,剪去不能得到最优解的路径。
回溯法解问题的一个显著特征是,解空间树是虚拟的,在任何时候,只需保存从根节点到当前扩展结点的路径。
在回溯问题中,若要求问题的所有解,就要回溯到根。
子集树:
当所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间称为子集树。
排列树:
当所给的问题是对n个元素的集合进行排列,找出最优排列问题时,相应的解空间为排列树。
约束函数:
先把集合里的数按递增序列排序,若当前的和sum加上当前正在进行的ai如果小于要求的和c,就是可以继续进行下一步k+1,若sum加上剩余的排在最后面的子集的和大于要求的和,就不符合要求,就可以跳过,并回溯到上一个步骤。
整个算法课程主要学习了:
分治法、减治法、动态规划法、贪心法、回溯法
其中经典的问题是0-1背包,他的解法可以使用其中任一一种,所以可以通过0-1背包问题来深入联系这些
困难的话就是动态规划,我觉得动态规划要列出表达式非常的难

浙公网安备 33010602011771号