无向边图

描述

对象表示无向图,这些图具有连接节点的无向边。创建图形对象后,可以通过使用对象函数对对象执行查询来了解有关图形的更多信息。例如,您可以添加或删除节点或边,确定两个节点之间的最短路径,或定位特定的节点或边。

图([1 1],[2 3]);e = add (G,2,3) G = add (G,4) plot(G)

创建

描述

例子

G=图创建一个空的无向图形对象,G,它没有节点或边。

例子

G=图(一个使用正方形对称邻接矩阵创建一个加权图,一个.中的每个非零项的位置一个为图指定一条边,边的权重等于条目的值。例如,如果(2, 1) = 10,然后G包含节点2和节点1之间的边,权值为10。

例子

G=图(一个节点名称另外指定节点名称。中的元素数节点名称必须等于大小(1)

G=图(一个NodeTable使用表指定节点名称(可能还有其他节点属性),NodeTable.表的行数必须与一个. 使用table变量指定节点名称的名字

例子

G=图(一个___类型指定在构造图时使用的邻接矩阵的三角形。您必须指定一个并且可以选择指定节点名称NodeTable.的上三角形或下三角形一个要构建图形,类型可以是“上”“更低”

例子

G=图(一个___,“省略自循环”的对角元素一个并返回一个没有任何自循环的图。您可以在以前的语法中使用任何输入参数组合。

例子

G=图(s、 t指定图像边缘(s, t)在节点对。年代t可以指定节点索引或节点名称。

例子

G=图(s、 t砝码还使用数组指定边的权重砝码

例子

G=图(s、 t砝码节点名称使用字符向量的单元格数组或字符串数组指定节点名称,节点名称年代t不能包含不在列表中的节点名节点名称

G=图(s、 t砝码NodeTable使用表指定节点名称(可能还有其他节点属性),NodeTable.属性指定节点名称的名字表变量。年代t不能包含不在列表中的节点名NodeTable

例子

G=图(s、 t砝码全国矿工工会指定具有数值标量的图形中的节点数全国矿工工会

G=图(s、 t___,“省略自循环”不添加任何自循环到图形。也就是说,任何k满足s (k) = = t (k)被忽略了。您可以在以前的语法中使用任何输入参数组合。

G=图(s、 tEdgeTable___使用表指定边缘属性而不是指定砝码.的EdgeTable输入必须是一个表,其中每个对应的元素对对应一行年代t.使用表变量指定边的权重重量

例子

G=图(EdgeTable使用的表EdgeTable来定义图表。在这个语法中,第一个变量EdgeTable必须指定EndNodes,它必须是一个定义图的边列表的两列数组。

例子

G=图(EdgeTableNodeTable另外,使用表指定图形节点的名称(可能还有其他属性),NodeTable

G=图(EdgeTable___,“省略自循环”不添加自循环到图形。也就是说,任何k满足EdgeTable.EndNodes(k,1)==EdgeTable.EndNodes(k,2)将被忽略。您必须指定EdgeTable并且可以选择指定NodeTable

输入参数

全部展开

邻接矩阵,指定为一个完整或稀疏的数字矩阵。的条目一个指定图的节点之间的连接网络(边)。中的每个非零项的位置一个指定两个节点之间的边。该条目的值提供了边权重。逻辑邻接矩阵产生未加权图。

的主对角线上的非零元素一个具体说明self-loops,或通过边与自身相连的节点。使用“omitselfloops”忽略对角线项的输入选项。

一个必须是对称的,除非类型输入指定。使用不对称确认矩阵对称。对于三角形邻接矩阵,指定类型仅使用上三角形或下三角形。

例子:A = [0 1 5];1 0 0;5 0 0)描述一个有三个节点和两条边的图。节点1和节点2之间的边的权值为1,节点1与节点3之间的边的权值为5

数据类型:||逻辑

节点名称,指定为字符向量的单元格数组或字符串数组。节点名称长度必须等于numnodes (G)以便为图中的每个节点包含一个非空的、唯一的名称。

例子:图G = (A, {n1, n2, n3的})为3 × 3邻接矩阵指定三个节点名,一个

数据类型:细胞|字符串

邻接矩阵的类型,指定为“上”“更低”

例子:图G = (A,“上”)仅使用的上三角形一个要构建图形,G

节点对,指定为节点索引或节点名称。在中的相应节点之间创建边年代t,它必须都是数字,或都是字符向量、字符向量的单元格数组、字符串数组或类别数组。在所有情况下,年代t必须有相同数目的元素。

  • 如果年代t是数值的,则它们对应于图节点的索引。数值节点索引必须是大于或等于1的正整数。

  • 如果年代t是字符向量、字符向量的单元格数组或字符串数组,然后它们指定节点的名称。这个节点图的属性是包含的名字变量带有节点名,G.Nodes.Name

  • 如果年代t是类别数组,那么类别在哪里年代t用作图形中的节点名称。这可以包括不是中元素的类别年代t

  • 如果年代t指定两个节点之间的多条边,则结果为a多重图形

该表显示了通过数字节点索引或节点名引用一个或多个节点的不同方法。

形式 单独的节点 多节点
节点索引

标量

例子:1

向量

例子:(1 2 3)

节点名称

特征向量

例子:“一个”

字符向量单元数组

例子:{'A''B''C'}

字符串标量

例子:“一个”

字符串数组

例子:(“A”“B”“C”)

分类数组

例子:分类(“”)

分类数组

例子:分类([“A”“B”“C”))

例子:G =图([1 2 3],[2 4 5])创建一个有五个节点和三条边的图。

例子:G=图({'Boston''纽约''华盛顿特区'},{'NewYork''新泽西''匹兹堡'})创建具有5个命名节点和3条边的图。

边权重,指定为标量、向量、矩阵或多维数组。砝码必须是标量或具有相同数量元素的数组年代t

将边的权值存储为重量变量G.Edges属性表。要在创建图形之后添加或更改权重,可以直接修改表变量,例如:[25 50 75]'

如果您指定砝码作为一个空数组[],则被忽略。

例子:G = graph([1 2],[2 3],[100 200])创建一个有三个节点和两条边的图。这些边的权值是100200

数据类型:|

图节点的数目,指定为正标量整数。全国矿工工会必须大于或等于年代t

例子:G = graph([1 2],[2 3],[],5)创建包含三个连接节点和两个孤立节点的图形。

边缘信息表。如果没有指定年代t,然后是第一个变量EdgeTable是否需要是一个两列矩阵,字符向量的单元格数组,或字符串数组的名称EndNodes这定义了图形的边。对于边的权值,使用变量重量,因为某些图形函数使用此表变量名。如果有一个变量重量,则它必须是一个数值列向量。看到桌子有关构造表的更多信息。

创建图形后,使用G.Edges

例子:EdgeTable = table([1 2;2 3;3 5;4 5], VariableNames, {' EndNodes '})

数据类型:桌子

节点信息表。NodeTable可以包含任意数量的变量来描述图形节点的属性。对于节点名称,请使用变量的名字,因为这个变量名被一些图形函数使用。如果有一个变量的名字,则它必须是字符向量的单元格数组或在每行中指定唯一名称的字符串数组。看到桌子有关构造表的更多信息。

创建完图后,使用G.Nodes

例子:NodeTable =表({' a ';“b”;“c”;' d '}, VariableNames,{'名字'})

数据类型:桌子

输出参数

全部展开

无向图,返回为对象

属性

全部展开

图的边,作为表返回。默认情况下,这是一个——- - - - - -1表,是图形中的边数。

  • 要向图形中添加新的边特性,请在边缘表格

  • 要从图形中添加或删除边,请使用addedgermedge对象函数。

例子:G.Edges返回一个表,列出图形中的边

例子:G.Edges.Weight返回边权值的数值向量。

例子:[10 20 30 55]'为图指定新的边权值。

例子:G.Edges.NormWeight = G.Edges.Weight /笔(G.Edges.Weight)将新的边特性添加到包含边的规格化权重的表中。

数据类型:桌子

图的节点,作为表返回。默认情况下,这是空的N——- - - - - -0表,N为图中的节点数。

  • 要向图中添加新的节点属性,请在节点表格

  • 要从图形中添加或删除节点,请使用添加节点rmnode对象函数。

例子:G.Nodes返回一个列出图的节点属性的表。默认情况下,该表为空。

例子:G.Nodes.Names ={'蒙大拿','纽约','华盛顿','加州'}'通过添加变量将节点名添加到图中的名字节点表格

例子:G.Nodes.WiFi = logical([1 0 0 1 1])添加变量无线网络节点表格此属性指定某些机场具有无线互联网覆盖。

数据类型:桌子

对象的功能

全部展开

addedge 向图中添加新边
rmedge 从图中删除边
添加节点 向图形中添加新节点
rmnode 从图中移除节点
芬德奇 在图中定位边
findnode 在图中定位节点
努梅德斯 图中的边数
numnodes 图中的节点数
edgecount 两个节点之间的边数
reordernodes 重新排序图节点
子图 提取子图
bfsearch 图广度优先搜索
dfsearch 深度优先图搜索
中心性 测量节点的重要性
康康普 连通图组件
biconncomp 双连通图组件
bctree Block-cut树图
maxflow 图中最大流量
明斯潘特里酒店 图的最小生成树
isisomorphic 确定两个图是否同构
同构 计算两个图之间的同构
地震乘数 确定图是否有多条边
简化 将多重图简化为简单图
shortestpath 两个单节点之间的最短路径
最短路径树 节点的最短路径树
距离 所有节点对的最短路径距离
邻接 图的邻接矩阵
发病率 图关联矩阵
拉普拉斯算子 图拉普拉斯算子的矩阵
学位 图节点度
邻居 图节点的邻域
最近的 半径内最近邻
outedges 节点出边
情节 绘制图的节点和边

例子

全部崩溃

创建一个具有三个节点和两条边的对象。一条边在节点1和节点2之间,另一条边在节点1和节点3之间。

G =图([1 1],[2 3])
G=具有以下属性的图形:边:[2x1表]节点:[3x0表]

查看图形的边表。

G.Edges
ans =2×1表EndNodes ________ 1 2 1 3

将节点名称添加到图中,然后查看新的节点表和边表。每个边的结束节点现在使用它们的节点名来表示。

G.Nodes.Name={“一个”“B”“C”} ';G.Nodes
ans =3×1表名称_____ {'A'} {'B'} {'C'}
G.Edges
ans =2×1表EndNodes ______________ {'A'} {'B'} {'A'} {'C'}

中可以添加或修改额外的变量节点边缘表来描述图节点或边的属性。但是,不能通过修改这些表直接更改图中的节点或边的数量。相反,使用addedgermedge添加节点,或rmnode用于修改图形中节点或边的数量的函数。

例如,在节点2和节点3之间的图中添加一条边,然后查看新的边列表。

G = addedge (G, 2、3)
G =具有属性的图:Edges: [3x1 table] Nodes: [3x1 table]
G.Edges
ans =3×1表EndNodes  ______________ {' 一个“}{B} {A} {' C '} {B} {' C '}

建立一个对称邻接矩阵,一个,这将创建一个顺序为4的完整图。使用逻辑邻接矩阵创建一个没有权重的图。

A=一(4)-诊断([1])
一个=4×40 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
图G = (~ = 0)
G = graph with properties: Edges: [6x1 table] Nodes: [4x0 table]

查看图形的边缘列表。

G.Edges
ans =6×1表EndNodes ________ 1 2 1 3 1 4 2 3 2 4 3 4

建立上三角邻接矩阵。

A=triu(魔法(4))
一个=4×416 2 3 13 0 11 10 8 0 0 6 12 0 0 0

使用邻接矩阵创建一个带有指定节点的图。指定“omitselfloops”的对角线上的项一个,并指定类型作为“上”表明一个是上三角。

名称= {“α”“β”“伽马”“三角洲”};图G =(名称,“上”“omitselfloops”
G=具有以下属性的图形:边:[6x2表]节点:[4x1表]

查看边缘和节点信息。

G.Edges
ans =6×2表EndNodes重量  ______________________ ______ {' α’}{“beta”}2{“α”}{“伽马”}3{“α”}{“δ”}13{“beta”}{“伽马”}10{“beta”}{“δ”}8{“伽马”}{“δ”}12
G.Nodes
ans =4×1表的名字  _________ {' α’}{“beta”}{“伽马”}{“δ”}

使用每个边的结束节点列表创建并绘制一个立方体图。

S = [1 1 1 2 2 3 3 4 5 5 6 7];T = [2 4 8 3 7 4 6 5 6 8 7 8];图G = (s, t)
G =具有属性的图形:Edges: [12x1 table] Nodes: [8x0 table]
地块(G)

使用每条边的结束节点列表创建并绘制立方体图。指定节点名称和边权重作为单独的输入。

S = [1 1 1 2 2 3 3 4 5 5 6 7];T = [2 4 8 3 7 4 6 5 6 8 7 8];权重= [10 10 1 10 1 10 1 1 12 12 12 12];名称= {“一个”“B”“C”' D '“E”“F”‘G’“H”};图G = (s t重量、名称)
G=带属性的图形:边:[12x2表格]节点:[8x1表格]
图(G,“EdgeLabel”,G.边缘重量)

使用每个边的结束节点列表创建一个加权图。指定图形应该总共包含10个节点。

S = [1 1 1 1];T = [2 3 4 5 6];权重= [5 5 5 6 9];图G = (s t重量、10)
G =具有属性的图:Edges: [5x2 table] Nodes: [10x0 table]

画出图。多余的节点与主连接组件断开连接。

地块(G)

创建一个空的图形对象,G

G=图形;

向图中添加三个节点和三条边。中相应的条目年代t定义图形边的结束节点。addedge如果适当的节点还没有出现,则自动将它们添加到图中。

s=[1 2 1];t=[23];G=加差(G,s,t)
G = graph with properties: Edges: [3x1 table] Nodes: [3x0 table]

查看边缘列表。每一行描述图中的一条边。

G.Edges
ans =3×1表结束节点uuuuuuuuuuuuuuuuu2 3

为了获得最佳性能,可以使用单个调用一次性构造图.对于大型图,在循环中添加节点或边可能会很慢。

创建包含变量的边表EndNodes重量,及代码.然后创建一个包含变量的节点表的名字国家. 每个表中的变量指定图形节点和边的属性。

s=[1 2 3];t=[2 3 4];权重=[6.5 7 11.5 17];代码={“1/44”“1/49”“1/33”“44/49”'49/33'} ';EdgeTable = table([s' t'],weight,code,...“VariableNames”,{“EndNodes”“重量”“代码”})
EdgeTable =5×3表端点权重码{'1/44'}1 3 6.5{'1/49'}1 4 7{'1/33'}2 3 11.5{'44/49'}3 4 17{'49/33'}
名称= {“美国”“GBR”“德吴”联邦铁路局的}'; 国家/地区代码={' 1 '“44”“49”“33”} ';NodeTable =表(名称、country_code“VariableNames”,{“名字”“国家”})
无可辩驳=4×2表命名国家{'1'}{'GBR'}{'44'}{'DEU'}{'49'}{'FRA'}{'33'}

使用节点和边表创建一个图。使用国家代码作为节点和边缘标签绘制图。

G=图形(边表、节点表);图(G,“NodeLabel”G.Nodes.Country,“EdgeLabel”G.Edges.Code)

兼容性考虑

全部展开

R2018a中行为改变

R2015b中引入