dig

与定向边缘的图表

描述

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

G =有向图([1 1],[2 3])e = G =边G = adddeg (G,2,3) G = addnode(G,4) plot(G)

创建

描述

例子

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

例子

G= digraph(一个使用方形邻接矩阵创建加权定向图,一个.每个非零条目的位置一个指定图形的边缘,边缘的权重等于条目的值。例如,如果a(2,1)= 10,然后G包含从节点2到节点1的边,权值为10。

例子

G= digraph(一个Nodenames.另外指定节点名称。元素的数量Nodenames.必须等于尺寸(a,1)

G= digraph(一个NodeTable使用表格指定节点名称(以及可能的其他节点属性),NodeTable.表必须具有相同数量的行一个.使用表变量指定节点名称名称

例子

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

例子

G= digraph(英石指定有向图形边缘(s, t)成对表示源和目标节点。年代t可以指定节点索引或节点名称。

例子

G= digraph(英石重量还指定了与数组的边缘权重重量

例子

G= digraph(英石重量Nodenames.此外,使用字符向量或字符串数​​组的单元数组指定节点名称,Nodenames.年代t不能包含不在的节点名称Nodenames.

G= digraph(英石重量NodeTable使用表格指定节点名称(以及可能的其他节点属性),NodeTable.属性指定节点名称名称表变量。年代t不能包含不在的节点名称NodeTable

例子

G= digraph(英石重量数字使用数字标量指定图表中的节点数数字

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

G= digraph(英石eDébable.___使用表指定边缘属性而不是指定重量.的eDébable.输入必须是一个表,其中每个对应的元素对年代t.使用表变量指定边的权重重量

例子

G= digraph(eDébable.使用表格eDébable.定义图形。使用此语法,第一个变量eDébable.必须命名endnode.,它必须是定义图形边缘列表的两列阵列。

例子

G= digraph(eDébable.NodeTable另外,使用表格指定图形节点的名称(和可能的其他属性),NodeTable

G= digraph(eDébable.___,'omitselfloops')不向图中添加自循环。也就是说,任何k满足eDgetable.endnodes(k,1)== Edgetable.endnodes(k,2)将被忽略。您必须指定eDébable.并且可选择可以指定NodeTable

输入参数

展开全部

邻接矩阵,指定为满或稀疏,数字矩阵。参赛作品一个在图形的节点之间指定连接(边缘)的网络。每个非零条目的位置一个指定两个节点之间的边缘。该条目的值提供了边缘权重。逻辑邻接矩阵导致一个未加权的图表。

主要对角线上的非零条目一个指定自我环,或通过边与自身相连的节点。使用“omitselfloops”输入选项以忽略对角线条目。

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

数据类型:单身的|双倍的|逻辑

节点名称,指定为字符向量或字符串数​​组的单元格数组。Nodenames.必须具有等于的长度numnodes(g)这样它包含图表中每个节点的非空白唯一名称。

例子:g = digraph(a,{'n1','n2','n3'})为3 × 3邻接矩阵指定三个节点名,一个

数据类型:细胞|细绳

源节点对和目标节点对,指定为节点索引或节点名。dig在相应节点之间创建有关边缘年代t,它必须是数字,也必须是字符向量,字符向量,分类阵列或字符串数​​组的单元格阵列。在所有情况下,年代t必须具有相同数量的元素。

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

  • 如果年代t是字符向量,字符向量或字符串阵列的单元格阵列,然后它们为节点指定名称。的节点图表的属性是包含a的表名称变量带有节点名,g.nodes.name.

  • 如果年代t是分类阵列,然后是类别年代t用作图中的节点名称。这可以包括不属于元素的类别年代要么t

  • 如果年代t在同一个两个节点之间指定多个边缘,那么结果是一个多金属

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

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

标量子

例子:1

向量

例子:(1 2 3)

节点名称

特征向量

例子:'一种'

字符向量的单元格阵列

例子:{'a''b''c'}

字符串标量

例子:“一种”

字符串数组

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

分类阵列

例子:分类(“”)

分类阵列

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

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

例子:g = digraph({'boston''''华盛顿D.C'},{'纽约'''新泽西州''匹兹堡'})创建具有五个名为Nodes和三个边的图形。

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

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

如果您指定重量作为空数组[],然后忽略它。

例子:G = Digraph([1 2],[2 3],[100 200])创建具有三个节点和两个边的图形。边缘有重量100.200.

数据类型:单身的|双倍的

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

例子:G =有向图([1,2],[2,3],[],5)创建具有三个连接节点和两个隔离节点的图形。

边缘信息表。如果您未指定年代t,然后是第一个变量eDébable.需要是双列矩阵,字符向量的单元阵列,或称为字符串数组endnode.这定义了图形的边。对于边的权值,使用变量重量,由于某些图形功能使用此表变量名称。如果有一个变量重量,然后它必须是数字列向量。看桌子有关构造表的更多信息。

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

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

数据类型:桌子

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

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

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

数据类型:桌子

输出参数

展开全部

定向图形,作为一个返回dig目的。

特性

展开全部

图的边缘,作为表返回。默认情况下,这是一个-经过-1表,是图中的边的数量。

  • 要在图形中添加新的边缘属性,请在此处创建一个新变量边缘桌子。

  • 从图中添加或删除边缘,使用要么rmedge.对象功能。

例子:G.Edges.返回列出图中边缘的表

例子:G.edges.weight.返回边缘权重的数字矢量。

例子:G.edges.weight = [10 20 30 55]'指定图形的新边缘权重。

例子:G.edges.normweight = G.edges.weight / Sum(G.edges.weight)将新的Edge属性添加到包含边缘归一化重量的表中。

数据类型:桌子

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

  • 要在图形中添加新节点属性,请在此处创建一个新变量节点桌子。

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

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

例子:G.Nodes.Names ={'蒙大拿','纽约','华盛顿','加州'}'添加变量将节点名称添加到图表中名称到了节点桌子。

例子:g.nodes.wifi =逻辑([1 0 0 1 1]')添加变量无线上网到了节点桌子。此属性指定某些机场具有无线互联网覆盖范围。

数据类型:桌子

对象的功能

展开全部

向图中添加新边
rmedge. 从图中删除边缘
逃脱 反向边缘方向
addnode. 将新节点添加到图表
rmnode. 从图中删除节点
查找结识 在图中找到边缘
findnode 在图中找到节点
numedges. 图中的边数
numnodes. 图中的节点数量
edgecount 两个节点之间的边数
reordernodes. 重新排序图节点
sub 提取子图
BFSearch. 宽度第一图搜索
dfsearch. 深度第一图搜索
居民 测量节点重要性
TopoSort. 定向非循环图的拓扑顺序
跨越 传递关闭
缩回 转化减少
isdag. 确定图是否是无循环的
Conncomp. 连接的图形组件
缩合 图表凝结
maxflow. 图中最大流量
isisomorphic 确定两个图是否同构
同构 计算两个图之间的构态
是多药物 确定图是否有多个边缘
简化 将多重图简化为简单图
最短的路径 两个单节点之间的最短路径
缺点 节点的最短路径树
距离 所有节点对的最短路径距离
邻接 图形邻接矩阵
发病率 图形入射矩阵
印度人 节点的程度
rownegree. 节点的out度
前辈们 节点的前辈
继任者 节点后继者
最近的 半径内最近的邻居
自我修女 向节点传入边缘
outedges 来自节点的外线
情节 绘图图节点和边缘

例子

全部收缩

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

G = Digraph([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'} {'a'} {'c'} {'b'} {'b'} {'a'}

中可以添加或修改额外的变量节点边缘要描述图形节点或边缘的属性的表。但是,您无法通过修改这些表来直接更改图表中的节点或边缘数。相反,使用rmedge.addnode., 要么rmnode.用于修改图形中的节点或边的数量。

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

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

创建一个对称邻接矩阵,一个,它创建了完整的订单4图表。使用逻辑邻接矩阵来创建没有权重的图形。

A = =(4) -  DIAG([1 1 1 1])
一个=4×4.0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
g = digraph(a = 0)
g =带有属性的数字:边缘:[12x1表]节点:[4x0表]

查看图形的边缘列表。

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

创建邻接矩阵。

a =魔术(4);a(a> 10)= 0
一个=4×4.0 2 3 0 5 0 10 8 9 7 6 0 4 0 0

使用邻接矩阵创建具有命名节点的图形。指定“omitselfloops”的对角线上的项一个

名称= {'α'“β”“伽马”'三角洲'};g = digraph(a,名称,“omitselfloops”
g =带有属性的数字:边缘:[8x2表]节点:[4x1表]

查看边缘和节点信息。

G.Edges.
ans =.8×2表Endnodes重量______________________ ______ {'alpha'} {'beta'} 2 {'alpha'} 3 {'beta'} {'alpha'} {'alpha'} 5 {'beta'} {'gamma'} 10 {''beta'} {'delta'} 8 {'伽玛'} {'alpha'} 9 {'gamma'} {'beta'} 7 {'delta'} {'alpha'} 4
G.Nodes
ans =.4×1表姓名___p______ {'alpha'} {'beta'} {'gamma'} {'delta'}

使用每个边缘的结束节点列表创建和绘制多维数据集图。

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 = digraph(s,t)
g =带有属性的数字:边缘:[12x1表]节点:[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];重量= [10 10 1 10 11 10 11 11 12 12 12 12];名称= {'一种''B''C''D''e''F''G''H'};g = digraph(s,t,权重,名称)
g =带有属性的数字:边缘:[12x2表]节点:[8x1表]
情节(G,“布局”'力量'“EdgeLabel”,g.edges.weight)

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

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

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

情节(g)

创建一个空的数字对象,G

g =数字化;

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

s = [1 2 1];t = [2 3 3];g = Accorltge(g,s,t)
g =带有属性的数字:边缘:[3x1表]节点:[3x0表]

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

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

为了最佳性能,使用单个呼叫一次性地构造图形dig.在循环中添加节点或边沿对于大图来说可以慢。

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

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'} ';eDérable=表([s't'],权重,代码,......'variablenames',{'endnodes''重量''代码'})
Edgetable =.6×3表Endnode权重________ ________________ 1 2 6 {'1/44'} 1 3 6.5 {'1/49'} 2 3 11.5 {'44 / 49'} 2 4 12 {'44 / 33'} 3 4 17 {'49 / 33'}
名称= {'美国''GBR''deu'联邦铁路局的} ';country_code = {' 1 '“44”“49”“33”} ';NodeTable =表(名称、country_code'variablenames',{“名字”“国家”})
nodetable =.4×2表姓名国家_______ ________________________'1'} {'44'{'44'} {'49'} {'49'} {'49'}

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

G =有向图(EdgeTable NodeTable);情节(G,'nodelabel',g.nodes.country,“EdgeLabel”,g.edges.code)

兼容性考虑因素

展开全部

R2018a中行为改变

在R2015B中介绍