您的位置:首页 > 其它

关于动态规划的一些经验与总结

2016-10-26 15:09 288 查看
    动态规划是一个考验技巧性的算法,对于动态规划算法,浅谈几点经验。

    首先是设计状态,我们肯定是要有一个一维或多维的状态的,那么如何设计它们的意义呢,首先我们可以分析出题目中的一些重要的量,比如当前时间,选了几个,考虑到了哪里,对于这些状态我们是要以一个值来表示这些状态的最优情况,比如f[i][j][k]..=P,i,j,k表示状态,P表示那个值,我们i,j,k,P都是这些重要的量,我们应该先把这些重要的量列出,然后感觉一下如何设计状态容易转移,一般来说设计了一个好的状态剩下的事情都比较好办。

    如果这个状态不是太好,我们可以考虑优化转移,我们可以再开一个别的数组维护我们转移的信息,比如说维护最小值,或者用高级数据结构维护,或者发现状态的一些性质,这样就能更快的转移。

    其实动态规划也是考虑了所有的状态,如果说你设计的DP没有将所有的状态考虑到,那么一定是错误的,动态规划的实质就是枚举了所有的状态,然后保留最大值。

    个人认为动态规划就是一个分类,动态规划的状态就是分类的标准,动态规划在每一中类别中都取得最优解,另外对于每个基本元素来说,一般都有几个状态,比如说背包问题中每个物品的选与不选,或者是这个元素放在哪个位置等等等等,考虑到每个元素的状态也有助于我们设计整体的状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: