MATLAB 图论工具箱
图论基础
Matlab图论工具箱提供了构建、操作和分析图形的函数和工具。在Matlab图论工具箱中,可以使用以下基本数据结构:
graph
: 无向图。digraph
: 有向图。
可以使用以下函数创建一个图或有向图:
graph
: 创建一个无向图。digraph
: 创建一个有向图。
% 创建无向图
G = graph(A);
% 创建有向图
G = digraph(A);
其中,A
是一个邻接矩阵或稀疏矩阵,表示图的连接关系。
也可以使用以下函数创建一个带权图或带权有向图:
graph
: 创建一个带权无向图。digraph
: 创建一个带权有向图。
% 创建带权无向图
G = graph(A, weights);
% 创建带权有向图
G = digraph(A, weights);
其中,weights
是一个权重矩阵或向量,表示图中每条边的权重。
图形绘制
可以使用以下函数绘制一个图或有向图:
plot
: 绘制图形。plot
: 绘制有向图。
% 绘制图形
plot(G);
% 绘制有向图
plot(G, 'Layout', 'layered');
其中,Layout
是布局选项,用于指定如何排列图形中的节点和边。
图形分析
可以使用以下函数进行图形分析:
degree
: 返回节点的度。indegree
: 返回节点的入度。outdegree
: 返回节点的出度。shortestpath
: 返回两个节点之间的最短路径。distances
: 返回从一个节点到所有其他节点的距离。bfs
: 返回广度优先搜索结果。dfs
: 返回深度优先搜索结果。
% 计算节点度数
d = degree(G);
% 计算节点入度
in = indegree(G);
% 计算节点出度
out = outdegree(G);
% 计算最短路径
p = shortestpath(G, s, t);
% 计算节点距离
dist = distances(G, s);
% 广度优先搜索
[tree, pred, order] = bfs(G, s);
% 深度优先搜索
[tree, pred, order] = dfs(G, s);
其中,s
和 t
分别表示起始节点和目标节点。
图形操作
可以使用以下函数进行图形操作:
subgraph
: 返回指定节点和边的子图。rmnode
: 删除指定节点。rmedge
: 删除指定边。addnode
: 添加新节点。addedge
: 添加新边。
% 获取子图
subG = subgraph(G, nodes, edges);
% 删除节点
G = rmnode(G, node);
% 删除
常用函数
- graph:创建图形对象。
G = graph(A) % 用邻接矩阵A创建一个无向图形对象G
- digraph:创建有向图形对象。
G = digraph(A) % 用邻接矩阵A创建一个有向图形对象G
- plot:绘制图形对象的图形。
plot(G) % 绘制图形对象G的图形
- numnodes:计算图形对象的节点数量。
n = numnodes(G) % 计算图形对象G的节点数量
- numedges:计算图形对象的边数量。
m = numedges(G) % 计算图形对象G的边数量
- degree:计算图形对象的每个节点的度数。
d = degree(G) % 计算图形对象G的每个节点的度数
- neighbors:查找图形对象中一个节点的相邻节点。
adj = neighbors(G, node_idx) % 查找图形对象G中节点 node_idx 的相邻节点
- distances:计算图形对象中节点之间的最短路径。
D = distances(G) % 计算图形对象G中节点之间的最短路径
- shortestpath:查找图形对象中两个节点之间的最短路径。
path = shortestpath(G, node_idx1, node_idx2) % 查找图形对象G中节点 node_idx1 和 node_idx2 之间的最短路径
- centrality:计算图形对象中每个节点的中心性指标。
c = centrality(G, 'centrality_type') % 计算图形对象G中每个节点的中心性指标,centrality_type 可选参数有 'degree'、'betweenness'、'closeness'、'eigenvector'、'katz'、'pagerank' 等
- isconnected:判断图形对象是否是连通图。
isconnected(G) % 判断图形对象G是否是连通图,返回1表示是,0表示否
- graphconncomp:计算图形对象的连通分量数量和标签。
[S, C] = graphconncomp(G) % 计算图形对象G的连通分量数量和标签
- incidence:计算图形对象的关联矩阵,即边与节点之间的关系。
I = incidence(G) % 计算图形对象G的关联矩阵
- minspantree:计算图形对象的最小生成树。
T = minspantree(G) % 计算图形对象G的最小生成树
- subgraph:提取图形对象的子图。
G_sub = subgraph(G, node_idx) % 提取图形对象G中以节点 node_idx 为中心的子图
- inducedsubgraph:提取图形对象的诱导子图。
G_induced = inducedsubgraph(G, node_idx) % 提取图形对象G中以节点 node_idx 为中心的诱导子图
- isomorphism:判断两个图形对象是否同构。
isomorphic = isomorphism(G1, G2) % 判断两个图形对象G1和G2是否同构,返回1表示是,0表示否
- ismultigraph:判断图形对象是否是多重图。
ismultigraph(G) % 判断图形对象G是否是多重图,返回1表示是,0表示否
- isdirected:判断图形对象是否是有向图。
isdirected(G) % 判断图形对象G是否是有向图,返回1表示是,0表示否
- isomorphpref:计算两个图形对象的同构匹配。
p = isomorphpref(G1, G2) % 计算两个图形对象G1和G2的同构匹配,返回的是一个置换矩阵p,用于表示G1和G2之间的同构匹配
标签:node,图论,有向图,对象,节点,MATLAB,计算,工具箱,图形
From: https://www.cnblogs.com/pzxnb/p/17745245.html