目录
分治法,动态规划法,贪心法,回溯法主要概括
- 1.前言
- 2.分治法
- 2.1基本思想:
- 2.2适用条件:
- 2.3时间复杂度:
- 2.4主要解决:
- 2.5关键字:
- 2.6其他:
- 3.动态规划法
- 3.1基本思想:
- 3.2适用条件:
- 3.3时间复杂度:
- 3.4主要解决:
- 3.5关键字:
- 4.贪心法
- 4.1基本思想:
- 4.2时间复杂度:
- 4.3主要解决:
- 4.4时间复杂度:
- 4.5关键字:
- 5.回溯法
- 5.1基本思想:
- 5.2时间复杂度:
- 5.3主要解决:
- 5.4其他:
- 总结
- 参考
1.前言
分治法,动态规划法,贪心法,回溯法主要概括
2.分治法
2.1基本思想:
讲一个复杂问题分解为若干规模较小且结构与原问题相似的子问题,然后递归解决这些子问题,最后将子问题的解合并得到原问题的解。
2.2适用条件:
1.问题可以被划分为相互独立且同质的子问题。
2.子问题的解可以合并为原问题的解。
3.子问题的规模足够小,可以直接求解。
2.3时间复杂度:
通常为O(nlogn)
2.4主要解决:
求解最优子结构
最大子数组和问题
2.5关键字:
分解子问题,递归解决,分币
2.6其他:
归并排序和快速排序都是使用分治法的经典算法。
3.动态规划法
3.1基本思想:
将原问题分解为若干重叠子问题,通过求解子问题的最优解得到原问题的最优解。使用一个表格来存储子问题的最优解,避免重复计算
3.2适用条件:
原问题可被分解为重叠的子问题
3.3时间复杂度:
不一定看具体算代码 通常为O(n^2)或
O(n^3)
3.4主要解决:
背包,0-1,公共子序列
3.5关键字:
全局最优解
4.贪心法
4.1基本思想:
每一步都选择当前看起来的最优解,不考虑未来,通过一系列的局部最优解,希望得到全局最优解。
4.2时间复杂度:
通常为O(n)
4.3主要解决:
霍夫曼编码、最小生成树(如Prim算法和Kruskal算法),背包问题,任务调度
4.4时间复杂度:
通常为O(n),因为贪心算法只需一次遍历即可得到解
4.5关键字:
局部最优解
5.回溯法
5.1基本思想:
通过逐步构建解的集合,当发现当前候选解不能满足问题的约束条件时,回溯到上一步进行其他选择,直到找到满足问题的解或者遍历完所有可能的选择
5.2时间复杂度:
取决于问题的规模和解的数量,通常为指数级别的复杂度。
5.3主要解决:
N皇后,迷宫问题
5.4其他:
回溯算法是一种通过穷举所有可能的解并逐步构建答案的方法。
总结
参考
给个三连吧 谢谢谢谢谢谢了