计算机算法设计与分析-概念复习
计算机算法设计与分析-概念复习
最优性原理
无论过程的初始状态和初始决策是什么,其余决策都必须相对于初始决策所产生的状态构成一个最优决策子序列。
如果整个序列是最优决策序列,则该序列中的任何一段子序列都将是该子序列所代表子问题的最优决策子序列。(全局最优->局部最优)
分治和动态规划的区别
- 共同点:都是将大问题->小问题
- 不同点:
- 分治中,大小问题性质都是类似的,只是规模不同。
- 动态规划中,大小问题性质无关,是分阶段的。
贪心和动态规划的区别
- 局部最优->全局最优
- 全局最优->局部最优
概率算法
- 数值概率算法:常用于数值问题的求解,往往得到问题的近似解。(算圆周率面积)
- 舍伍德型概率算法:改变输入引入随机性,总是求得正确解
- 拉斯维加斯型概率算法:都是正确解,可能得不到解
- 蒙特卡罗型概率算法:解不一定正确,总能得到解
计算复杂性
- 可以在多项式时间内求解的问题称为易解的,而不能在多项式时间内求解的问题称为难解的。
- P类问题:多项式类型,是一类能够用(确定性的)算法在多项式的时间内求解的判定问题。
- 只有判定问题才属于P
- 不可判定问题:某些判定问题是不能用任何算法求解的,则称这种判定问题为不可判定问题。否则就称作可判定问题。(例如:停机问题)
- 不确定算法:对于判定问题,猜测一个解,并且可以判断这个解是否是正确的解的算法。
- 如果一个不确定算法在验证阶段的时间效率是多项式级的,我们说它是不确定多项式类型的。
- NP类问题:可以用不确定多项式算法求解的判定问题。
- 大多数判定问题都是属于NP类的。
- 所有的P类问题都是NP问题
- 停机问题是不属于NP的判定问题
- NP完全(complete)问题:
- 属于NP类型
- NP中的任何问题都能够在多项式时间内化简为该问题
- NP完全性的定义意味着:即使我们仅仅得到了一个NP完全问题的多项式确定算法,也说明所有的NP问题都能够用一个确定算法在多项式的时间内解出,即P=NP。
- NP难(hard)问题:
- NP中的任何问题都能够在多项式时间内化简为该问题
- 不一定是NP问题,因此NPH比NPC的范围广
证明哈夫曼树
最优性原理的相关证明
多段图问题
0/1背包问题
可靠性设计
货郎担问题(旅行商问题)
流水线调度
一系列问题的算法思想
动态规划求解货郎担问题
分支限界求解15-迷问题
分支限界求解布线问题
分支限界求解货郎担问题
致谢
[1] https://blog.csdn.net/T_T233333333/article/details/108371962
[2] 以上部分内容来自于中国科学院大学马丙鹏老师计算机算法设计与分析课程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现