最短路径matlab求解

一、最短路径

  • 从A到B,总路径最短
  • 在下图中,用点表示城市,点与点之间的连线表示城市间有道路相连。连线旁的数字表示道路的长度。现计划从城市1到城市3铺设一条天然气管道,请设计出最小长度管道铺设方案。
    在这里插入图片描述
  • 最短路径:从图中的某个顶点出发,到达另外一个顶点的所经过的边的权重之和最小的一条路径。
  • 图:边和节点组成的结构,例如本题中的道路和城市
    边带有方向的是有向图,否则为无向图
  • 权重:每条边都有与之对应的值,本题中边为道路,边的权重就是道路长度

二、最短路径的代码实现(matlab)

  • 函数调用:[dist, path, pred] = graphshortestpath(DG, 1, 3)
  • dist是最短路径的值,path是最短路径的节点顺序,pred是到每一个节点的最短路径的终点前一个节点,DG为连接矩阵
    如上所示为节点1到节点3的最短路径
w = [10,5,2,1,4,6,7,3,9,2];
DG = sparse([1,1,2,2,3,4,4,5,5,5],[2,5,5,3,4,3,1,2,3,4],w);
[dist,path,pred] = graphshortestpath(DG,1,3)
% biograph生成图对象,view显示该图
point_name = ['1','2','3','4','5'];
h = view(biograph(DG,point_name,'ShowWeights','on'))
% 将最短路径的节点和边缘标记为红色并增加线宽
% getedgesbynodeid得到图h的指定边的句柄
% 第一个参数是图,第二个是边的出点,第三个是边的入点
% 句柄确保能找到对应的东西
% get查询图的属性,h.Nodes(path),‘ID’得到图中最短路径
% set函数设置图形属性
edges = getedgesbynodeid(h,get(h.Nodes(path),'ID'));
set(edges,'LineColor',1 0 0])
set(edges,'LineWidth',3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值