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

复习目录

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

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值