常见算法要点思路——贪心与搜索问题
贪心算法
- 需要满足的条件:问题具有贪心选择性,并且具有优化子结构(就是在选择完之后的子问题,和总的问题达到最优解是一致的);证明贪心选择性,就是证明某一个最优解中包含了贪心选择的内容
- 和动态规划相比,二者都需要描述清除问题的优化子结构;但是贪心算法重点是证明贪心选择的合理性,DP重点是找到子问题和合理的递推关系式
- 二者和分治相比,前两者面对最优化问题,分治不考虑而他的重点是拆分递归和合并
树搜索
-
将问题求解的步骤转换为树的搜索过程,每一步的多种选择作为树的分支
-
注意:在树搜索问题中的使用的广度优先和深度优先搜索和平时遍历时不太一样的,换句话说,在广度遍历时下层节点是不能和上层节点重复的,但是是树搜索问题中,这样是可行的,因为树搜索的本质是列举所有的问题可能。
-
深度优先和广度优先在树搜索中的区别就是在寻找问题的解时:深度优先是一直探索某一种可能的后续,有连续性;广度优先是每探索一步就换为另一种可能。
-
深度优先搜索的优化:
-
Hill-Climbing:每次选启发测度最小的子节点进行扩展(启发测度就是和目标问题的接近程度),但是这个方法基于贪心的思想,只针对当前节点的子节点&
-