【数据结构与算法】【算法思想】【联系与区别】回溯 贪心 动态规划 分治

4种算法思想比较与联系

如果将贪心,分治,回溯和动态规划四种算法思想分类,那贪心,回溯,动态规划可归为一类,而分治单独可以作为一类,因为它跟其他是三个都不大一样。
因为前三个算法解决问题的模型,都可以抽象成多阶段决策最优解模型,而分治算法解决问题尽管大部分也还是最优解问题,但大部分都不能抽象成多阶段决策模型。
回溯算法,是个万金油。基本上能用动态规划,贪心解决的问题,都可以用回溯算法解决。回溯算法相当于穷举搜索。穷举所有的情况,然后对比得到最优解。不过,回溯算法的时间复杂度非常高,是指数级别的,只能用来解决小规模数据的问题。对于大规模的数据问题,用回溯算法解决的执行效率很低。
动态规划算法,尽管比较回溯算法高效,但是,并不是所有问题都可以用动态规划来解决。能用动态规划解决的问题,需要满足三个特征:最优子结构,无后效性和重复子问题。在重复子问题这一点上,动态规划和分治算法的区分非常明显,分治算法要求分割成子问题,不能有重复字问题,而动态规划正好相反,动态规划之所以高效,就是因为回溯算法实现中存在大量的重复子问题。
贪心算法:实际上是动态规划算法中一种比较特殊情况。他解决问题更加高效,代码实现也更加简洁。不过,他可以解决的问题也更加有限。他能解决的问题需要满足三个条件,最优子结构,无后效性和贪心选择性
其中,最优子结构,无后效性跟动态规划中的无异。“贪心选择性”的意思是,通过局部最优的选择,能产生全局的最优选择。每个阶段,我们都选择当前看起来最优的决策,所以阶段的决策完成之后,最终由这些局部最优解构成全局最优解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值