主要内容

有向图

图与定向边缘

描述

有向图对象代表指示图,定向连接节点的边。在您创建一个有向图对象,您可以了解更多关于图像通过使用对象函数来执行查询对象。例如,您可以添加或删除节点或边缘,确定两个节点之间的最短路径,或定位一个特定的节点或边缘。

G =有向图([1],[2 3])e = G。边缘G = addedge (G, 2、3)G= addnode(G,4) plot(G)

创建

描述

例子

G=有向图创建一个空有向图对象,G,没有节点或边缘。

例子

G=有向图(一个)创建一个使用方有向图邻接矩阵,一个

  • 对于逻辑邻接矩阵,图没有边。

  • 逻辑邻接矩阵,图的边的权值。每个非零项的位置一个指定图形的边缘,边缘的重量等于输入的值。例如,如果(2,1)= 10,然后G包含一个边缘节点2和节点1的重量10。

例子

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

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

例子

G=有向图(一个,___,' omitselfloops ')忽略了对角线的元素一个没有任何self-loops并返回一个图。您可以使用任何输入参数的组合在以前的语法。

例子

G=有向图(s t)指定了有向图的边(s, t)成对代表源和目标节点。年代t可以指定节点指标或节点的名称。有向图各样的边缘G首先由源节点,然后通过目标节点。如果你有边缘属性相同的顺序年代t,使用语法EdgeTable G =有向图(s, t)通过在边缘属性使他们以同样的方式排序在结果图。

例子

G=有向图(s t,权重)还指定了边的权值的数组权重

例子

G=有向图(s t,权重,节点名)另外指定节点名使用特征向量的细胞数组或字符串数组,节点名年代t不是不能包含节点名节点名

G=有向图(s t,权重,NodeTable)指定节点名(可能还有其他节点属性)使用一个表,NodeTable。使用指定的节点名称的名字表变量。年代t不是不能包含节点名NodeTable

例子

G=有向图(s t,权重,全国矿工工会)图中指定的节点数量与数字标量全国矿工工会

G=有向图(s t,___,' omitselfloops ')不添加任何self-loops图。也就是说,任何k满足s (k) = = t (k)将被忽略。您可以使用任何输入参数的组合在以前的语法。

G=有向图(s t,EdgeTable,___)使用一个表来指定边缘而不是指定属性权重。的EdgeTable输入必须与每一行对应一个表中的元素年代t。指定边使用表变量重量

例子

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

例子

G=有向图(EdgeTable,NodeTable)另外指定了名称(可能还有其他属性)图的节点使用一个表,NodeTable

G=有向图(EdgeTable,___,' omitselfloops ')不添加self-loops图。也就是说,任何k满足EdgeTable.EndNodes (k, 1) = = EdgeTable.EndNodes (k, 2)将被忽略。您必须指定EdgeTable和选择可以指定NodeTable

输入参数

全部展开

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

非零的主对角线上的条目一个指定self-loops,或节点连接到自己的优势。使用“omitselfloops”输入选项来忽略对角条目。

例子:一个= [0 1 0;0 0 0;5 0 0)描述了一个包含3个节点的图和两条边。边从节点1到节点2的重量1从节点3,边缘节点1的重量5

数据类型:||逻辑

节点名称,指定为特征向量的细胞数组或字符串数组。节点名一定长度等于什么numnodes (G)它包含一个非空的,图中的每个节点的唯一名称。

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

数据类型:细胞|字符串

源和目标节点对,指数或节点名称指定为节点。有向图创建指导相应的节点之间的边年代t,必须是数字,或者都是特征向量,细胞阵列的特征向量,直言数组或字符串数组。在所有情况下,年代t必须有相同数量的元素。

  • 如果年代t是数字,然后对应图节点的索引。数字节点索引必须是正整数大于或等于1。

  • 如果年代t是细胞阵列的性格特征向量,向量,或字符串数组,然后指定节点的名称。的节点属性图的是一个包含一个表的名字变量节点名称,G.Nodes.Name

  • 如果年代t的类别,分类数组吗年代t作为图中节点的名称。这可以包括类别不元素年代t

  • 如果年代t指定多个相同的两个节点之间的边,然后结果是一个油印

这个表格展示了不同的方法来引用一个或多个节点通过他们的指数数字节点或节点名。

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

标量

例子:1

向量

例子:(1 2 3)

节点名称

特征向量

例子:“一个”

单元阵列的特征向量

例子:{“A”“B”“C”}

字符串标量

例子:“一个”

字符串数组

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

分类数组

例子:分类(“”)

分类数组

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

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

例子:G =有向图({“波士顿”“纽约”“华盛顿特区},{“纽约”的新泽西的匹兹堡})创建一个图有5个命名节点和三条边。

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

有向图商店的边的权值重量变量G.Edges属性表。添加或更改重量后创建一个图,你可以直接修改表变量,例如,G.Edges.Weight= [25 50 75]'

如果您指定权重作为一个空数组[],那么它将被忽略。

例子:2 G =有向图([1],[2 3],[100 - 200])创建一个包含3个节点的图和两条边。边的权重One hundred.200年

数据类型:|

图的节点数量,指定为一个积极的标量整数。全国矿工工会必须大于或等于最大的元素年代t

例子:2 G =有向图([1],[2 3],[],5)创建一个图有三个连接节点和两个孤立节点。

边缘信息的表。如果你不指定年代t,然后第一个变量EdgeTable需要一个两列的矩阵,单元阵列的特征向量,或字符串数组叫什么EndNodes定义图的边缘。边的权值,使用变量重量,因为这表变量名称使用一些图形功能。如果有一个变量重量,那么它必须是一个数字列向量。看到构建一个桌子上的更多信息。

创建一个图表后,查询边缘信息表使用G.Edges

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

数据类型:

表的节点信息。NodeTable可以包含任意数量的变量来描述属性图的节点。节点名称,使用变量的名字,因为这个变量名是用一些图形功能。如果有一个变量的名字,那么它必须是一个单元阵列特征向量数组或字符串在每一行中指定一个唯一的名称。看到构建一个桌子上的更多信息。

创建图形后,查询的节点信息表使用G.Nodes

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

数据类型:

属性

全部展开

边的图,作为一个表返回。在默认情况下这是一个——- - - - - -1表,图中边的数量。在边缘G.Edges.EndNodes由源节点排序第一,然后通过目标节点。

  • 添加新的边缘属性图,创建一个新的变量边缘表。

  • 从图,添加或删除边使用addedgermedge对象的功能。

例子:G.Edges返回一个表清单中的边缘图

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

例子:G.Edges.Weight= [10 20 30 55]'指定新边图。

例子:G.Edges。N或mWeight = G.Edges.Weight/sum(G.Edges.Weight)添加一个新的边缘属性包含边缘的归一化权重表。

数据类型:

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

  • 添加新节点属性图,创建一个新的变量节点表。

  • 从图,添加或删除节点使用addnodermnode对象的功能。

例子:G.Nodes返回一个表清单图的节点属性。默认情况下这个表是空的。

例子:G.Nodes.Name年代= {'Montana', 'New York', 'Washington', 'California'}'将节点名添加到图通过添加变量的名字节点表。

例子:G.Nodes。无线网络= logical([1 0 0 1 1]')添加变量无线网络节点表。这个属性指定某些机场无线网络覆盖。

数据类型:

对象的功能

全部展开

addedge 添加新边缘图
rmedge 把边缘从图
flipedge 反向边方向
addnode 添加新节点图
rmnode 删除节点图
findedge 定位在图
findnode 定位节点图
numedges 图的边数
numnodes 图中的节点数量
edgecount 两个节点之间的边数
reordernodes 重新排序图节点
子图 提取子图
中心 测量节点的重要性
toposort 有向无环图的拓扑秩序
transclosure 传递闭包
transreduction 减少传递
isdag 确定是否无环图
conncomp 连通图组件
冷凝 图凝结
maxflow 最大流量图
isisomorphic 判断两个图是同构的
同构 计算两个图形之间的同构
ismultigraph 确定图有多个边缘
简化 减少多重图简单的图
bfsearch 图广度优先搜索
dfsearch 图深度优先搜索
shortestpath 两个单节点之间的最短路径
shortestpathtree 最短路径树的节点
距离 所有节点对的最短路径距离
allpaths 找到两个图节点之间的所有路径
hascycles 确定图是否包含周期
allcycles 找到所有周期图
邻接 图的邻接矩阵
发病率 图的关联矩阵
入度 节点的入度
出度 学位的节点
前任 节点的前辈
继任者 节点的继任者
最近的 最近的邻居内半径
inedges 传入边缘节点
outedges 边从节点
情节 图的节点和边

例子

全部折叠

创建一个有向图对象有三个节点和三条边。一边从节点1到节点2,另一个从节点1到节点3,第三是从节点2节点1。

G =有向图([1 1 2],[2 3 1])
G =有向图的属性:边缘:[3 x1表]节点:[3 x0表)

查看表图的边缘。为有向图,第一列表示每条边的源节点,第二列表示目标节点。

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

节点名称添加到图表,然后查看新节点和边表。现在每条边的源和目标节点表示使用他们的节点名称。

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

您可以添加或修改额外变量节点边缘表来描述属性图的节点或边缘。然而,您不能直接更改图中节点或边的数量通过修改这些表。相反,使用addedge,rmedge,addnode,或rmnode功能修改节点或边的数量在一个图。

例如,添加一个边缘节点2和3之间的图和列表视图的新优势。

G = addedge (G, 2、3)
G =有向图的属性:边缘:[4 x1表]节点:[3 x1表)
G.Edges
ans =4×1表{A} EndNodes * * * {B} {A} {' C '} {B} {A} {B} {' C '}

创建一个对称邻接矩阵,一个,创建一个完整的有向图4所示。使用一个逻辑邻接矩阵来创建一个图没有重量。

= 1(4)-诊断接头([1 1 1 1])
一个=4×40 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
~ = 0 G =有向图()
G =有向图的属性:边缘:x1表[12]节点:[4 x0表)

查看图的边列表。

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

创建一个邻接矩阵。

一个=魔法(4);(> 10)= 0
一个=4×40 2 3 0 5 0 10 8 9 7 6 0 4 0 0 1

创建一个名为节点的图,使用邻接矩阵。指定“omitselfloops”忽略的对角线上的条目一个

名称= {“α”“β”“伽马”“δ”};G =有向图(一个,名字,“omitselfloops”)
G =有向图的属性:边缘:[8 x2表]节点:[4 x1表)

查看边和节点信息。

G.Edges
ans =8×2表EndNodes重量______________________ ______{“α”}{“beta”} 2{“α”}{“伽马”}3 {“beta”}{“α”}5 {“beta”}{“伽马”}10 {“beta”}{“δ”}8{“伽马”}{“α”}9{“伽马”}{“beta”} 7{“δ”}{“α”}4
G.Nodes
ans =4×1表名字_____{“α”}{“beta”}{“伽马”}{“δ”}

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

s = [1 1 1 2 3 2 3 4 5 5 6 7);t = [2 4 8 3 7 4 6 5 6 8 7 8];G =有向图(s, t)
G =有向图的属性:边缘:x1表[12]节点:[8 x0表)
情节(G,“布局”,“力”)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

创建和绘制一个立方体图使用每个边缘的结束节点的列表。指定节点名和边作为单独的输入。

s = [1 1 1 2 3 2 3 4 5 5 6 7);t = [2 4 8 3 7 4 6 5 6 8 7 8];重量= [10 10 1 1 1 1 12 12 12 12);名称= {“一个”“B”“C”' D '“E”“F”‘G’“H”};G =有向图(s t重量、名称)
G =有向图的属性:边缘:[12 x2表]节点:x1表[8]
情节(G,“布局”,“力”,“EdgeLabel”G.Edges.Weight)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

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

s = (1 1 1 1 1);t = (2 3 4 5 6);重量= (5 5 5 6 9);G =有向图(s t重量、10)
G =有向图的属性:边缘:[5 x2表]节点:[10 x0表)

画出图。额外的节点与主连接组件。

情节(G)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

创建一个空有向图对象,G

G =有向图;

添加三个节点和三条边的图。相应的条目年代t定义源和目标节点的边。addedge自动添加适当的节点图,如果他们不是已经存在。

s = [1 2 1];t = [2 3 3];G = addedge (G s t)
G =有向图的属性:边缘:[3 x1表]节点:[3 x0表)

视图列表。每一行描述了图像的边缘。

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

为了获得最佳的性能,构造图一次性使用单一调用有向图。添加节点或边缘在一个循环中可以缓慢的大型图表。

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

s = [1 1 1 2 2 3];t = [2 3 4 3 4 4];重量= (6 6.5 7 11.5 12 17)';代码= {“1/44”“1/49”“1/33”“44/49”“44/33”“49/33”}';EdgeTable =表([s ' t '],重量、代码,“VariableNames”,{“EndNodes”“重量”“代码”})
EdgeTable =6×3表EndNodes重量代码________ ______ _____ 1 2 6 {“1/44”}1 3 6.5 {“1/49”}1 4 7 {“1/33”}2 3 11.5 {“44/49”}2 4 12 {“44/33”}3 4 17 {“49/33”}
名称= {“美国”“GBR”“德吴”联邦铁路局的}';country_code = {' 1 '“44”“49”“33”}';NodeTable =表(名称、country_code“VariableNames”,{“名字”“国家”})
NodeTable =4×2表名字国家_________ _________{‘美国’}{1}{的GBR}{“44”}{‘德吴}{“49”}{联邦铁路局的}{“33”}

使用节点和边表创建一个图表。画出图使用节点和边缘的国家代码标签。

G =有向图(EdgeTable NodeTable);情节(G,“NodeLabel”G.Nodes.Country,“EdgeLabel”G.Edges.Code)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

扩展功能

版本历史

介绍了R2015b

全部展开