有向图

用图表向边

描述

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

G = digraph([1 1], [2 3]) e = G. edges G = addedge(G,2,3) G = addnode(G,4) plot(G)

创建

描述

例子

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

例子

G有向图=(一个)使用方形邻接矩阵创建一个加权有向图,一个。在每个非零项的位置一个指定了图中的边,并且边的权重等于项的值。例如,如果A(2,1)= 10,然后G包含一条权值为10的从节点2到节点1的边。

例子

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

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

例子

G有向图=(一个,___'omitselfloops')忽略的对角元素一个并返回,没有任何自我循环的图表。您可以在前面的语法使用任何输入参数的组合。

例子

G有向图=(S,T)指定有向图的边缘(s, t)在对表示源和目标节点。年代t可以指定节点索引或节点名称。

例子

G有向图=(S,T,权重)还指定与阵列边权权重

例子

G有向图=(S,T,权重,节点名)使用字符载体或字符串数​​组的单元阵列进一步指定节点名称,节点名年代t不能包含不在节点名称节点名

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

例子

G有向图=(S,T,权重,NUM)指定用数字标量图中的节点的数目NUM

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

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

例子

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

例子

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

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

输入参数

展开全部

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

的主对角线上的非零项一个指定自循环,或用边连接自己的节点。使用“omitselfloops”输入选择忽略对角线项。

例:A = [0 10 0;0 0 0;5 0 0)描述具有三个节点和两条边的图。从节点1到节点2的边的权值为1而从节点3到节点1的边的权值为5

数据类型:||逻辑

节点名,指定为字符向量或串阵列的单元阵列。节点名长度必须等于numnodes(G)因此,它包含了图中每个节点的非空,唯一的名称。

例:G =有向图(A,{ 'N1', 'N2', 'N3'})为一个3×3的邻接矩阵指定三个节点名称,一个

数据类型:细胞|字符串

源和目标节点对,指定为节点索引或节点名称。有向图中对应节点之间创建有向边年代t,这必须都是数字的,或两者是字符向量,特征向量,分类阵列,或串阵列的单元阵列。在所有情况下,年代t必须有相同数目的元素。

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

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

  • 如果年代t是分类阵列,则类别年代t被用作在图中的节点名称。这可以包括不在元件类别年代要么t

  • 如果年代t指定相同的两个节点之间的多个边缘,则结果为一复印印刷

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

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

纯量

例:1

向量

例:(1 2 3)

节点名称

特征向量

例:“一个”

字符向量的单元阵列

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

字符串标量

例:“一种”

String数组

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

分类数组

例:分类(“”)

分类数组

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

例:G =有向图([1 2 3],[2 4 5])创建具有五个节点和三个边缘的曲线图。

例:({'波士顿' ' '纽约' '华盛顿特区},{“纽约”“新泽西”“匹兹堡”})创建五个命名节点和三个边的图。

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

有向图存储边权作为重量在变量G.Edges属性表。要在创建图后添加或更改权重,可以直接修改表变量,例如,G.Edges.Weight= [25 50 75]'

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

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

数据类型:|

图中的节点,指定为正标量整数的数目。NUM必须大于或等于最大元素年代t

例:G =有向图([1 2],[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表,是图中的边缘的数量。

  • 到新的边缘属性添加到图中,创建在一个新的可变边缘表格

  • 若要从图中添加或删除边,请使用addedge要么rmedge对象的功能。

例: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是图中的节点的数目。

  • 属性中创建一个新变量,以向图中添加新的节点属性节点表格

  • 从图表添加或删除节点,使用addnode的要么rmnode对象的功能。

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

例:G.Nodes.Name年代= {'Montana', 'New York', 'Washington', 'California'}'通过添加变量向图中添加节点名名称节点表格

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

数据类型:

对象的功能

展开全部

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

例子

全部收缩

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

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

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

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

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

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

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

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

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

创建一个对称邻接矩阵,一个中,创建的顺序4.使用一个逻辑邻接矩阵来创建没有重量的曲线图的完整向图。

A =酮(4) -  DIAG([1 1 1 1])
一个=4×40 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
~ = 0 G =有向图()
G =有向图具有属性:边缘:[12X 1表]节点:[4x0表]

查看图的边列表。

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

创建一个邻接矩阵。

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

使用邻接矩阵创建一个具有指定节点的图。指定“omitselfloops”忽略对角线上的元素一个

名称= {'α'“β”“伽马”'三角洲'};G =有向图(一个,名字,“omitselfloops”)
G =有向图具有属性:边缘:[8X2表]节点:[4X1表]

查看边缘和节点信息。

G.Edges
ANS =8×2表EndNodes重量______________________ ______ { '阿尔法'} { '测试'} 2 { '阿尔法'} { 'γ'} 3 { '测试'} { '阿尔法'} 5 { '测试'} { 'γ'} 10 {”的β”} { '增量'} 8 { 'γ'} { '阿尔法'} 9 { 'γ'} { '测试'} 7 { '增量'} { '阿尔法'} 4
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 =有向图具有属性:边缘:[12X 1表]节点:[8X0表]
情节(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];weights = [10 10 1 10 1 10 1 1 12 12 12 12 12 12 12];名称= {“一个”“B”“C”' D ''E''F''G''H'};G =有向图(s t重量、名称)
G =有向图具有属性:边缘:[12X2表]节点:[8X1表]
情节(G,“布局”,'力',“EdgeLabel”G.Edges.Weight)

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

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

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

图(G)

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

G =有向图;

添加三个节点和三个边的图形。在相应的条目年代t定义边缘的源节点和目标节点。addedge如果不存在适当的节点,则自动将它们添加到图中。

S = [1 2 1];T = [2 3 3];G = addedge(G,S,T)
G =有向图具有属性:边缘:[3X1表]节点:[3x0表]

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

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

为了获得最佳性能,结构图表一次全部使用单一呼叫有向图。对于大型图来说,在循环中添加节点或边会很慢。

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

s = [1 1 1 2 2 3];t = [2 3 4 3 4 4];weights = [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表名称国家_______ { 'USA'} { '1'} { 'GBR'} { '44'} { '申'} { '49'} { 'FRA'} { '33'}

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

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

兼容性注意事项

展开全部

行为R2018a改变

介绍了R2015b