• DP与贪心


         拜读《算法导论》至DP和贪心算法处,觉得有必要理一下思路。

         书上对DP介绍了几经典的案例,LCS,矩阵连乘与最优二叉搜索都是很经典的应用。DP是一种从下至上的优化算法,其实对于寻优,至上而下的寻优算法从理论上也是可行的,然后之下而上效率比至上而下大大提高,原因是,当我们采用至上而下的递归式时,实际上做了许多重复的运算,递归树对重复问题的运算结果其实只需运算一次,再次用到时只需读取。本人对DP的理解还不够深刻,但是已经能够体会到DP的精髓在于寻找最优子问题,即将当前问题分解成几个子问题合并的结果,并且能够证明:为了取得当前问题的最优解,其子问题也必须是最优的。贪心算法是一种特殊的DP,理论上DP能够解决贪心能解决的所有问题,但是贪心算法能够确定存在一个选择,做此选择后的结果并不会比做其他选择差,以此保证最优。

        关于DP和贪心的一个比较经典的案例是部分背包问题与0-1背包问题。

        很显然,部分背包问题没有空间浪费的问题,每一次取的物品能够保证(价值/空间)比最大,直到背包填满,理由很简单,因为能够保证选择当前(价值/空间)比最高的物品至少不会比选择(价值/空间)比小的物品更差。0-1背包问题的子问题则不能保证某一个选择比其他更优,只能从其子问题中寻找最优解。所以贪心实质上并不是一种之下而上的算法,只是说他也能够通过DP得到解决。

  • 相关阅读:
    406. 根据身高重建队列 vector 自定义排序
    5552. 到家的最少跳跃次数 BFS
    5602. 将 x 减到 0 的最小操作数 双指针
    Hadoop Container is running beyond memory limits code143
    1122. 数组的相对排序 自定义排序
    328. 奇偶链表 链表
    127. 单词接龙 bfs
    5600. 第 K 条最小指令 组合数学
    5548. 最小体力消耗路径 二分
    1024. 视频拼接 dp
  • 原文地址:https://www.cnblogs.com/biyeqingfeng/p/2245799.html
Copyright © 2020-2023  润新知