博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划---->货郎担问题
阅读量:5700 次
发布时间:2019-06-17

本文共 1125 字,大约阅读时间需要 3 分钟。

货郎担问题

问题描述

货郎担问题也叫旅行商问题,即TSP问题(Traveling Salesman Problem),是数学领域中著名问题之一。

其一般提法为:有n个城市,用1,2,…,n表示,城i,j之间的距离为dij,有一个货郎从城1出发到其他城市一次且仅一次,最后回到城市1,怎样选择行走路线使总路程最短? 

旅行商问题的提法为:假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路经的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。

 

假设周游路线是开始于结点1并终止于结点1 的一条简单路径。每一条周游路线都由一条边〈1,k〉和一条由结点k 到结点1 的路径所组成, 其中k∈V-{1} ; 而这条由结点k 到结点1 的路径通过V-{1 ,k}的每个结点各一次。容易看出, 如果这条周游路线是最优的, 那么这条由k 到1 的路径必定是通过V-{1, k}中所有结点的由k到1的最短路径, 因此最优性原理成立。设g(i,S)是由结点i开始, 通过S中的所有结点, 在结点1终止的一条最短路径长度。g(1,V-{1}) 是一条最优的周游路线长度。于是, 可以得出

g(1,V-{1}) = min{c1k + g( k,V-{1,k})}   2≤k≤ n

一般化可得g(i,S) = min{ cij+ g(j,S-{j}) }

2、例子

 

g(2 ,空) = c21 =  5

g(3,空) = c31 =  6

g(4,空) = c41 =  8

由式g( i, S) = min{

cij + g( j, S - {j}) } 得

g(2,{3} ) = c23  + g(3,空) = 15

g(2,{4} ) = 18

g(3,{2} ) = 18

g(3,{4} ) = 20

g(4,{2} ) = 13

g(4,{3} ) = 15

接着,计算在|  S| = 2 且i≠1,1|  S,i| S 情况下的g(  i,S) :

g(2,{3,4} ) =  min{c23 + g( 3,{4}), c24  + g(4,{3} )} = 25

g(3,{2,4} ) =  min{c32 + g( 2,{4}), c34  + g(4,{2} )} = 25

g(4,{2,3} ) =  min{c42 + g( 2,{3}), c43  + g(3,{2} )} = 23

最后,得

g(1,{2,3,4} ) =  min{c12 + g( 2,{3,4}), c13  + g(3,{2,4} ), c14 + g( 4,{2,3}) }= min{35,40,43} = 35

你可能感兴趣的文章
mysql 行转列列转行
查看>>
《设计模式系列》---桥接模式
查看>>
[Unity3d]Shader 着色器 学习前了解知识
查看>>
Linux中文件颜色所代表的属性和颜色
查看>>
Redrain duilib中事件委托存在的问题
查看>>
43、我的C#学习笔记9
查看>>
linux ulimit 命令
查看>>
网站建表实践及优化
查看>>
字符串的简单操作
查看>>
[转]面向接口编程详解(三)——模式研究
查看>>
C#新功能--命名参数与可选参数
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(22)-权限管理系统-模块导航制作...
查看>>
strtok和strtok_r
查看>>
FineReport实现java报表报表展示的效果图
查看>>
维辰超市:借助云商城成功转型新零售
查看>>
[Linux]Web性能测试http_load
查看>>
Airbnb 宣布放弃使用 React Native,回归使用原生技术
查看>>
中外RFID技术差异何在?
查看>>
HDU Problem 1231 最大连续子序列【dp】
查看>>
codeforces B. The Meeting Place Cannot Be Changed【二分】
查看>>