状态压缩类动态规划:
一、问题简介:
1.状压dp:以集合信息为状态(下面会解释)
2.一般dp只需要提取出两三个信息对状态进行转移,但是如果多个信息对状态有影响,我们不能开多维数组(可能会爆空间),这时候考虑状压dp
3.状压指对多个状态进行压缩
二、问题引入:(旅行商问题 TSP)
一个n个点的带权完全图,求权和最小的经过每个点恰好一次的封闭回路。
我们只要知道哪些点已经被遍历过,遍历的具体顺序对于最后结果无影响,设当前位置为i,遍历过的点的集合为s,转移方程为:
f[i][s]=min(f[j][s-i]+dist(i,j))
状压dp:以一个集合内的元素信息为状态且状态总数为指数级别的dp
特点:
1.数据规模某一维或某几维非常小
2.最优性原理和无后效性
三、状压dp:
(1)前置知识:
1.判断第i位是否为0 : (s&(1<<i))==0
2.将第i位设置成1: (s|(1<<i))
3.将第i位设置成0: (s&~(1<<i))
(2)典型例题:
略~~