算法设计大作业—求解Tsps问题.pdf

上传人:修**** 文档编号:75982841 上传时间:2023-03-06 格式:PDF 页数:3 大小:110.17KB
返回 下载 相关 举报
算法设计大作业—求解Tsps问题.pdf_第1页
第1页 / 共3页
算法设计大作业—求解Tsps问题.pdf_第2页
第2页 / 共3页
点击查看更多>>
资源描述

《算法设计大作业—求解Tsps问题.pdf》由会员分享,可在线阅读,更多相关《算法设计大作业—求解Tsps问题.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于贪心算法求解 TSP 问题一、TSP 问题TSP 问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n 个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。TSP 问题是一个组合优化问题。该问题可以被证明具有NPC 计算复杂性。TSP 问题可以分为两类,一类是对称 TSP 问题(Symmetric TSP),另一类是非对称问题(Asymmetric TSP)。所有的 TSP 问题都可

2、以用一个图(Graph)来描述:V=c1,c2,ci,cn,i=1,2,n,是所有城市的集合.ci 表示第 i 个城市,n 为城市的数目;E=(r,s):r,s V是所有城市之间连接的集合;C=crs:r,s V是所有城市之间连接的成本度量(一般为城市之间的距离);如果 crs=csr,那么该 TSP 问题为对称的,否则为非对称的。一个 TSP 问题可以表达为:求解遍历图 G=(V,E,C),所有的节点一次并且回到起始节点,使得连接这些节点的路径成本最低。二、贪心算法贪心算法,又名贪婪算法,是一种常用的求解最优化问题的简单、迅速的算法。贪心算法总是做出在当前看来最好的选择,它所做的每一个在当前

3、状态下某种意义上是最好的选择即贪心选择,并希望通过每次所作的贪心选择导致最终得到问题最优解。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。1、贪心算法的基本思路从问题的某一个初始解触发逐步逼近给定的目标,以尽可能快地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止。大致步骤如下:1)建立数学模型来描述问题;2)把求解的问题分成若干个子问题3)对每一个子问题求解,得到子问题的局部最优解4)把子问题的局部最优解合成原问题的一个解2、贪心算法的实现框架贪心算法没有固定的算法框架,算法设计

4、的关键是贪心策略的选择,而贪心策略适用的前提是:局部最优策略能导致产生全局最优解。从问题的某一初始解出发;while(能朝给定总目标前进一步)利用可行的决策,求出可行解的一个解元素;由所有解元素组合成问题的一个可行解;3、贪心算法存在的问题1)不能保证求得的最后解是最佳的;2)不能用来求最大最小解问题;3)只能在某些特定条件约束的情况下使用,例如贪心策略必须具备无后效性等。4、典型的贪心算法使用领域马踏棋盘、背包、装箱等三、贪心算法求解 TSP 问题贪心策略:在当前节点下遍历所有能到达的下一节点,选择距离最近的节点作为下一节点。基本思路是,从一节点出发遍历所有能到达的下一节点,选择距离最近的节

5、点作为下一节点,然后把当前节点标记已走过,下一节点作为当前节点,重复贪心策略,以此类推直至所有节点都标记为已走节点结束。贪心法的方法是在每个节点中找到与其他节点的最小距离,并且有顺序,比如从第 1 节点出发,到其他节点的最小节点为3,在从第 3 节点到不包含节点 1 的最小节点距离为节点5,以此继续下去,找到路线1-3-5-4-2-1 回路。四、C+算法如下:#include#define N 5void copy(int ANN,int BNN)for(int i=0;iN;i+)for(int j=0;jN;j+)Aij=Bij;int main()int a55=1000,3,1,5,8

6、,3,1000,6,7,9,1,6,1000,4,2,5,7,4,1000,3,8,9,2,3,1000;int ANN;copy(A,a);/int a55=1000,3,1,5,8,3,1000,6,17,9,1,6,1000,4,2,5,17,4,1000,3,8,9,2,3,1000;int b5=0;int n=sizeof(b)/sizeof(int);int i=1,j,k;while(in)int visit=0;int min=1000;for(j=0;jn;j+)ajbi-1=-1;for(j=0;jabi-1j&abi-1j0)visit=j;min=abi-1j;abi-1j=-1;bi+=visit;for(j=0;jn;j+)for(k=0;kn;k+)coutajkt;coutendl;coutendl;cout贪心法路线为:endl;for(i=0;in;i+)coutbi+1t;coutb0+1endl;cout贪心法路线长度为:;int sum=0;for(i=0;in-1;i+)sum=sum+Abibi+1;coutsum+Abn-1b0endl;输出结果:算法分析时间复杂度:对于节点数为n 的 tsp 问题,用贪心算法,时间复杂度为O(n2)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 企业管理

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁