复习大纲

1.基本概念
2.分治法
3.动态规划
4.贪心法
5.回溯法及分支限界
【期末总结】算法分析与设计
【期末总结】算法分析与设计

概念总结

三要素????操作 控制结构 数据结构
五属性????有穷性/确定性/可行性/输入/输出
两方法????事前分析法/事后分析法
时间复杂度定义????执行算法所需的计算工作量
算法定义???? 有限条指令的序列 确定了解决某个问题的运算或操作顺序
复杂度????最坏情况Wn 平均情况An

函数的阶

????Θ等于的意思。(同阶)
????Ο表示上界,小于等于的意思。
????ο表示上界,小于的意思。
????Ω表示下界,大于等于的意思。
????ω表示下界,大于的意思。

阶运算定理⚠️

定理一????相除求极限
存在且为正常数c同阶
等于零低 正无穷高
????用于估计函数的阶
定理二????函数阶之间存在传递性????函数排序
定理三????略

求递推方程⚠️

1⃣️公式法????特征方程/通解
换元法????n=2^k
差消法????两边乘n/与n-1相减
2⃣️迭代法????一层层代进去(n-1)
3⃣️递归树????以树形式迭代(n/2)
4⃣️主定理????求阶

主定理????套公式即可

【期末总结】算法分析与设计

分治法

与动态规划本质区别????分治子问题相互独立
动态规划子问题重叠
递归????自顶向下
三步曲????分解/解决/合并

动态规划

⚠️基本要素????最优子结构/重叠子问题
最优化????自底向上
三步曲????找最优解/定义最优值/计算最优值

贪心法

与动态规划本质区别????不从全局考虑最优
⚠️基本要素????贪心选择性质/最优子结构性质
贪心选择????自顶向上
证明正确性????第一归纳法/第二归纳法
⚠️需要满足多米诺性质????子能推出父

回溯法

????适合内存有限
深度优先
目标找出所有解
方法????堆栈

分支限界

????解空间大
广度优先/最小耗费优先
⚠️两种方法????队列式/优先队列式
目标找出最优解

各方法异同点

【期末总结】算法分析与设计
【期末总结】算法分析与设计
【期末总结】算法分析与设计

重点算法

????必考????快速排序&矩阵链乘

???? 哈夫曼树????按频率表构造 小在左 大在右

????红黑树????插入问题
左旋/右旋/变色共同解决

????Prim&Kruskal
Prim????选起始点出发/每次选权重最小的边
????针对稠密图 n^2
Kruskal????所有权重排序 每次选最小 合并连通分量
????针对稀疏图 mlogm

????最短路径三兄弟
1⃣️Dijkstra????单源中转站????复杂度n^2
2⃣️Bellman????单源带负权值????复杂度v*e
3⃣️Floyd????多源中转站????复杂度n^3

????动态规划经典
1⃣️最长公共子序列????O(mn)O(m+n)
2⃣️最优二叉检索树????O(n^3)
3⃣️矩阵链乘法????O(n^3)
4⃣️背包问题????O(nb)

????分治法经典
1⃣️选最大最小问题????3/2n-2
2⃣️第k小元素????3/2n-1

????回溯法经典
连续邮资问题????深度优先搜索

????贪心法经典
1⃣️活动选择????O(n)
2⃣️哈夫曼树????O(n)等等
3⃣️最小生成树????Prim????O(n^2)
Kruskal????O(nlogn)

????NP问题

排序时间复杂度

插入排序O(n^2)
堆排序nlogn
归并排序nlogn
快速排序 最坏n^2 最理想nlogn
桶排序 最理想sitaN

相关文章:

  • 2021-12-03
  • 2022-12-23
  • 2022-01-09
  • 2021-12-04
  • 2021-09-11
  • 2021-04-05
  • 2021-09-11
  • 2022-01-22
猜你喜欢
  • 2022-02-02
  • 2021-08-18
  • 2021-09-30
  • 2021-08-27
  • 2021-09-24
  • 2021-12-15
  • 2021-04-11
相关资源
相似解决方案