邮递员问题的求解实例.doc_第1页
邮递员问题的求解实例.doc_第2页
邮递员问题的求解实例.doc_第3页
邮递员问题的求解实例.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

_中国邮递员问题的求解实例前面已经讲过,对于欧拉图,可以直接用Fleury算法找出一条欧拉巡回路线;对于半欧拉图,可以先求出奇点u和v之间的最短路径P,令,则G *为欧拉图,然后用Fleury算法来确定一个G *的欧拉巡回,它就是G的最优巡回。当G有2n个奇点(n1),可以用Edmonds算法解决,步骤如下:(1) 用Floyd算法求出所有奇点之间的最短路径和距离矩阵。(2) 用匈牙利法或0-1规划法求出所有奇点之间的最佳配对。(3) 在原图上添加最佳配对所包含的两两顶点之间的最短路得到欧拉图G *。(4) 用Fleury算法确定一个G *的欧拉巡回,这就是G的最优巡回。以上步骤的关键是找出2n个奇点的最佳配对,举例如下。例 图3是某区街道示意图,各边的长度数据如下表所示。现在需要对每条街道都巡视到(至少走一次),求一条总路程最短的巡回路线。序号顶点顶点边长序号顶点顶点边长序号顶点顶点边长序号顶点顶点边长1121026171117163332324432493031342214402188928934232819850313264832310261981524535232210851313625342739820923396362221414523332486531145021121330637254281053333825264121812212182723825241095432372357452542313191993924291845535361808109289241617199402132432563540180910112352517252354127263265736376481010161632615143604227313065837384681156414271522217432630271593741184125131482814212194428294146042411063136203822919203444528332356140417921467253301918332462934181624039198157825231182614447343341816714219322021308483039432解:该图有42个顶点和62条边,有26个顶点为奇点,因而不是欧拉图,为了寻找最优巡回,需要先求26个奇点的最佳配对。先用Floyd算法求出所有42个顶点之间的最短路距离和路径。程序如下:E=1 2 10261 4 402 注:每一行代表一条边(两个顶点和边长),此处省略59行40 39 198;for i=1:42 for j=1:42 if j=i a(i,j)=0; else a(i,j)=inf; end endendfor k=1:62 i=E(k,1);j=E(k,2);a(i,j)=E(k,3);a(j,i)=E(k,3);end图3 某区街道示意图D,R=floyd(a);然后求26个奇点的最优配对,这可以用Lingo求解,编写程序如下:MODEL:SETS:dot/2,4,5,6,8,9,10,11,12,13,14,15,17,18,19,20,22,24,25,26,28,29,30,36,40,41/; LINKS(dot,dot)| &2 # GT # &1:C,X; ENDSETS DATA: C=1319 1065 651 650 939 1228 1463 1500 1213 617 895 1590 1709 1377 1033 1112 1652 1761 1853 1418 1832 2124 2151 2479 1687254 668 1173 1462 1751 198 181 402 1140 1418 2113 453 601 945 1635 2175 2284 597 1941 2355 868 1463 1498 2104414 919 1208 1497 1732 435 148 886 1164 1859 679 347 691 1381 1921 2030 823 1687 2101 1094 1689 1724 1850505 794 1083 1318 849 562 472 750 1445 1058 726 382 967 1507 1616 1202 1273 1687 1473 2005 2103 1541289 578 813 1354 1067 471 245 940 1563 1231 887 462 1002 1111 1707 768 1182 1978 2005 2333 1541289 524 1643 1356 760 534 651 1852 1520 1176 504 828 886 1996 594 1008 2267 2197 2525 1733235 1932 1645 1049 823 362 2141 1809 1465 793 706 597 2285 883 890 2556 2486 2814 20222167 1880 1284 1058 163 2376 2044 1700 1028 507 398 2520 1105 691 2766 2658 2986 2194306 1321 1599 2294 272 505 849 1571 2111 2220 416 1877 2291 687 1282 1317 20081034 1312 2007 531 199 543 1265 1805 1914 675 1571 1985 946 1541 1576 1702360 1411 1203 871 527 577 1117 1226 1347 883 1297 1618 1534 1862 10701101 1563 1231 887 217 757 866 1707 523 937 1978 1894 2222 14302282 1950 1606 884 344 235 2426 942 528 2603 2495 2823 2031332 676 1398 1938 2047 144 1704 2118 415 1010 1045 1824344 1066 1606 1715 476 1372 1786 747 1342 1377 1503722 1262 1371 820 1028 1442 1091 1623 1721 1159540 649 1542 306 720 1813 1729 2057 1265109 2082 598 184 2259 2151 2479 16872191 707 293 2368 2260 2588 17961848 2262 271 866 901 1680414 1711 1603 1931 11392075 1967 2295 1503595 630 1409360 832792;图4 26个奇点的最优配对 ENDDATA MIN=SUM(LINKS:C*X); FOR(LINKS:BIN(X); FOR(dot(I):SUM(LINKS(J,K)| J #EQ# I #OR# K #EQ# I:X(J,K)=1); END运行以上程序,得到最优配对结果为:2与6、4与12、5与13、8与9、10与11、14与15、17与25、18与26、19与20、22与28、24与29、30与36、40与41。在原图62条边的基础上增加13条边,得到如图4所示的图形,它有42个顶点和75条边,是欧拉图。对该图运行运行eu,cEu=arEuler(E),其中输入参数E是75行2列矩阵(代表75条边),得到一条欧拉巡回如图5所示,总里程为25983。图5 一条欧拉巡回该巡回路线所经过的顶点序列为:12311109872(经过7)6541

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论