matlab图论模型和算法

图论算法简介

图论起源于哥尼斯堡七桥问题
在这里插入图片描述
要求从以点出发走过所有的路径。
图论 (Graph theory) 以图为研究对象, 研究顶点和边组成的图形的数学理论和方法。
图论中的图是由若干给定的顶点及连接两顶点的边所构
成的图形。
图论中的图通常用来描述某些事物之间的某种特定关系,用顶点代表事物,用边表示相应两个事物间的关系。

概念、算法

图(无向图)的构成

图的构成: 顶点集 边集 关联函数
顶点集V(G): 图G中所有顶点的集合
边集E(G): 图G中所有边的集合
关联函数φG φG:E(G)→V(G)
环: 端点重合为一点的边。
连杆: 端点不重合的边。
重边: 具有相同的两个端点的边。
在这里插入图片描述
上图就可以描述成:
 V(G)={u,v,w,x,y}
 E(G)={a,b,c,d,e,f,g,h}
  φG(e)=vx或xv(无向)
 b为环
 a为连杆
 d、f为重边
有向图和无向图差别就在路线上是否有箭头。

图(有向图)的构成

有向图构成: 顶点 弧集 关联函数
顶点集V(G): 图 G 中所有顶点的集合。
弧集 A(G): 图 G 中所有弧的集合。
关联函数 φG φG : A(a) →V(G)在这里插入图片描述
上图就可以描述成:
 V(G)={u,v,w,x,y}
 A(G)={a,b,c,d,e,f,g,h}
  φG(a)=uv
子图: 在原图上去掉一些边和节点的图。
完全图: 图中任意两点都有边相连。
完全二分图: 节点可以被分为两部分,它们之间任意两个节点都有边相连。
星图: 为完全二分图演化出来的,当其中一个集合中只有一个节点的时候,就是星图。
**连通图:**点与点直接可以通过若干边就能到达。
**不连通图:**点与点之间存在无法通过边到达的情况。在这里插入图片描述

图与网络的数据结构

无向图关联矩阵/邻接矩阵

在这里插入图片描述
关联矩阵 M = (mve), mve ∈{0,1,2}表示边 e 与顶点 v 关联的次数。
在这里插入图片描述
邻接矩阵 A = (auv), auv 表示是否存在从顶点 u 到 v 的弧。
在这里插入图片描述

有向图关联矩阵/邻接矩阵

在这里插入图片描述
关联矩阵 M = (mva), mva∈(1,−1,0)分表示弧 a 与顶点 v关联的关系(尾、头、其它)。
在这里插入图片描述
邻接矩阵 A = (auv), auv表示是否存在从顶点 u 到 v 的弧。
在这里插入图片描述

顶点的度和中心度

度dG(v): G 中 与 v 关 联 的 边 数,dG(v) = d-(v) + d+(v)。
出度d-(v) : 以 v 为弧尾,起始于该点的弧数。
入度 d+(v): 以 v 为弧头,终止于该点的弧数。
在这里插入图片描述
这里d-(v)= 3;d+(v)=2。
点度中心度在这里插入图片描述
接近中心度
一个顶点到其他所有顶点的距离和的倒数
在这里插入图片描述
中间中心度
作为最短路径中间节点的频率
在这里插入图片描述
特征向量中心度在这里插入图片描述

matlab中包含的与图论相关的一些函数

函数名功能
graphallshortestpaths求图中所有顶点对之间的最短距离
graphconnredcomp找无 (有) 向图的 (强/弱) 连通分支
graphisreddag测试有向图是否含有圈
graphisomorphism确定一个图是否有生成树
graphmaxflow计算有向图的最大流
graphminspantree在图中找最小生成树
graphpred2path把前驱顶点序列变成路径的顶点序列
graphshortestpath求指定一对顶点间的最短距离和路径
graphtopoorder执行有向无圈图的拓扑排序
graphtraverse求从一顶点出发, 所能遍历图中的顶点

调用这些函数/工具箱前的准备

无向图做一个下三角矩阵即可
在这里插入图片描述
在这里插入图片描述
可以看到写成的矩阵含有很多的0,因此也可以改写成稀疏矩阵
在这里插入图片描述
两种矩阵类型可以通过full和sparse函数相互转化。

网络分析工具箱

不是自带的,好像需要下载

函数名功能
degrees求图中所有顶点的度,入度和出度
ave_neighbor_deg求图中所有顶点的相邻顶点平均度
closeness求图中所有顶点的接近中心度
node_betweenness_faster求图中所有顶点的中间中心度
edge_betweenness求图中所有边的中间中心度
eigencentrality求图中所有顶点的特征向量中心度
clust_coeff求图中所有顶点的集聚系数

教程中大概讲了一个赈灾巡查的案例,提到了使用启发式算法和图论模型结合优化方案。感觉这是一个比较好的例子,同时对于我来说也比较复杂,我会单独写一篇对这个案例算法优化的讨论。

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值