我们在解决一个问题时,不能只是尝试单个算法技术,不能单纯依靠灵感,而应该依靠我们对问题结构的认识,思维问题遵循“实际问题——抽象的数学问题——算法设计”的语境你怎么感觉像运筹学?
问题结构和基本算法思想http://www.Sina.com/http://www.Sina.com /
TSP旅行者问题
1925年,一家公司的销售员要走350个城市,一次只走一次,把商品卖给不同城市的人。 他必须知道如何走得最短,才能一次走完所有的城市。 3358 www.Sina.com/: ncitiesv={ 1,2,…n},andadistancematrixd.whereddenotesthedistancebetweencityandj; 3358 www.Sina.com/: theshortesttourthatvisitseachcityexactlyonceandreturnstotheorigincity。
分治策略decomposetheoriginalproblemintosubproblem http://www.Sina.com/:我们在m(s,e )中表示从1开始,经过s,到达e。 例如,{1}m{2},{3}表示从1出发到2点到3点。
整个问题域分为以下几部分:
上式的意思是,通过每条路可能有三种方法。 大概到d21(2到1 ),从1出发,经过三四点到达2。 剩下的两条路就按下去。
其中最小的问题是M({2},3{2}=d12d23=6)
(m )、3 )、4 )为
min{D34m},3},D24 M({3},2 } http://www.Sina.com/http://www.Sina.com /
stratfromaroughcompletesolution,and try to improve it step by step。
但是,这很麻烦,所以不说。方法:
如果x1=1,则边为1的路线已经通过,=0的边没有行走
examp:abcdea,x={ 1,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1 }
现在我们来画决策树的一部分
但是这个方法是NOT EFFICIANT! 效率很低呢
所以,我们交往一种方法,寻求下界,也就是说我做这些旅行最少要花多少钱?
选择两个与每个城市tmdmg的最短距离,把这2n个距离加起来再除以2就是我们的最短距离。
(5 6 8 7 9)/2=17.5
也就是说17.5是下界,最低17.5以上的路程。
ifx=1,0,计算结果为(5 6 9 7 9)/2=18
分析:
用左边的方法,对齐右边的决策树,如下所示。