【分治算法和动态规划算法的区别】

目录

分治算法和动态规划算法的比较

相同点

不同点


分治算法和动态规划算法的比较

相同点

二者都要求原问题具有最优子结构性质,都是将原问题分而治之,分解成若干个规模较小(小到很容易解决的程序)的子问题.然后将子问题的解合并,形成原问题的解.

不同点

动态规划算法分治算法
分解的子问题子问题不一定相互独立子问题相互独立
解决问题的顺序自底向上自顶向下
效率方面子问题没有重复计算(效率高)子问题可能重复计算(效率低)
解决方式迭代(需要记住子问题的解)递归法或者递推法
时间复杂度O(m*n)n是需要n步叠代计算局部最优解,每一步叠代需要计算m个子项
空间复杂度高(用空间换时间,提高效率)相对较低
特点①把原问题都分解成一系列的子问题②求解每个问题只求解一次,并将结果保存在一个表中,以后用到时直接存取,不重复计算,节省计算时间①问题的规模缩小到一定的程度就可以容易地解决;②最有子结构性。问题可以分解为若干个规模较小的相同问题;③利用该问题分解出的子问题的解可以合并为该问题的解;④该问题所分解出的各个子问题是相互独立的,即子问 题之间不包含公共的子子问题
适用范围一类优化问题,可以分解成多个相关子问题,子问题的解被重复使用①较大规模的复杂问题可以拆分成较小规模的简单问题②拆分的问题种类相同,可以类比解决
适用条件①具有最优子结构的性质②具有重叠子问题① 原问题与分解的小问题之间具有相同的模式 ② 原问题分解成子问题可以独立求解,子问题之间没有相关性,这一点是分治算法跟动态规划的明显区别。 ③ 具有分解终止条件,即当问题足够小小可以直接求解

 有关分治算法的详细介绍和有关示例(归并排序,快速排序,二分搜索算法)传送门

有关动态规划算法的详细介绍与示例(背包问题)传送门

⛵小结
以上就是针对分治算法和动态规划算法之间区别的的详细介绍,可以使我们更加清楚的去了解这两种算法,以便在我们以后遇到问题的时候去使用相应的方法去解决问题。

如果这篇【文章】有帮助到你,希望可以点个赞👍,创作不易,如果有对【后端技术】、【算法设计与分析】【数据结构】【Linux操作系统】感兴趣的小可爱,也欢迎关注 【LNORA】,我们可以一起进步,每天进步一点点,我将会给你带来巨大的【收获与惊喜】💝💝💝!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LNORA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值