分支限界法作业答案.doc

上传人:hw****26 文档编号:2401520 上传时间:2019-05-11 格式:DOC 页数:5 大小:63.50KB
下载 相关 举报
分支限界法作业答案.doc_第1页
第1页 / 共5页
分支限界法作业答案.doc_第2页
第2页 / 共5页
分支限界法作业答案.doc_第3页
第3页 / 共5页
分支限界法作业答案.doc_第4页
第4页 / 共5页
分支限界法作业答案.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、分支限界 法作业 1. 旅行商问题 设有 n个城市,城市之间道路的长度均大于或等于 0,还可能是(对应城市之间无交通线路)。一个旅行商从某个城市出发,要经过每个城市一次且仅一次,最后回到出发的城市,问他如何走才能使他走的路线最短? 要求:使用矩阵归约确定限界函数的方法,或者其他方法实现。 分析: 旅行商问题对应的解的元组为 n元组,其中假设第一个城市为 1,则 n元组中未确定的为剩下 n-1个城市,元组为( 1,x2, ,xn) ,每个 xi的取值为 2, ,n;约束条件为已经经过的城市不能再走,最后回到出发城市。目标 函数是巡回旅行路线长度。 利用矩阵归约的方法 确定限界函数: 限界函数:

2、对任意路线上的结点 d,设 p是其前驱结点,则 f(d) = g(d) + h(d), 其中, g(d) = f(p) + Cppd, h(d) = rd。 Cppd是在 p点规约后得到的矩阵中 p点到 d点的长度值, rd为 d点可以归约掉的值。 算法 1: (叶子结点进堆 ) Input:图 G; Output:从源点 1出发再回到 1顶点的最短巡回旅行路线。 1. 设定目标函数的限界 down=r1, up= 2. 计算初始结点 1的 f(1)=r1,将初始结点插入最小堆 H; 3. while (H ) 4. 5. 从 H中做 DELETEMIN 的操作,用 p带回相应结点 ; 6.

3、If p是叶子 结点 then 7. 输出当前 最优值 , 并从叶子结点沿 parent指针输出解, 退出; 8. Else 9. 产生 p的所有 满足约束条件的 后继结点 d(建树,建立指向 parent的指针 ) 并计算 f(d); 10. if f(d)C2 9. if p为叶子结点 then 10. if 堆 H为空 then 输出没有解 , exit (结束程序 ); 11. else if f(p)down then down=f(p), 删除 H中小于 等于 down的结点; 12. else 13. 产生 p满足约束条件的后继结点 d(建树,保留结点的 parent指针 ) 并计算 f(d)和 g(d) 14. 将 f值大于 down的结点插入最大堆 H中; 15. 16. 17. if flag=false then 输出没有解 ;

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

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。