各类算法总结和比较
1. 算法与程序
- 算法是指解决问题的一种方法或一个过程。算法是有若干指令组成的又穷序列,满足下述4条性质:
- 输入
- 输出
- 确定性
- 有限性
- 程序是算法用某种程序设计语言的具体实现。(程序可以是无限的,例如操作系统)
2. 分治法和递归的关系
分治法设计出的程序一般是递归算法,可以用递归方程分析计算效率。
3. 分治法和动态规划法
-
相同点:都是将待求解问题分解为若干子问题(与原问题相同),先求解子问题,再结合这些子问题的解得到原问题的解。
-
不同点:
- 动态规划法经分解得到的子问题往往不是相互独立的,而分治法的子问题是相互独立的。
- 动态规划保存已解决的子问题的答案,避免重复计算,提高了计算效率。
4. 动态规划法与贪心算法
- 相同点:求解的问题都具有最优子结构性质。
- 不同点:
- 贪心算法问题的最优解可以通过一系列局部最优的选择来达到,它仅在当前状态下做出最好选择,而动态规划的选择往往依赖相关子问题的解。
- 贪心算法不一定能得到整体最优解,动态规划法可以。
- 贪心算法一般是自顶向下的,而动态规划法是自下向上的。
- 贪心算法本质上仍是动态规划,但增加了约束条件&#