动态规划---状态压缩(即集合上的动态规划)
2012-05-02 16:04
267 查看
参考博客:http://godfrey90.iteye.com/blog/725562
如果说状态压缩是数据结构的话,动态规划就是算法。
例如:n*n的棋盘,放n个车,要求不相互攻击,条件设置比较简单:只有在同行或同列才会攻击。
解:状态为到第i行后各列的放置情况,设第i行的状态为:10011,则第i-1行的状态可以为:00011、10010、10001,所以易知状态转移为:d[i][a]=sum(s[i-1][b])其中a、b之间存在某种联系,本体中是a-b后,只存在一个1。最后d
[1....1]即为最终结果。
poj
3254---Corn Fields
POJ 2411 Mondriaan's Dream(DP---状态压缩)
一、首先谈谈什么是状态压缩?
状态压缩就是将一个阶段或(集合)的状态使用二进制0、1进行表示,这类问题中,状态只存在两种:有或无。通过二进制来达到节省存储空间和查找效率的作用。二、什么是动态规划?
动态规划是通过定义某一个状态,这个状态可以通过性质相同的另一个(或多个)状态推导出来,即存在最优子问题。另外,不同问题的子问题中可能存在同样的子问题,这就是重叠子问题。最优子问题、重叠子问题是动态规划的两大特性,如果存在这两种特性,则就可以选择使用动态规划来解题。如果说状态压缩是数据结构的话,动态规划就是算法。
三、什么类型的题适合用状态压缩动态规划去做?
这类问题一般会设计到棋盘或者网格的题,第i行状态可以通过第i-1行状态递推得到。例如:n*n的棋盘,放n个车,要求不相互攻击,条件设置比较简单:只有在同行或同列才会攻击。
解:状态为到第i行后各列的放置情况,设第i行的状态为:10011,则第i-1行的状态可以为:00011、10010、10001,所以易知状态转移为:d[i][a]=sum(s[i-1][b])其中a、b之间存在某种联系,本体中是a-b后,只存在一个1。最后d
[1....1]即为最终结果。
四、推荐题型:
集合上的动态规划---最优配对问题(推荐:*****)poj
3254---Corn Fields
POJ 2411 Mondriaan's Dream(DP---状态压缩)
相关文章推荐
- hdu1074(集合上的动态规划 状态压缩)
- BZOJ 1087 浅谈状态压缩动态规划的转移
- [ZOJ 3662] Math Magic (动态规划+状态压缩)
- 状态压缩动态规划 -- 骨牌
- 状态压缩动态规划 -- 炮兵阵地
- Poj-1185 & Nyoj-81 炮兵阵地 (状态压缩动态规划经典题
- 【集合DP】复杂状态的动态规划
- POJ 1185 炮兵阵地(动态规划+状态压缩)
- 男人8题之Tony's TourPKU1739基于连通性状态压缩的动态规划
- 100道动态规划——27 POJ 1185 炮兵阵地 状态压缩,预处理,滚动数组
- 状态压缩的动态规划
- 状态压缩动态规划 -- 棋盘问题 POJ 1321
- 基于连通性状态压缩的动态规划--【插头DP】模板超级详细解释
- [caioj]1493: 基于连通性状态压缩的动态规划问题:Plan
- uva 11795 Mega Man's Mission(动态规划-状态压缩DP)
- 【树型状态压缩动态规划】【NOI2006】网络收费
- 炮兵阵地(poj1185,状态压缩的动态规划)
- 100道动态规划——25 UVA 1204 Fun Game 状态压缩 圆圈的处理 (100道完成了1/4啦)
- UVa 11795 Mega Man's Mission(动态规划-状态压缩DP)
- 动态规划之状态压缩