旅⾏商问题+背包问题--经典问题
问题描述:
旅⾏商问题(TravelingSalesmanProblemt的意思 ,TSP)是旅⾏商要到若⼲个城市旅⾏,各城市之间的费⽤是已知的,为了节省费⽤,旅⾏
商决定从所在城市出发,到每个城市旅⾏⼀次后返回初始城市,问他应选择什么样的路线才能使所⾛的总费⽤最短?此问题可描述如
下:设G=(V,E)是⼀个具有边成本cij的有向图,cij的定义如下,对于所有的i和j,cij>0,若不属于E,则cij=∞。令|V|=n,并假设
n>1。G的⼀条周游路线是包含V中每个结点的⼀个有向环,周游路线的成本是此路线上所有边的成本和。
旅⾏商问题(TravelingSalemanProblem,TSP)⼜译为旅⾏推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题,该
问题是在寻求单⼀旅⾏者由起点出发,通过所有给定的需求点之毛笔字字体 后,最后再回到原点的最⼩路径成本。最早的旅⾏商问题的数学规划
是由Dantzig(1959)等⼈提出。
TSP问题在物流中的描述是对应⼀个物流配送公司,欲将n个客户的订货沿最短路线全部送到。如何确定最短路线。
TSP问题最简单的求解⽅法是枚举法。它的解是多维的、多局部极值的、趋于⽆穷⼤的复杂解的空间,搜索空间是n个点的所有排列的
集合,⼤⼩为(n-1)。可以形象地把解空间看成是⼀个⽆穷⼤的丘陵地带,各⼭峰或⼭⾕的⾼度即是问题的极值。求解TSP,则是在
此不能穷尽的丘陵地带中攀登以达到⼭顶或⾕底的过程。
问题分析
旅⾏商问题要从图G的所有周游路线中求取最⼩成本的周游路线,⽽从初始点出发的周游路线⼀共有(n-1)!条,即等于除初始结点外的
n-1个结点的排列数,因此旅⾏商问题是⼀个排列问题。排列问题⽐⼦集合的选择问题通常要难于求解得多,这是因为n个物体有n!种
排列。通过枚举(n-1)!条周游路线,从中找出⼀条具有最⼩成本的周游路线的算法,其计算时间显然为O(n!)。
旅⾏商问题的解法
旅⾏推销员的问题,我们称之为巡⾏(Tour),此种问题属于NP-Complete的问题,所以旅⾏商问题⼤多集中在启发式解法。
Bodin(1983)等⼈将旅⾏推销员问题的启发式解法分成三种:
1、途程建构法(TourConstructionProcedures)
从距离矩阵中产⽣⼀个近似最佳解的途径,有以下⼏种解法:
1)最近邻点法(NearestNeighborProcedure):⼀开始以寻找离保险种类 场站最近的需求点为起始路线的第⼀个顾客,此后寻找离最后加⼊
路线的顾客最近的需求点,直到最后。
2)节省法(ClarkandWrightSaving):以服务每⼀个节点为起始解,根据三⾓不等式两边之和⼤于第三边之性质,其起始状况为每
服务⼀个顾客后便回场站,⽽后计算路线间合并节省量,将节省量以降序排序⽽依次合并路线,直到最后。
3)插⼊法(Inrtionprocedures):如最近插⼊法、最省插⼊法、随意插⼊法、最远插⼊法、最⼤⾓度插⼊法等。
2、途程改善法(TourImprovementProcedure)
先给定⼀个可⾏途程,然后进⾏改善,⼀直到不能改善为⽌。有以下⼏种解法:
1)K-Opt(2/3Opt):把尚未加⼊路径的K条节线暂时取代⽬前路径中K条节线,并计算其成本(或距离),如果成本降低(距离减
少),则取代之,直到⽆法改善为⽌,K通常为2或3。
2)Or-Opt:在相同路径上相邻的需求点,将之和本⾝或其它路径交换且仍保持路径⽅向性,并计算其成本(或距离),如果成本降低
(距离减少),则取代之,直到⽆法改善为⽌。
3、合成启发法(CompositeProcedure)
先由途程建构法产⽣起始途程,然后再使⽤关于读书的诗句 途程改善法去寻求最佳解,⼜称为两段解法(twophamethod)。有以下⼏种解法:
1)起始解求解+2-Opt:以途程建构法建⽴⼀个起始的解,再⽤2-Opt的⽅式改善途程,直到不能改善为⽌小孩吐奶怎么办 。
2)起始解求解+3-Opt:以途程建构法建⽴⼀个起始的解,再⽤3-Opt的⽅式改善途程,直到不能改善为⽌。
背包问题
背包问题(Knapsackproblem)是⼀种组合优化的NP完全问题。问题可以描述为:给定⼀组物品,每种物品都有⾃⼰的重量和价格,在
限定的总重量内,我们如何选择,才能使得物品的总价格最⾼。问题的名称来源于如何选择最合适的物品放置于给定背包中。
也可以将背包问题描述为决定性问题,即在总重量不超过W的前提下,总价值是否能达到V?
题⽬
有N件物品和⼀个容量为V的背包。第i件物品的费⽤是c,价值是w。求解将哪些物品装⼊背包可使这些物品的费⽤总和不超过背包容
量,且价值总和最⼤。
基本思路
这是最基础的背包问题,特点是:每种物品仅有⼀件,可以选择放或不放。
⽤⼦问题定义状态:即f[v进击的巨人大结局详解 ]表⽰前i件物品恰放⼊⼀个容量为v的背包可以获得的最⼤价值。则其状态转移⽅程便是:f[v]=max{f[v],f[v-
c]+w}。
这个⽅程⾮常重要,基本上所有跟背包相关的问题的⽅程都是由它衍⽣出来的。所以有必要将它详细解释⼀下:“将前i件物品放⼊容量
为v的背包中”这个⼦问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为⼀个只牵扯前i-1件物品的问题。如果不放第i件
物品,那么问题就转化为“前i-1件物品放⼊容量为v的背包中”;如果放第i件物品,那么问题就转化为“前i-1件物品放⼊剩下的容量为v-c
的背包中”,此时能获得的最⼤价值就是f[v-c]再加上通过放⼊第i件物品获得的价值w。
本文发布于:2023-03-17 02:23:05,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/53de6af40a792a438efdb35c06978ad3.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:旅行背包.doc
本文 PDF 下载地址:旅行背包.pdf
留言与评论(共有 0 条评论) |