码迷,mamicode.com
首页 > 其他好文 > 详细

07_旅行商问题(TSP问题,货郎担问题,经典NPC难题)

时间:2015-04-01 21:32:58      阅读:421      评论:0      收藏:0      [点我收藏+]

标签:

问题来源:刘汝佳《算法竞赛入门经典--训练指南》 P61 问题9:

问题描述:有n(n<=15)个城市,两两之间均有道路直接相连,给出每两个城市i和j之间的道路长度L[i][j],求一条经过每个城市一次且仅一次,最后回到起点的路线,使得经过的道路总长度最短(城市编号为0~n-1)。

分析: 1.因为最后走的路线为一个环,可以设城市0为起点城市。

    2.将每个城市看作二进制的一个位(1代表有,0代表没有),则数k可以表示一些城市的集合(例如k=13,二进制表示为1101,表示城市0,2,3的集合),我们可以求得k<=2^15-1,令aim=2^15-1;

    3.dp[k][j]表示经过了k集合中的所有城市并且以j城市为终点的路径的最小值。则dp[k][j] = Min{dp[k][j],dp[k-i][j]+dis[i][j] | (0<=i<=n-1 && i属于集合k)};(其中k-i表示集合k中去掉数i后的集合(所以i应该是集合k中的元素)),

    4.

    5.

例题链接:http://acm.fzu.edu.cn/problem.php?pid=2186

例题: fzu 2186

07_旅行商问题(TSP问题,货郎担问题,经典NPC难题)

标签:

原文地址:http://www.cnblogs.com/ruo-yu/p/4385291.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!