matlab-图论模型以及方法

基本概念

图的概念与数据结构中基本一致,不做赘述。
需要特别注意的是,图的两种表示方法即关联矩阵和邻接矩阵表示法
如下面的无向图
matlab-图论模型以及方法
需要注意无向图略有差别,即关联矩阵用{-1,1,0}表示头,尾,其他;邻接矩阵a(uv)表示是否存在从顶点u到v的弧

此外还有一些概念如接近中心度,中间中心度,以及特征向量中心度需要重点记忆。

应用

1.图论工具箱常用的函数

matlab-图论模型以及方法
简单用法

 [a,b,c,d,e,f]=deal(1,2,3,4,5,6);%deal作用:把1~6赋值给a~f
 %    a b c d e f
w = [0 0 0 0 0 0    % a
     2 0 0 0 0 0    % b
     3 6 0 0 0 0    % c
     0 5 0 0 0 0    % d
     0 3 1 1 0 0    % e
     0 0 0 2 4 0];  % f
W = sparse(w);%转成稀疏矩阵    
[dist,Path,pred] = graphshortestpath(W, d,a);%默认有向
[Dist,Path] = graphshortestpath(W, 1, 6,'Directed',0)%Directed 后面的数字表示有向与否也可用true/false

1.使用图论工具箱必须将原矩阵转成稀疏矩阵
2.dist :最短路径长度,path:路径,pred 前驱结点
3.可结合相应操作使之可视化
可参考这里

2. 网络分析工具箱函数

matlab-图论模型以及方法
这里的工具箱非matlab所有,需要自己下载;
3.最短回路(tsp)
使用minhamiltonpath函数(也非自带)须自行下载
使用举例

n = length(lat);

R = 6378.137;%地球半径

dist = zeros(n);
for i = 1:n
    for j = i+1:n
        dist(i,j) = distance(lat(i),lon(i), lat(j),lon(j), R);
    end
end

dist = dist + dist';
[order,totdist] = minhamiltonpath(dist);

这里的lat,lon.分别代表经纬度矩阵,使用distance函数可以直接算出两地距离

matlab-图论模型以及方法matlab-图论模型以及方法 西瓜小侠 发布了21 篇原创文章 · 获赞 9 · 访问量 1205 私信 关注
上一篇:ASE Alpha Sprint - backend scrum 10


下一篇:是否可以将由ASE创建的Android脚本用作Android的典型应用程序(例如,用Java编写)?