- 4
- 0
- 约1.02千字
- 约 8页
- 2016-10-31 发布于湖北
- 举报
经典入门 状态压缩动态规划 * + 状态压缩动态规划 状态压缩动态规划: 动态规划的状态有时候比较恶心,不容易表示出来,需要用一些编码技术,把状态压缩的用简单的方式表示出来。 典型方式:当需要表示一个集合有哪些元素时,往往利用2进制用一个整数表示。 * 经典问题:TSP 一个n个点的带权的有向图,求一条路径,使得这条路经过每个点恰好一次,并且路径上边的权值和最小(或者最大)。 或者求一条具有这样性质的回路,这是经典的TSP问题。 n = 16 (重要条件,状态压缩的标志) 今天讲第一个问题的状态压缩动态规划的解法,第2个问题大同小异。 * TSP 如何表示一个点集: 由于只有16个点,所以我们用一个整数表示一个点集: 例如: 5 = 0000000000000101;(2进制表示) 它的第0位和第2位是1,就表示这个点集里有2个点,分别是点0和点2。 31 = 0000000000011111; (2进制表示) 表示这个点集里有5个点,分别是0,1,2,4,5; * TSP 所以一个整数i就表示了一个点集; 整数i可以表示一个点集,也可以表示是第i个点。 状态表示:dp[i][j]表示经过点集i中的点恰好一次,不经过其它的点,并且以j点为终点的路径,权值和的最小值,如果这个状态不存在,就是无穷大。 * TSP 状态转移: 单点集:状态存在dp[
原创力文档

文档评论(0)