基本概念
图的概念与数据结构中基本一致,不做赘述。
需要特别注意的是,图的两种表示方法即关联矩阵和邻接矩阵表示法
如下面的无向图
需要注意无向图略有差别,即关联矩阵用{-1,1,0}表示头,尾,其他;邻接矩阵a(uv)表示是否存在从顶点u到v的弧
此外还有一些概念如接近中心度,中间中心度,以及特征向量中心度需要重点记忆。
应用
1.图论工具箱常用的函数
简单用法
[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所有,需要自己下载;
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函数可以直接算出两地距离
西瓜小侠 发布了21 篇原创文章 · 获赞 9 · 访问量 1205 私信 关注