稍微说说动态规划和贪心

    最近在做USACO的training,又碰到了greedy algorithm的训练章节。回想起来大学时光学习dynamic programming的时候,一直搞不清,后来看Introduction to Algorithm,突然顿悟,那种感觉真的是很爽,我觉得一直学不明白,有一天突然顿悟的感觉,大家都应该去体验一下,真的很爽。

    greedy的思想太简单了,每次都找最优的,也就是每次的结果只有一个点咯。不过应用greedy algorithm的时候需要特别注意条件,局部最优即全局最优。这是多于dynamic programming的一点。

    然后dynamic programming吧,它和greedy的不同是什么?没有局部最后即全局最优的这种优势,但这次的状态是基于前一状态的,那么前一状态是什么呢?不好意思我不知道。不知道怎么办,列出前一状态的所有状态,前一状态有哪些?还是不知道,那怎么办呢,从第一个阶段的状态开始记录,然后基于第一状态算出第二状态的最优,那么全局最优一定存在于这些局部最优的一个路线中。所以dp每次记录的是一系列状态,而不是像greedy只记录当前的最优解这一个状态。

    所以才有了所谓的打表,理解了这一个过程,就理解了dp后续所有的优化。

你可能感兴趣的:(动态规划)