Matlab最短路径问题记录

简介:   利用graphshortestpath 可以求最短路径,具体用法参考MATLAB帮助 S=[1 1 2 2 3 3 4 4 4 4 5 6 6 7 8]; %起始节点向量 E=[2 3 5 4 4 6 5 7 8 6 7 8 9 9 9]; %终止节点向量 W=[1 2 12 ...

  利用graphshortestpath 可以求最短路径,具体用法参考MATLAB帮助

S=[1 1 2 2 3 3 4 4 4 4 5 6 6 7 8]; %起始节点向量    
E=[2 3 5 4 4 6 5 7 8 6 7 8 9 9 9]; %终止节点向量
W=[1 2 12 6 3 4 4 15 7 2 7 7 15 3 10]; %边权值向量,有向图,G(9,9)=0; 9个节点
G=sparse(S,E,W); %关联矩阵的稀疏矩阵表示
G(9,9)=0;
P=biograph(G,[],'ShowWeights','on');%建立有向图对象P
H=view(P);%显示各个路径权值
[Dist,Path]=graphshortestpath(G,1,9,'Method','Dijkstra') %求节点1到节点9的最短路径
set(H.Nodes(Path),'Color',[1 0.4 0.4]);%以下三条语句用红色修饰最短路径
edges=getedgesbynodeid(H,get(H.Nodes(Path),'ID'));
set(edges,'LineColor',[1 0 0]);
set(edges,'LineWidth',2.0);

  以下是运行结果,节点1到节点9的最短路径为19

Dist =

    19

Path =

     1     3     4     5     7     9

  利用graphallshortestpaths可以求出所有最短路径
  Dists=graphallshortestpaths(G) %求所有最短路径

Dists =

     0     1     2     5     9     6    16    12    19
   Inf     0   Inf     6    10     8    17    13    20
   Inf   Inf     0     3     7     4    14    10    17
   Inf   Inf   Inf     0     4     2    11     7    14
   Inf   Inf   Inf   Inf     0   Inf     7   Inf    10
   Inf   Inf   Inf   Inf   Inf     0   Inf     7    15
   Inf   Inf   Inf   Inf   Inf   Inf     0   Inf     3
   Inf   Inf   Inf   Inf   Inf   Inf   Inf     0    10
   Inf   Inf   Inf   Inf   Inf   Inf   Inf   Inf     0

  注意一点的是创建稀疏矩阵的时候,如果原始是m*3的矩阵a,分别表示起点、终点和权值,有n个点,用sparse(a),创建的还是m*3,这样根本不对,因为矩阵值是第三列,这样的话矩阵值包括了下标。应该是sparse(a(:,1),a(:,2),a(:,3)),这样的话是max(第一列)*max(第二列)的矩阵,然后设置spraseGraph(n,n)=0,这样的话sparseGraph才是方阵,采用调用系统的最短路径函数。

clc
clear all
a = [6 1 1
6 4 1
6 5 1
1 2 1
2 3 1
2 4 1
3 5 1
4 5 1];
res = [];
graph = sparse(a(:,1),a(:,2),a(:,3));
graph(6,6) = 0;
P=biograph(graph,[],'ShowWeights','on');%建立有向图对象P
H=view(P);%显示各个路径权值

  

目录
相关文章
|
机器学习/深度学习 存储 算法
【MATLAB第6期】基于MATLAB的粒子群及若干改进的粒子群算法原理介绍 持续更新
【MATLAB第6期】基于MATLAB的粒子群及若干改进的粒子群算法原理介绍 持续更新
|
并行计算 算法 数据可视化
万有引力搜索算法(GSA)的matlab实现
引力搜索算法将所有粒子当作有质量的物体,能够作无阻力运动。每个粒子会受到解空间中其它粒子的万有引力的影响,并产生加速度向质量更大的粒子运动。由于粒子的质量与粒子的适度值相关,适度值大的粒子其质量也会更大,因此,质量小的粒子在朝质量大趋近的过程中逐渐逼近优化问题中的最优解。 本文基于matlab编程实现了引力搜索算法,并在5个不同的测试函数进行算法性能的测试,将迭代的过程可视化呈现。.........
【MATLAB第40期】源码分享 | MATLAB实现根据经纬度坐标查找两点之间的距离(Haversine、 Pythagoran定理)
【MATLAB第40期】源码分享 | MATLAB实现根据经纬度坐标查找两点之间的距离(Haversine、 Pythagoran定理)
|
机器学习/深度学习 传感器 算法
基于Matlab实现多频外差算法
基于Matlab实现多频外差算法
|
机器学习/深度学习 传感器 算法
基于MATLAB实现均匀平面阵MVDR算法
基于MATLAB实现均匀平面阵MVDR算法
|
机器学习/深度学习 传感器 资源调度
基于Matlab实现ANFIS算法
基于Matlab实现ANFIS算法
|
算法 Serverless
基于GA算法的TSP最短路径搜索matlab仿真
基于GA算法的TSP最短路径搜索matlab仿真
152 0
基于GA算法的TSP最短路径搜索matlab仿真
|
存储 机器学习/深度学习 消息中间件
matlab矩阵的表示和简单操作
matlab矩阵的表示和简单操作
402 0
|
算法
Matlab算法 图论最短路径问题
图论中的图(Graph)是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。
448 0
Matlab算法 图论最短路径问题
|
机器学习/深度学习 资源调度
Matlab:序列分析法MATLAB代码
Matlab:序列分析法MATLAB代码