- 浏览: 196455 次
- 性别:
- 来自: 北京
最新评论
-
zeroliu:
测试评论。。。
UMP编程比赛:封装TCP连接池和DAL客户端接口库。(7.27更新) -
zeroliu:
新的代码,有一个平滑压缩的处理,还有变灰的处理。
impor ...
Java小程序:批量图片处理(缩小和添加Logo) -
小冰糕:
kenter1643 写道前几天我也在弄串口通讯,也是得到空的 ...
学习笔记:Java串口编程(短信Modem). -
salever:
不错,
学习笔记:Java串口编程(短信Modem). -
zeroliu:
我发现本帖,在blog栏目已经找不到了,搜索也不行,不知道什么 ...
反编译android应用,降低权限反吸费和隐藏广告,重新打包和签名【原创】
【虎.无名】看到一个帖子 【迷题:走遍全国各省会的最短路线问题 】http://www.iteye.com/topic/214846 想起以前上MSE时候做的一个《算法》的课程设计。数据如下:
城市 北京 上海 天津 石家庄 太原 呼和浩特 沈阳 长春 哈尔滨 济南 南京 合肥 杭州 南昌 福州 台北 郑州 武汉 长沙 广州 海口 南宁 西安 银川 兰州 西宁 乌鲁木齐 成都 贵阳 昆明 拉萨
北京 0 1078 119 263 398 401 634 866 1061 367 905 902 1135 1255 1568 1729 626 1052 1343 1893 2286 2050 909 879 1178 1321 2399 1511 1732 2085 2558
上海 1078 0 963 989 1096 1381 1189 1451 1679 735 269 399 160 601 606 686 824 685 881 1210 1666 1599 1218 1597 1717 1908 3265 1655 1522 1956 2909
天津 119 963 0 262 426 504 605 860 1068 271 798 806 1025 1169 1465 1620 582 981 1277 1819 2223 2001 913 947 1228 1381 2502 1518 1702 2071 2604
石家庄 263 989 262 0 171 394 867 1117 1318 266 769 730 1010 1049 1403 1590 376 823 1104 1662 2042 1794 654 720 977 1138 2336 1258 1469 1823 2347
太原 398 1096 426 171 0 341 1025 1264 1457 412 854 790 1095 1065 1452 1655 359 816 1074 1637 1991 1720 516 555 807 968 2192 1114 1368 1700 2179
呼和浩特 401 1381 504 394 341 0 987 1171 1325 650 1161 1114 1403 1405 1783 1978 700 1157 1411 1973 2315 2029 770 535 870 981 1999 1320 1649 1942 2237
沈阳 634 1189 605 867 1025 987 0 281 512 790 1155 1227 1314 1607 1785 1870 1158 1484 1782 2280 2714 2535 1518 1504 1812 1950 2909 2123 2278 2662 3192
长春 866 1451 860 1117 1264 1171 281 0 232 1065 1432 1507 1582 1887 2053 2124 1428 1765 2063 2561 2995 2815 1770 1703 2026 2151 2998 2375 2551 2929 3402
哈尔滨 1061 1679 1068 1318 1457 1325 512 232 0 1287 1664 1738 1813 2118 2282 2349 1645 1993 2291 2792 3225 3041 1970 1860 2193 2306 3057 2572 2768 3139 3561
济南 367 735 271 266 412 650 790 1065 1287 0 540 537 775 899 1201 1367 374 720 1019 1553 1964 1757 780 964 1185 1359 2599 1370 1488 1878 2528
南京 905 269 798 769 854 1161 1155 1432 1664 540 0 141 242 467 668 827 560 456 704 1136 1581 1459 949 1335 1448 1640 3004 1404 1320 1750 2653
合肥 902 399 806 730 790 1114 1227 1507 1738 537 141 0 328 380 674 866 463 319 584 1054 1490 1344 824 1237 1328 1520 2902 1264 1185 1614 2514
杭州 1135 160 1025 1010 1095 1403 1314 1582 1813 775 242 328 0 447 472 596 787 566 733 1051 1506 1441 1147 1564 1653 1845 3229 1543 1378 1812 2799
南昌 1255 601 1169 1049 1065 1405 1607 1887 2118 899 467 380 447 0 441 687 706 270 291 674 1115 1004 908 1404 1401 1589 3020 1166 938 1370 2414
福州 1568 606 1465 1403 1452 1783 1785 2053 2282 1201 668 674 472 441 0 252 1103 705 666 697 1137 1171 1348 1836 1842 2030 3461 1573 1256 1666 2800
台北 1729 686 1620 1590 1655 1978 1870 2124 2349 1367 827 866 596 687 252 0 1317 945 916 869 1276 1366 1589 2067 2087 2276 3704 1824 1493 1892 3046
郑州 626 824 582 376 359 700 1158 1428 1645 374 560 463 787 706 1103 1317 0 459 730 1291 1666 1424 437 777 906 1094 2444 1003 1123 1505 2194
武汉 1052 685 981 823 816 1157 1484 1765 1993 720 456 319 566 270 705 945 459 0 299 842 1243 1054 644 1134 1144 1334 2758 976 867 1295 2233
长沙 1343 881 1277 1104 1074 1411 1782 2063 2291 1019 704 584 733 291 666 916 730 299 0 563 946 762 778 1298 1229 1408 2848 908 647 1080 2141
广州 1893 1210 1819 1662 1637 1973 2280 2561 2792 1553 1136 1054 1051 674 697 869 1291 842 563 0 455 505 1306 1825 1698 1858 3278 1235 761 1087 2324
海口 2286 1666 2223 2042 1991 2315 2714 2995 3225 1964 1581 1490 1506 1115 1137 1276 1666 1243 946 455 0 373 1587 2082 1889 2021 3378 1339 816 959 2220
南宁 2050 1599 2001 1794 1720 2029 2535 2815 3041 1757 1459 1344 1441 1004 1171 1366 1424 1054 762 505 373 0 1274 1748 1533 1657 3005 971 449 619 1883
西安 909 1218 913 654 516 770 1518 1770 1970 780 949 824 1147 908 1348 1589 437 644 778 1306 1587 1274 0 521 507 699 2114 604 880 1187 1758
银川 879 1597 947 720 555 535 1504 1703 1860 964 1335 1237 1564 1404 1836 2067 777 1134 1298 1825 2082 1748 521 0 346 448 1668 885 1318 1526 1701
兰州 1178 1717 1228 977 807 870 1812 2026 2193 1185 1448 1328 1653 1401 1842 2087 906 1144 1229 1698 1889 1533 507 346 0 192 1622 596 1087 1226 1380
西宁 1321 1908 1381 1138 968 981 1950 2151 2306 1359 1640 1520 1845 1589 2030 2276 1094 1334 1408 1858 2021 1657 699 448 192 0 1440 691 1207 1288 1255
乌鲁木齐 2399 3265 2502 2336 2192 1999 2909 2998 3057 2599 3004 2902 3229 3020 3461 3704 2444 2758 2848 3278 3378 3005 2114 1668 1622 1440 0 2053 2570 2494 1592
成都 1511 1655 1518 1258 1114 1320 2123 2375 2572 1370 1404 1264 1543 1166 1573 1824 1003 976 908 1235 1339 971 604 885 596 691 2053 0 523 641 1257
贵阳 1732 1522 1702 1469 1368 1649 2278 2551 2768 1488 1320 1185 1378 938 1256 1493 1123 867 647 761 816 449 880 1318 1087 1207 2570 523 0 434 1574
昆明 2085 1956 2071 1823 1700 1942 2662 2929 3139 1878 1750 1614 1812 1370 1666 1892 1505 1295 1080 1087 959 619 1187 1526 1226 1288 2494 641 434 0 1266
拉萨 2558 2909 2604 2347 2179 2237 3192 3402 3561 2528 2653 2514 2799 2414 2800 3046 2194 2233 2141 2324 2220 1883 1758 1701 1380 1255 1592 1257 1574 1266 0
课程名称 计算机算法设计与分析(The Desigh and Analysis of computer Algorithms )
姓 名 周培德 英文名字 Zhou Peide 性别 男
学 历 大学 专业 数学、计算机
现就职单位 北京理工大学计算机系 出生年月 1941.3
主干课程主讲教师
教育背景(大学起) 1960.8-1965.7武汉大学数学系
工作经历 1965.7—至今 北京工业学院即现在的北京理工大学
1982-2001年主讲《算法设计与分析》
1989-2001年主讲《算法理论》另外,还主讲《组合数学》《可计算性理论》《高等数学》等课程,出版两部研究生教材,一部学术专著,在核心期刊发表学术论文56篇。
软件项目和工程实践经验 1972-1976年从事计算机编程及台式机的设计工作。1982-1983从事函数逼近编程工作。
获奖励与荣誉证书 《计算机算法设计与分析》荣获第三届部级优秀教材一等奖。
个人评价 本人善于搞科研,也愿意教学。
联系方式 010-68913991
算法分析:货郎担问题求解分析
一、 对图4-6所示算法的修改:
1,从开始到终止都采用31*31的二维数组保存耗费矩阵,但增加了两个BitSet分别记录有效行、列的序号;这样,删除行、列,只需要对BitSet做一下设置就可以了,而不需要遍历行列来把每个元素设置为MAX。
2,先用贪心法,可以提前排除部分叶子节点,从而减少循环次数。当N>25时,采用蔡胜的方法,一直选择右分支选择出一条路径,效果更好。具体办法是:先从右节点分支到最下层,快速求出第一个Z0值,只需要循环N-1次,就可求得,效果在N>25时比贪心法耗,而且代码简单,只需要一、两行的修改。代码如下:
相关代码:
if (Z0==MAX)
nodeX = nodeY; //先从右分支获取第一次最小耗费Z0;
else nodeX = S2_min(S2); //获取拥有最小耗费的叶子节点;
具体数据(方法四):
贪心法+31:选择基地为城市v0时,耗费为19614
贪心法+31:选择基地为城市v3时,耗费为18773
贪心法+31:选择基地为城市v5时,耗费为18620
贪心法+31:选择基地为城市v6时,耗费为18209
贪心法+31:选择基地为城市v7时,耗费为18074
贪心法+31:选择基地为城市v8时,耗费为17902
贪心法+31:循环:#0次,耗时40(ms)
贪心法+31:内存:Total:43778048,Free:43479088,Used:298168(B)
贪心法+31:路线:8 - 7 - 6 - 2 - 0 - 3 - 4 - 5 - 23 - 24 - 25 - 27 - 28 - 29 - 21 - 20 - 19 - 18 - 13 - 17 - 11 - 10 - 12 - 1 - 14 - 15 - 16 - 9 - 22 - 30 - 26 - 8...最小费用:17902
直接右分支求解
分支限界31:更新最小花费Z0:16169, #30
分析:采用蔡胜的办法,直接右分支到最底层,由此产生的最小耗费Z0,在城市数目N>25的情况下,一般情况下比贪心法更低,对于减少叶子结点的效果更好。
城市数目 贪心法 贪心法改进 先行后列,直接右分支 先列后行,直接右分支
31 19614 17902 16169 16121
30 17863 16666 15672 15000
29 17259 16062 14697 14712
28 16975 15987 16552 16375
27 16379 14985 14592 14628
26 11984 11958 11833 11968
25 11600 11600 11638 11674
24 11268 11268 11515 11530
23 10340 10321 10642 10589
22 9718 9699 11935 11604
21 9311 9292 9263 9111
3,由于框图9中,没有定义叶子节点的存储结构和插入、查找对应的算法,所以可以采取多几种方式,目前尝试了以下几种方法:
方法一:每次遍历整个树,检索所有叶子节点,比较叶子的权值,找出最小;
方法二:使用Vector保存每次产生的叶子节点,每次搜索Vector找出最小。(复杂度为n;如每次都对Vector排序,复杂度n logn,反而得不偿失)
方法三:使用有序链表LinkedList保存叶子节点,动态维护保持有序,获取最小叶子,复杂度为1,插入链表复杂度为n;(使用java语言编写,对TSP31求解,需要1782342 ms,将近30分钟,根据其他同学的结果用C语言编写大概是12分钟)
具体数据(方法三):
分支限界31:循环:82364次;直接右分支费用下限 Z0=16169
分支限界31:时间:1042431555008 - 1042433337350 耗时1782342 ms
方法四:由于分支过程中,存在大量节点的权值是相同的(在)这样极大影响插入排序效率,故根据权值进行分类,将大大降低获取最小叶子问题的规模。具体办法是:使用TreeMap(一种实现了排序映射表接口的红-黑树),其关键字是耗费下限,关键字对应的值是一个LinkedList,用来保存所有w相同的节点。查找过程,先根据耗费w查找对应的LinkedList,然后取出LinkedList的第一个节点;插入过程也类似,直接插入对应LinkedList的首节点就可以了。两者的复杂度都是常数。
具体数据:
TSP-20中 4777个节点,只有278个不同的权值,平均有17个节点的权值是相同的
TSP-31中78107个节点,只有766个不同的权值,平均有101个节点的权值是相同的
优先原则:
1> 最小权值的节点优;
2> 相同权值节点,右分支优先;
3> 相同权值节点,新分支的节点优先;
叶子的动态维护过程(方法三、方法四):
1> 初始化,S2.add(TOP);
2> 分支时:S2.add(X.left), S2.add(X.right), S2.remove(X);
3> 更新最小耗费Z0时:清楚S2中所有耗费>Z0的节点;
定义接口
public interface ch4_tsp_leafs { //定义接口
public String size(); //显示大小;
public String toString(); //用于显示输出
public void add(int kk, Object oo, int sn); //按从小到大排序加入,如果有相同键,加入最前
public Boolean remove(int kk, Object oo); //删除单个对象,减少叶子节点集合的尺寸
public object removeFirst(); //获取最小的叶子节点,如果有相同键值的,取第一个;
public int removeBig(int limit); //删除所有键值大于limit的所有节点;
}
具体数据(方法四):
先行后列31:循环:#82364次,耗时250080(ms)
先行后列31:内存:Total:43778048,Free:30300112,Used:13477136(B)
先行后列31:路线:0 - 8 - 7 - 6 - 2 - 9 - 11 - 10 - 1 - 12 - 15 - 14 - 13 - 17 - 18 - 19 - 20 - 21 - 28 - 29 - 27 - 30 - 26 - 25 - 24 - 23 - 22 - 16 - 3 - 4 - 5 - 0...最小费用:15404
先列后行31:循环:#81915次,耗时240616(ms)
先列后行31:内存:Total:43778048,Free:30403432,Used:13373816(B)
先列后行31:路线:0 - 5 - 4 - 3 - 16 - 22 - 23 - 24 - 25 - 26 - 30 - 27 - 29 - 28 - 21 - 20 - 19 - 18 - 17 - 13 - 14 - 15 - 12 - 1 - 10 - 11 - 9 - 2 - 6 - 7 - 8 - 0...最小费用:15404
二、 按先行归约后列归约;先列归约后行归约顺序,执行图4-6所示算法,比较结果是否相同,用31*31矩阵。(20分)
经过分析,两者均可求得最优解,线路正好相反。两者循环次数稍有不同,但平均性能一样,具体数据如下:
先行后列31:循环:#82364次,耗时250080(ms)
先行后列31:内存:Total:43778048,Free:30300112,Used:13477136(B)
先行后列31:路线:0 - 8 - 7 - 6 - 2 - 9 - 11 - 10 - 1 - 12 - 15 - 14 - 13 - 17 - 18 - 19 - 20 - 21 - 28 - 29 - 27 - 30 - 26 - 25 - 24 - 23 - 22 - 16 - 3 - 4 - 5 - 0...最小费用:15404
先列后行31:循环:#81915次,耗时240616(ms)
先列后行31:内存:Total:43778048,Free:30403432,Used:13373816(B)
先列后行31:路线:0 - 5 - 4 - 3 - 16 - 22 - 23 - 24 - 25 - 26 - 30 - 27 - 29 - 28 - 21 - 20 - 19 - 18 - 17 - 13 - 14 - 15 - 12 - 1 - 10 - 11 - 9 - 2 - 6 - 7 - 8 - 0...最小费用:15404
三、 用贪心法先选择Z0的值,再执行图4-6所示算法,是否能减少运行时间。用31*31矩阵。(22分)
对于25节点以下,有一定效果,但是对于31节点,作用不大,不如一直右分支求得第一条路径。(详细情况见上面部分:一、2的分析)
四、 对搜索过程增加约束条件(比如,寻找不含边(i , j)的路径),再执行图4-6所示算法,是否能缩短求解时间。用31*31矩阵。(20分)
如果去掉的边(i,j)恰好时本次规约的时候选择的用于分支的边,那么可能会对产生影响
五、 第四章P70,例13,动态规划求解,用31*31矩阵。(20分)
由于需要保存中间计算结果用于最后回溯路径,需要的消耗巨大的内存资源。求解17城市的时候,需要51M内存,求解21城市的时候需要999M内存,无法继续了 :(
具体数据:
动态规划16:循环:#245761次,耗时12675(ms)
动态规划16:内存:Total:87818240,Free:63718504,Used:24098600(B)
动态规划16:路线:0 - 2 - 8 - 7 - 6 - 1 - 12 - 15 - 14 - 13 - 11 - 10 - 9 - 3 - 4 - 5 - 0...最小费用:6578
动态规划16:费用: 北京-119-天津-1068-哈尔滨-232-长春-281-沈阳-1189-上海-160-杭州-596-台北-252-福州-441-南昌-380-合肥-141-南京-540-济南-266-石家庄-171-太原-341-呼和浩特-401-北京 = 总费用:6578
动态规划17:循环:#524289次,耗时30029(ms)
动态规划17:内存:Total:97124352,Free:45218648,Used:51904568(B)
动态规划17:路线:0 - 5 - 4 - 3 - 16 - 11 - 13 - 14 - 15 - 12 - 1 - 10 - 9 - 2 - 6 - 7 - 8 - 0...最小费用:6840
动态规划17:费用: 北京-401-呼和浩特-341-太原-171-石家庄-376-郑州-463-合肥-380-南昌-441-福州-252-台北-596-杭州-160-上海-269-南京-540-济南-271-天津-605-沈阳-281-长春-232-哈尔滨-1061-北京 = 总费用:6840
六、 TSP问题结果输出(N=17、19、21、25、31)
使用机器 SunOS E250 5.9 Generic_112233-01 sun4u sparc SUNW,Ultra-250
----------------------------------------------
贪心法+17:选择基地为城市v0时,耗费为7661
贪心法+17:选择基地为城市v4时,耗费为7642
贪心法+17:循环:#0次,耗时42(ms)
贪心法+17:内存:Total:87818240,Free:87660192,Used:156920(B)
贪心法+17:路线:4 - 3 - 2 - 0 - 9 - 16 - 11 - 10 - 12 - 1 - 13 - 14 - 15 - 6 - 7 - 8 - 5 - 4...最小费用:7642
最优结果17:路线:0 > 5 > 4 > 3 > 16 > 11 > 13 > 14 > 15 > 12 > 1 > 10 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:6840
贪心法+17:费用: 太原-171-石家庄-262-天津-119-北京-367-济南-374-郑州-463-合肥-141-南京-242-杭州-160-上海-601-南昌-441-福州-252-台北-1870-沈阳-281-长春-232-哈尔滨-1325-呼和浩特-341-太原 = 总费用:7642
----------------------------------------------
动态规划17:循环:#524289次,耗时30029(ms)
动态规划17:内存:Total:97124352,Free:45218648,Used:51904568(B)
动态规划17:路线:0 - 5 - 4 - 3 - 16 - 11 - 13 - 14 - 15 - 12 - 1 - 10 - 9 - 2 - 6 - 7 - 8 - 0...最小费用:6840
最优结果17:路线:0 > 5 > 4 > 3 > 16 > 11 > 13 > 14 > 15 > 12 > 1 > 10 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:6840
动态规划17:费用: 北京-401-呼和浩特-341-太原-171-石家庄-376-郑州-463-合肥-380-南昌-441-福州-252-台北-596-杭州-160-上海-269-南京-540-济南-271-天津-605-沈阳-281-长春-232-哈尔滨-1061-北京 = 总费用:6840
----------------------------------------------
分支限界17:初始最小花费Z0:999999, #0
分支限界17:更新最小花费Z0:7068, #16
分支限界17:更新最小花费Z0:6840, #4005
先行后列17:循环:#4005次,耗时17533(ms)
先行后列17:内存:Total:97124352,Free:47139824,Used:49983392(B)
先行后列17:路线:0 - 8 - 7 - 6 - 2 - 9 - 10 - 1 - 12 - 15 - 14 - 13 - 11 - 16 - 3 - 4 - 5 - 0...最小费用:6840
最优结果17:路线:0 > 5 > 4 > 3 > 16 > 11 > 13 > 14 > 15 > 12 > 1 > 10 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:6840
先行后列17:费用: 北京-1061-哈尔滨-232-长春-281-沈阳-605-天津-271-济南-540-南京-269-上海-160-杭州-596-台北-252-福州-441-南昌-380-合肥-463-郑州-376-石家庄-171-太原-341-呼和浩特-401-北京 = 总费用:6840
----------------------------------------------
分支限界17:初始最小花费Z0:999999, #0
分支限界17:更新最小花费Z0:7068, #16
分支限界17:更新最小花费Z0:6840, #3972
先列后行17:循环:#3972次,耗时14646(ms)
先列后行17:内存:Total:97124352,Free:47076640,Used:50046576(B)
先列后行17:路线:0 - 5 - 4 - 3 - 16 - 11 - 13 - 14 - 15 - 12 - 1 - 10 - 9 - 2 - 6 - 7 - 8 - 0...最小费用:6840
最优结果17:路线:0 > 5 > 4 > 3 > 16 > 11 > 13 > 14 > 15 > 12 > 1 > 10 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:6840
先列后行17:费用: 北京-401-呼和浩特-341-太原-171-石家庄-376-郑州-463-合肥-380-南昌-441-福州-252-台北-596-杭州-160-上海-269-南京-540-济南-271-天津-605-沈阳-281-长春-232-哈尔滨-1061-北京 = 总费用:6840
----------------------------------------------
贪心法+19:选择基地为城市v0时,耗费为8366
贪心法+19:选择基地为城市v4时,耗费为8347
贪心法+19:循环:#0次,耗时43(ms)
贪心法+19:内存:Total:87818240,Free:87659224,Used:157888(B)
贪心法+19:路线:4 - 3 - 2 - 0 - 9 - 16 - 17 - 13 - 18 - 11 - 10 - 12 - 1 - 14 - 15 - 6 - 7 - 8 - 5 - 4...最小费用:8347
最优结果19:路线:0 > 5 > 4 > 3 > 16 > 17 > 18 > 13 > 14 > 15 > 12 > 1 > 10 > 11 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:7184
贪心法+19:费用: 太原-171-石家庄-262-天津-119-北京-367-济南-374-郑州-459-武汉-270-南昌-291-长沙-584-合肥-141-南京-242-杭州-160-上海-606-福州-252-台北-1870-沈阳-281-长春-232-哈尔滨-1325-呼和浩特-341-太原 = 总费用:8347
----------------------------------------------
动态规划19:TSP18=116MB,TSP19=333MB,消耗内存太大,该算法无法求解
分支限界19:初始最小花费Z0:999999, #0
分支限界19:更新最小花费Z0:7411, #18
分支限界19:更新最小花费Z0:7184, #2804
先行后列19:循环:#2804次,耗时5829(ms)
先行后列19:内存:Total:87818240,Free:87222976,Used:594128(B)
先行后列19:路线:0 - 8 - 7 - 6 - 2 - 9 - 11 - 10 - 1 - 12 - 15 - 14 - 13 - 18 - 17 - 16 - 3 - 4 - 5 - 0...最小费用:7184
最优结果19:路线:0 > 5 > 4 > 3 > 16 > 17 > 18 > 13 > 14 > 15 > 12 > 1 > 10 > 11 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:7184
先行后列19:费用: 北京-1061-哈尔滨-232-长春-281-沈阳-605-天津-271-济南-537-合肥-141-南京-269-上海-160-杭州-596-台北-252-福州-441-南昌-291-长沙-299-武汉-459-郑州-376-石家庄-171-太原-341-呼和浩特-401-北京 = 总费用:7184
----------------------------------------------
分支限界19:初始最小花费Z0:999999, #0
分支限界19:更新最小花费Z0:7358, #18
分支限界19:更新最小花费Z0:7184, #2793
先列后行19:循环:#2793次,耗时5986(ms)
先列后行19:内存:Total:87818240,Free:87229944,Used:587160(B)
先列后行19:路线:0 - 5 - 4 - 3 - 16 - 17 - 18 - 13 - 14 - 15 - 12 - 1 - 10 - 11 - 9 - 2 - 6 - 7 - 8 - 0...最小费用:7184
最优结果19:路线:0 > 5 > 4 > 3 > 16 > 17 > 18 > 13 > 14 > 15 > 12 > 1 > 10 > 11 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:7184
先列后行19:费用: 北京-401-呼和浩特-341-太原-171-石家庄-376-郑州-459-武汉-299-长沙-291-南昌-441-福州-252-台北-596-杭州-160-上海-269-南京-141-合肥-537-济南-271-天津-605-沈阳-281-长春-232-哈尔滨-1061-北京 = 总费用:7184
----------------------------------------------
贪心法+21:选择基地为城市v0时,耗费为9311
贪心法+21:选择基地为城市v5时,耗费为9292
贪心法+21:循环:#0次,耗时31(ms)
贪心法+21:内存:Total:87818240,Free:87657128,Used:159984(B)
贪心法+21:路线:5 - 4 - 3 - 2 - 0 - 9 - 16 - 17 - 13 - 18 - 19 - 20 - 14 - 15 - 12 - 1 - 10 - 11 - 6 - 7 - 8 - 5...最小费用:9292
最优结果21:路线:0 > 5 > 4 > 3 > 16 > 17 > 13 > 18 > 20 > 19 > 14 > 15 > 12 > 1 > 10 > 11 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:8812
贪心法+21:费用: 呼和浩特-341-太原-171-石家庄-262-天津-119-北京-367-济南-374-郑州-459-武汉-270-南昌-291-长沙-563-广州-455-海口-1137-福州-252-台北-596-杭州-160-上海-269-南京-141-合肥-1227-沈阳-281-长春-232-哈尔滨-1325-呼和浩特 = 总费用:9292
----------------------------------------------
动态规划21:TSP18=116MB,TSP19=333MB,消耗内存太大,该算法无法求解
分支限界21:初始最小花费Z0:999999, #0
分支限界21:更新最小花费Z0:9263, #20
分支限界21:更新最小花费Z0:8812, #11214
先行后列21:循环:#11214次,耗时27668(ms)
先行后列21:内存:Total:87818240,Free:86133528,Used:1683576(B)
先行后列21:路线:0 - 8 - 7 - 6 - 2 - 9 - 11 - 10 - 1 - 12 - 15 - 14 - 19 - 20 - 18 - 13 - 17 - 16 - 3 - 4 - 5 - 0...最小费用:8812
最优结果21:路线:0 > 5 > 4 > 3 > 16 > 17 > 13 > 18 > 20 > 19 > 14 > 15 > 12 > 1 > 10 > 11 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:8812
先行后列21:费用: 北京-1061-哈尔滨-232-长春-281-沈阳-605-天津-271-济南-537-合肥-141-南京-269-上海-160-杭州-596-台北-252-福州-697-广州-455-海口-946-长沙-291-南昌-270-武汉-459-郑州-376-石家庄-171-太原-341-呼和浩特-401-北京 = 总费用:8812
----------------------------------------------
分支限界21:初始最小花费Z0:999999, #0
分支限界21:更新最小花费Z0:9111, #20
分支限界21:更新最小花费Z0:8812, #11164
先列后行21:循环:#11164次,耗时26069(ms)
先列后行21:内存:Total:87818240,Free:85903912,Used:1913192(B)
先列后行21:路线:0 - 5 - 4 - 3 - 16 - 17 - 13 - 18 - 20 - 19 - 14 - 15 - 12 - 1 - 10 - 11 - 9 - 2 - 6 - 7 - 8 - 0...最小费用:8812
最优结果21:路线:0 > 5 > 4 > 3 > 16 > 17 > 13 > 18 > 20 > 19 > 14 > 15 > 12 > 1 > 10 > 11 > 9 > 2 > 6 > 7 > 8 > 0...最小费用:8812
先列后行21:费用: 北京-401-呼和浩特-341-太原-171-石家庄-376-郑州-459-武汉-270-南昌-291-长沙-946-海口-455-广州-697-福州-252-台北-596-杭州-160-上海-269-南京-141-合肥-537-济南-271-天津-605-沈阳-281-长春-232-哈尔滨-1061-北京 = 总费用:8812
----------------------------------------------
贪心法+25:选择基地为城市v0时,耗费为11600
贪心法+25:循环:#0次,耗时32(ms)
贪心法+25:内存:Total:87818240,Free:87655904,Used:161208(B)
贪心法+25:路线:0 - 2 - 3 - 4 - 5 - 23 - 24 - 22 - 16 - 9 - 11 - 10 - 12 - 1 - 13 - 17 - 18 - 19 - 20 - 21 - 14 - 15 - 6 - 7 - 8 - 0...最小费用:11600
最优结果25:
贪心法+25:费用: 北京-119-天津-262-石家庄-171-太原-341-呼和浩特-535-银川-346-兰州-507-西安-437-郑州-374-济南-537-合肥-141-南京-242-杭州-160-上海-601-南昌-270-武汉-299-长沙-563-广州-455-海口-373-南宁-1171-福州-252-台北-1870-沈阳-281-长春-232-哈尔滨-1061-北京 = 总费用:11600
----------------------------------------------
动态规划25:TSP18=116MB,TSP19=333MB,消耗内存太大,该算法无法求解
分支限界25:初始最小花费Z0:999999, #0
分支限界25:更新最小花费Z0:11638, #24
分支限界25:更新最小花费Z0:10312, #301074
先行后列25:循环:#301074次,耗时1140674(ms)
先行后列25:内存:Total:89792512,Free:44655888,Used:45135480(B)
先行后列25:路线:0 - 8 - 7 - 6 - 2 - 9 - 11 - 10 - 1 - 12 - 15 - 14 - 19 - 20 - 21 - 18 - 13 - 17 - 16 - 22 - 24 - 23 - 5 - 4 - 3 - 0...最小费用:10312
最优结果25:
先行后列25:费用: 北京-1061-哈尔滨-232-长春-281-沈阳-605-天津-271-济南-537-合肥-141-南京-269-上海-160-杭州-596-台北-252-福州-697-广州-455-海口-373-南宁-762-长沙-291-南昌-270-武汉-459-郑州-437-西安-507-兰州-346-银川-535-呼和浩特-341-太原-171-石家庄-263-北京 = 总费用:10312
----------------------------------------------
分支限界25:初始最小花费Z0:999999, #0
分支限界25:更新最小花费Z0:11674, #24
分支限界25:更新最小花费Z0:10312, #291998
先列后行25:循环:#291998次,耗时1093717(ms)
先列后行25:内存:Total:87818240,Free:47917832,Used:39899264(B)
先列后行25:路线:0 - 3 - 4 - 5 - 23 - 24 - 22 - 16 - 17 - 13 - 18 - 21 - 20 - 19 - 14 - 15 - 12 - 1 - 10 - 11 - 9 - 2 - 6 - 7 - 8 - 0...最小费用:10312
最优结果25:
先列后行25:费用: 北京-263-石家庄-171-太原-341-呼和浩特-535-银川-346-兰州-507-西安-437-郑州-459-武汉-270-南昌-291-长沙-762-南宁-373-海口-455-广州-697-福州-252-台北-596-杭州-160-上海-269-南京-141-合肥-537-济南-271-天津-605-沈阳-281-长春-232-哈尔滨-1061-北京 = 总费用:10312
----------------------------------------------
贪心法+31:选择基地为城市v0时,耗费为19614
贪心法+31:选择基地为城市v3时,耗费为18773
贪心法+31:选择基地为城市v5时,耗费为18620
贪心法+31:选择基地为城市v6时,耗费为18209
贪心法+31:选择基地为城市v7时,耗费为18074
贪心法+31:选择基地为城市v8时,耗费为17902
贪心法+31:循环:#0次,耗时31(ms)
贪心法+31:内存:Total:87818240,Free:87652112,Used:165000(B)
贪心法+31:路线:8 - 7 - 6 - 2 - 0 - 3 - 4 - 5 - 23 - 24 - 25 - 27 - 28 - 29 - 21 - 20 - 19 - 18 - 13 - 17 - 11 - 10 - 12 - 1 - 14 - 15 - 16 - 9 - 22 - 30 - 26 - 8...最小费用:17902
最优结果31:路线:0 > 8 > 7 > 6 > 2 > 9 > 11 > 10 > 1 > 12 > 15 > 14 > 13 > 17 > 18 > 19 > 20 > 21 > 28 > 29 > 27 > 30 > 26 > 25 > 24 > 23 > 22 > 16 > 3 > 4 > 5 > 0...最小费用:15404
贪心法+31:费用: 哈尔滨-232-长春-281-沈阳-605-天津-119-北京-263-石家庄-171-太原-341-呼和浩特-535-银川-346-兰州-192-西宁-691-成都-523-贵阳-434-昆明-619-南宁-373-海口-455-广州-563-长沙-291-南昌-270-武汉-319-合肥-141-南京-242-杭州-160-上海-606-福州-252-台北-1317-郑州-374-济南-780-西安-1758-拉萨-1592-乌鲁木齐-3057-哈尔滨 = 总费用:17902
----------------------------------------------
动态规划31:TSP18=116MB,TSP19=333MB,消耗内存太大,该算法无法求解
分支限界31:初始最小花费Z0:999999, #0
分支限界31:更新最小花费Z0:16169, #30
分支限界31:更新最小花费Z0:15404, #82364
先行后列31:循环:#82364次,耗时352701(ms)
先行后列31:内存:Total:87818240,Free:76444576,Used:11372528(B)
先行后列31:路线:0 - 8 - 7 - 6 - 2 - 9 - 11 - 10 - 1 - 12 - 15 - 14 - 13 - 17 - 18 - 19 - 20 - 21 - 28 - 29 - 27 - 30 - 26 - 25 - 24 - 23 - 22 - 16 - 3 - 4 - 5 - 0...最小费用:15404
最优结果31:路线:0 > 8 > 7 > 6 > 2 > 9 > 11 > 10 > 1 > 12 > 15 > 14 > 13 > 17 > 18 > 19 > 20 > 21 > 28 > 29 > 27 > 30 > 26 > 25 > 24 > 23 > 22 > 16 > 3 > 4 > 5 > 0...最小费用:15404
先行后列31:费用: 北京-1061-哈尔滨-232-长春-281-沈阳-605-天津-271-济南-537-合肥-141-南京-269-上海-160-杭州-596-台北-252-福州-441-南昌-270-武汉-299-长沙-563-广州-455-海口-373-南宁-449-贵阳-434-昆明-641-成都-1257-拉萨-1592-乌鲁木齐-1440-西宁-192-兰州-346-银川-521-西安-437-郑州-376-石家庄-171-太原-341-呼和浩特-401-北京 = 总费用:15404
----------------------------------------------
分支限界31:初始最小花费Z0:999999, #0
分支限界31:更新最小花费Z0:16121, #30
分支限界31:更新最小花费Z0:15404, #81915
先列后行31:循环:#81915次,耗时348713(ms)
先列后行31:内存:Total:87818240,Free:74556648,Used:13260456(B)
先列后行31:路线:0 - 5 - 4 - 3 - 16 - 22 - 23 - 24 - 25 - 26 - 30 - 27 - 29 - 28 - 21 - 20 - 19 - 18 - 17 - 13 - 14 - 15 - 12 - 1 - 10 - 11 - 9 - 2 - 6 - 7 - 8 - 0...最小费用:15404
最优结果31:路线:0 > 8 > 7 > 6 > 2 > 9 > 11 > 10 > 1 > 12 > 15 > 14 > 13 > 17 > 18 > 19 > 20 > 21 > 28 > 29 > 27 > 30 > 26 > 25 > 24 > 23 > 22 > 16 > 3 > 4 > 5 > 0...最小费用:15404
先列后行31:费用: 北京-401-呼和浩特-341-太原-171-石家庄-376-郑州-437-西安-521-银川-346-兰州-192-西宁-1440-乌鲁木齐-1592-拉萨-1257-成都-641-昆明-434-贵阳-449-南宁-373-海口-455-广州-563-长沙-299-武汉-270-南昌-441-福州-252-台北-596-杭州-160-上海-269-南京-141-合肥-537-济南-271-天津-605-沈阳-281-长春-232-哈尔滨-1061-北京 = 总费用:15404
----------------------------------------------
-----END-----
发表评论
-
反编译android应用,降低权限反吸费和隐藏广告,重新打包和签名【原创】
2011-07-27 13:20 8728功能:反编译apk降低权限及重新签名 场景:很多软件,申请了一 ... -
修复mina2客户端IoSession.close()在jdk1.5下关闭不彻底问题
2009-11-23 15:51 6134原帖:http://hi.baidu.com/zeorliu/ ... -
日志API改进:用commons-log还是slf4j?这是一个问题!
2009-02-11 10:23 3687用commons-log还是slf4j?这是一个问题! 看jd ... -
在Web中动态生成验证码:Servlet和Rest模式
2008-09-24 10:23 3578【虎.无名】登录处理常用到一个生成随机校验码图片的处理。下面是 ... -
【虎.无名】自定义Java的REST行为分发器
2008-09-10 09:10 3026【虎.无名】在Restlet和Rails中,资源所支持的Act ... -
答复: 谁能告诉我,什么是企业“级”应用?
2008-04-24 16:16 2245http://www.iteye.com/topic/1078 ... -
答greatolee:OMADRM的agent并不能获取明文内容
2008-04-23 17:00 2002greatolee,您好! OMADRM有2个版本,你说的是O ... -
答g_ktcy短信格式:文本,超长文本,WapPush、OMA-DRM权限、Wap书签、GPRS配置
2008-04-17 15:57 3176g_ktcy,您好! 短信有很多种类:文本,超长文本,WapP ... -
Linux下通过ftp命令实现断点续传(reget)
2008-02-19 14:43 13712同事在Linux通过FTP获取一个1.3G的大文件,传了一个上 ... -
学习笔记:Java串口编程(短信Modem).
2007-08-03 12:04 18885最终目标:在Linux下提供一个稳定可靠的Java短信发送服务 ... -
Symbian OS C++学习笔记2异常退出
2007-03-21 09:40 3235Ch2. 异常退出(Leave) -------------- ... -
OMADRM2学习笔记:DCF-v2结构解析
2007-03-21 09:39 2847【虎.无名】由于需要支持流媒体格式,因而OMA-DRM-DCF ... -
Symbian OS C++学习笔记1命名约定
2007-03-09 15:52 2364http://zeroliu.blogdriver.com/z ... -
OMADRM2学习笔记DCF-v2规范定义
2007-03-09 15:51 3654http://zeroliu.blogdriver.com/z ... -
用Java动态代理实现委托模式
2006-10-23 17:35 5414委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对 ... -
Java开发八荣八耻 zt
2006-10-20 09:54 1728以动手实践为荣,以只看不练为耻。 以打印日志为荣,以出错不报为 ... -
查看磁盘剩余空间:Java代码改进
2006-10-09 10:09 8446原来发布在Blog上的:http://zeroliu.blog ...
相关推荐
在提供的资源中,可能包含了一个货郎担问题的API介绍,这通常会提供一些接口或函数,用于构建、求解和分析TSP问题。这些API可能包括以下功能: 1. **构建图**:创建一个图对象,包含城市和它们之间的距离。 2. **...
【货郎担问题】,又称为旅行商问题(Traveling Salesman Problem,TSP),是图论中的一个经典问题。它的目标是找到一个有向图中所有顶点的最短环路,使得每个顶点恰好访问一次并最终返回起点。在实际应用中,这个...
根据提供的文件信息,我们可以分析并总结出关于TSP问题(货郎担问题)的相关知识点。 ### TSP问题(货郎担问题) #### 1. 定义与背景 TSP问题,即Traveling Salesman Problem(旅行商问题),是组合优化问题中的...
**货郎担问题(Travelling ...总之,"TSP货郎担问题源码"提供了一种使用动态规划求解TSP问题的实现,它涉及到图论、运筹学和算法设计等多个领域的知识,对于理解这些问题的解决策略和优化算法有很高的学习价值。
在提供的压缩包文件中,"货郎担问题.ppt"可能是对货郎担问题的理论介绍,包括问题定义、性质分析以及常见算法的讲解。这类材料通常会包含问题的历史背景、基本概念、复杂度分析和一些经典算法的实现原理,如动态规划...
总之,通过蚁群算法解决34个城市货郎担问题,不仅展示了群体智能在解决复杂优化问题中的潜力,也为我们提供了理解并优化这类问题的一个实用工具。Python的实现方式使得这一算法更加亲民,便于学习和应用。
近似算法,如贪心算法、遗传算法、模拟退火算法、蜂群优化算法等,可以在较短时间内得到接近最优解的结果,是解决大规模货郎担问题的主要手段。 1. 动态规划方法:动态规划是解决货郎担问题的一种经典方法,通过...
总之,"Delphi 货郎担算法类及演示程序"提供了在Delphi环境下解决旅行商问题的一个实例,不仅展示了算法的实现,还展示了如何将算法集成到实际应用中。通过对源码的学习,开发者可以深入理解货郎担问题的解决策略,...
标题中的“tsp.zip.rar_TSP matlab_tsp_模拟 matlab_货郎担_货郎担问题”揭示了这个压缩包包含的内容,主要是关于使用MATLAB编程解决旅行商问题(TSP,Traveling Salesman Problem)的模拟退火算法实现。旅行商问题...
总结,货郎担学习课件深入浅出地介绍了中国邮路问题的建模和解决策略,包括双倍边方法、Fleury算法以及奇偶点图上作业法,这些都是图论中解决最短路径问题的经典方法。这些理论知识在物流配送、网络路由优化等领域...
### 算法分析与设计:回溯法、分支界限法及货郎担问题 #### 算法设计与分析概述 本课程《算法设计与分析》由中国科学技术大学的徐云教授于2009年秋季学期讲授,主要探讨了算法设计与分析的基本原理和技术。其中...
#### 传统遗传算法与货郎担问题 传统的遗传算法(Genetic Algorithm, GA)通过模拟自然界中的进化过程来寻找优化问题的最佳解决方案。这种算法的主要步骤包括初始化种群、选择、交叉、变异和适应度评估。尽管GA在...
为了实现遍历所有村庄的算法,货郎担问题的解决方案通常会包含以下几个核心部分: 1. **距离矩阵**:记录货郎与各个村庄之间的距离,这是计算路径长度的基础。 2. **回溯或深度优先搜索**:用于生成所有可能的路径...
标题"Ason.rar_ASON_tsp_货郎担C++"提到了几个关键概念:ASON(自动交换光网络)、TSP(旅行商问题)以及货郎担问题,它们都是与计算机科学和算法相关的主题。在描述中提到,这是一个关于TSP货郎担过河问题的项目,...
标题中的“tsp.rar_TSP JAVA_java tsp_java 货郎担_tsp_遗传算法 TSP”表明这是一个关于解决旅行商问题(Traveling Salesman Problem, TSP)的Java程序,其中采用了遗传算法。旅行商问题是一个经典的组合优化问题,...
总结而言,利用C++和动态规划思想来解决TSP及其变种——货郎担问题,为学习者提供了一个深入理解动态规划算法、优化问题求解以及算法设计的好机会。通过实际编码,学习者可以将理论知识应用于解决实际问题,不仅锻炼...
货郎担问题,又称为旅行商问题(TSP, Traveling Salesman Problem),是运筹学中的一个经典...随着计算技术的不断进步和算法理论的深入发展,求解货郎担问题的新方法将不断涌现,为实际应用提供更为高效的解决途径。
"计算机算法设计与分析:6第六章动态规划" 计算机算法设计与分析是计算机科学中一个重要的领域,旨在研究...动态规划的应用领域广泛,包括多段图问题、0/1 背包问题、流水线调度问题、可靠性设计问题、货郎担问题等。
本课件深入浅出地探讨了两种常用的算法设计策略:回溯法和贪心法,以及如何运用它们解决实际问题,特别是著名的货郎担问题。 **一、回溯法** 回溯法是一种试探性的解决问题方法,常用于求解组合优化问题。它尝试...
例如,在货郎担问题中,若以城市1为起点,可能存在24种不同的路径,穷举法会遍历每条路径并计算其费用,从而找出最小费用的路径。然而,穷举法的效率极低,时间复杂度为O(n!),随着问题规模n的增长,所需时间和空间...