几种算法的异同

1. 分治法和动态规划的异同:

共同点:

​ 将待求解的问题分解成若干子问题,先求解子问题,然后再从这些子问题的解得到原问题的解。

不同点:

​ 1)适合于用动态规划法求解的问题,分解得到的各子问题往往不是相互独立的;而分治法中子问题相互 独立。

​ 2)动态规划法用表保存已求解过的子问题的解,再次碰到同样的子问题时不必重新求解,而只需查询答 案,故可获得多项式级时间复杂度,效率较高;而分治法中对于每次出现的子问题均求解,导致同样的子 问题被反复求解,故产生指数增长的时间复杂度,效率较低。

2. 动态规划和贪心法的异同:

​ 共同点:

​ 都要求问题具有最优子结构

​ 不同点:

​ 1)求解方式不同

​ 动态规划:自底向上

​ 贪心法:自底向下

​ 2)对子问题的依赖不同

​ 动态规划:依赖子问题的解,所以应使各子问题最优,才能保证整体最优

​ 贪心法:依赖于过去所作过的选择,但决不依赖于将来的选择,也不依赖于子问题的解

3. 分枝限界法和回溯法的异同:

​ 相同点:都是在状态空间树上搜索问题解的算法;都是活结点表实现,都可以用约束函数剪去不含答案结点的 分枝,都可用限界函数剪去不含最优解的分枝

​ 不同点:

  1. 求解目标不同:回溯法是找出解空间树中满足约束条件的所有可行解;而分支限界法则是找出满足约束条件的一个可行解,或某种意义下的最优解
  2. 搜索方式不同:回溯法以深度优先的方式搜索解空间树,而分枝限界法则以广度优先方式搜索解空间树
  3. 对当前扩展结点的扩展方式不同:回溯法中每个活结点可能多次成为当前扩展结点,纵深方向扩展其一个孩子,然后再回溯扩展其他孩子;分支限界法中每一个活结点只有一次机会成为扩展结点,一次产生所有孩子结点,自身成为死结点,之后无需在返回该结点处
posted @   -费费  阅读(946)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示