分支定界算法

本文介绍了一种使用分支定界算法寻找在养路费不超过1500的情况下,从甲城到乙城最短路线的方法。通过Floyd算法计算最短路径和最小费用,结合深度优先搜索和剪枝策略降低复杂度,实现路径查找。
摘要由CSDN通过智能技术生成

1.题目

用分支定界算法求以下问题:

某公司于乙城市的销售点急需一批成品,该公司成品生产基地在甲城市。

甲城市与乙城市之间共有 n 座城市,互相以公路连通。甲城市、乙城市以及其它各城市之间的公路连通情况及每段公路的长度由矩阵M1 给出。

每段公路均由地方政府收取不同额度的养路费等费用,具体数额由矩阵M2 给出。

请给出在需付养路费总额不超过 1500 的情况下,该公司货车运送其产品从甲城市到乙城市的最短运送路线。

具体数据参见文件:

M1.txt: 各城市之间的公路连通情况及每段公路的长度矩阵(有向图); 甲城市为城市Num.1,乙城市为城市Num.50。

M2.txt: 每段公路收取的费用矩阵(非对称)。

 

2.算法分析

2.1算法思路和流程

(1)将m1.txt和m2.txt的数据读入两个50×50的数组。

(2)用Floyd算法求出所有点对之间的最短路径长度和最小费用。

(3)应用深度优先搜索对该多叉树进行搜索,由于树的叉树太多,则必须采用剪枝策略,否则搜索速度会很慢,则将Floyd计算出的A点到B点的最短距离和要求的花费1500作为界,如果满足剪枝条件,则减掉,否则则记录路径和进行深度优先搜索。

(4)直到搜到B点,更新最好路径为当前路径。

2.2剪枝策略

当当前节点p已经被访问过,或者当前路径大于已知最优路径距离,或者花费大于1500时,进行剪枝。

(visit[p] ||length>bestlength || mycost>1500)

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值