- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
测系大修状态压缩DP入门
经典入门
状态压缩动态规划
状态压缩动态规划
状态压缩动态规划:
动态规划的状态有时候比较恶心,不容易表示出来,需要用一些编码技术,把状态压缩的用简单的方式表示出来。
典型方式:当需要表示一个集合有哪些元素时,往往利用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[i][j] = 0;否则无穷大。非单点集:
状态存在 dp[i][j] = min(dp[k][s] + w[s][j])
k表示i集合中去掉了j点的集合,s遍历集合k中的点并且dp[k][s]状态存在, 点s到点j有边存在,w[s][j]表示边的权值。
状态不存在 dp[i][j]为无穷大。
TSP
最后的结果是:
min( dp[( 1n ) – 1][j] ) ( 0 = j n );
技巧:利用2进制,使得一个整数表示一个点集,这样集合的操作可以用位运算来实现。例如从集合i中去掉点j:
k = i ( ~( 1 j ) ) 或者
k = i - ( 1 j )
遍历点集i中都包含哪些点
for(j=0;(1j)=i;j++)
{
if(((1j)i)!=0)
点集i就包含点j
}
把点j加入点集i
i=(i|(1j));
您可能关注的文档
- 油压力调节器.doc
- 学(二).ppt
- 乐曲目表.doc
- 效应与生产平滑模型有效性问题.pdf
- 的热辐射特性.ppt
- 理三轮复习-基础知识查漏.doc
- —新课标人教版广东省专用第十二单元.ppt
- 理 闭合电路欧姆定律.ppt
- 水资源7.ppt
- 理治疗.docx
- 五位一体教案教学教案设计.docx
- 思修与法基-教学教案分享.pptx
- 大学军事之《中国国防》题库分享.docx
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章-中国特色社会主义理论体系的形成发展.pdf
- 思修与法基 教学全案分享.docx
- 大学军事之《军事思想》题库分享.docx
- 《经济思想史》全套课件-国家级精品课程教案课件讲义分享.pdf
- 厦门大学国际金融全套资料(国家级精品课程)--全套课件.pdf
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章-中国特色社会主义理论体系的形成发展.docx
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章中国特色社会主义理论体系的形成发展分享.pdf
文档评论(0)