主要内容

allpaths

找出两个图节点之间的所有路径

描述

例子

路径= allpaths (G年代t返回图中的所有路径G从源节点开始年代并在目标节点结束t.输出路径单元格数组是否包含每个单元格的内容路径{k}列出路径上的节点。

例子

路径edgepaths) = allpaths (G年代t也返回每条路径上的边年代t.输出edgepaths单元阵列在哪里edgepaths {k}给出相应路径上的边,路径{k}

例子

___) = allpaths (G年代t名称,值使用一个或多个名称-值参数指定其他选项。您可以在前面的语法中使用任何输出参数组合。例如,可以指定MaxNumPaths以及限制返回路径数量的标量。

例子

全部折叠

为一个有四个节点的完整图创建一个邻接矩阵,然后根据邻接矩阵创建一个无向图。画出图。

一个= 1 (4);图G =(一个);情节(G)

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

计算图中从节点1开始到节点3结束的所有路径。

路径= allpaths (G, 1, 3)
路径=5×1单元阵列{(1 2 3)} {[1 2 4 3]} {[1 3]} {[1 4 2 3]} {[1 4 3]}

的第二个输出参数allpaths返回沿每条路径的边。这对于多重图特别有用,因为在多重图中,需要边索引来唯一地标识路径上的边。

创建一个有8个节点和18条边的有向多图。为节点指定名称。绘制带有标记的节点和边的图。

S = [1 1 2 2 3 3 2 2 4 6 8 6 6 7 3 3 5 3];T = [2 3 1 3 2 1 4 4 6 2 6 7 8 8 5 5 7 7];名称= {“一个”“B”“C”' D '“E”“F”‘G’“H”};G =有向图(s t[],名称);p =情节(G,“EdgeLabel”1: numedges (G));

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

计算节点A和节点h之间的所有路径。指定两个输出参数也返回沿每条路径的边的索引。

(路径,edgepaths) = allpaths (G,“一个”“H”);

沿第一个路径查看节点和边缘。

路径{1}
ans =1 x6单元格{' a '} {' b '} {' c '} {' e '} {' g '} {' h '}
edgepaths {1}
ans =1×51 4 9 13 17

沿着第一个路径突出显示节点和边缘。

突出(p,“边缘”, edgepaths {1},“EdgeColor”“r”“线宽”, 1.5,“NodeColor”“r”“MarkerSize”6)

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

使用“MaxNumPaths”“MaxPathLength”,“MinPathLength”选项来限制返回的路径数量allpaths

为一个包含20个节点的完整图创建一个邻接矩阵。从邻接矩阵创建一个无向图,省略自循环。

一个= 1 (20);图G = (,“omitselfloops”);

由于图中的所有节点都连接到其他所有节点,图中任意两个节点(超过)之间有大量的路径1.7 e16天).因此,计算两个节点之间的所有路径是不可行的,因为结果不适合内存。计算从节点2到节点5的前10条路径。

paths1 = allpaths (G, 2、5、“MaxNumPaths”, 10)
paths1 =10×1单元阵列{(1 2 3 4 5)} {[2 1 3 4 6 5]} {(1 2 3 4 5 6 7)} {(1 2 3 4 5 6 7 8)} {(1 2 3 4 5 6 7 8 9]} {(1 2 3 4 5 6 7 8 9 10]} {(1 2 3 4 5 6 7 8 9 10 11]} {(1 2 3 4 5 6 7 8 9 10 11 12]} {(1 2 3 4 5 6 7 8 9 10 11 12 13]} {(1 2 3 4 5 6 7 8 9 10 11 12 13 14]}

现在计算节点2和节点5之间路径长度小于或等于2的前10条路径。

paths2 = allpaths (G, 2、5、“MaxNumPaths”10“MaxPathLength”, 2)
paths2 =10×1单元阵列{[2 1 5]}{[2 3 5]}{[2 4 5]}{【2 - 5】}{[2 6 5]}{[2 7 5]}{[2 8 5]}{[2 9 5]}{[2 10 5]}{[2 11 5]}

最后,计算节点2和节点5之间路径长度大于等于3的前10条路径。

paths3 = allpaths (G, 2、5、“MaxNumPaths”10“MinPathLength”3)
paths3 =10×1单元阵列{(1 2 3 4 5)} {[2 1 3 4 6 5]} {(1 2 3 4 5 6 7)} {(1 2 3 4 5 6 7 8)} {(1 2 3 4 5 6 7 8 9]} {(1 2 3 4 5 6 7 8 9 10]} {(1 2 3 4 5 6 7 8 9 10 11]} {(1 2 3 4 5 6 7 8 9 10 11 12]} {(1 2 3 4 5 6 7 8 9 10 11 12 13]} {(1 2 3 4 5 6 7 8 9 10 11 12 13 14]}

输入参数

全部折叠

输入图形,指定为有向图对象。使用创建无向图或有向图创建有向图。

例子:图G =(1、2)

例子:G =有向图([1,2],[2 3])

源和目标节点id,作为节点索引或节点名称的单独参数指定。

价值 例子
标量节点索引 1
字符向量节点名 “一个”
字符串标量节点名 “一个”

例子:allpaths (G, 2、5)计算节点2到节点5之间的所有路径。

例子:allpaths (G, node1, node2)计算命名节点之间的所有路径node1node2

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:allpaths (G s t ' MaxNumPaths ', 100)只返回按字典顺序排列的前100个结果。

最大路径数,由逗号分隔的对组成“MaxNumPaths”和一个非负整数标量。当两个节点之间的路径数量增长到足以达到内存限制时,此选项非常有用。您可以指定MaxNumPaths来限制返回的路径数allpaths这样结果就能在可用内存中保存。

例子:allpaths (G s t ' MaxNumPaths ', 100)

最大路径长度,由逗号分隔的对组成“MaxPathLength”和一个非负整数标量。该选项过滤返回的结果allpaths这样就不会返回长度大于指定限制的路径。路径的长度是由其中的边数来度量的,而忽略了边的权值。

要查找具有一定长度范围的路径,请同时指定两者“MaxPathLength”“MinPathLength”.要查找具有精确指定长度的路径,请为两者指定相同的值“MaxPathLength”“MinPathLength”

例子:allpaths (G s t MaxPathLength, 4)返回长度小于或等于4的路径。

例子:allpaths (G s t MinPathLength, 3,‘MaxPathLength’,5)返回长度为3、4或5的路径。

最小路径长度,由逗号分隔的对组成“MinPathLength”和一个非负整数标量。该选项过滤返回的结果allpaths这样就不会返回长度小于指定限制的路径。路径的长度是由其中的边数来度量的,而忽略了边的权值。

要查找具有一定长度范围的路径,请同时指定两者“MaxPathLength”“MinPathLength”.要查找具有精确指定长度的路径,请为两者指定相同的值“MaxPathLength”“MinPathLength”

例子:allpaths (G s t ' MinPathLength ', 2)返回长度大于等于2的路径。

例子:allpaths (G s t MinPathLength, 3,‘MaxPathLength’,5)返回长度为3、4或5的路径。

输出参数

全部折叠

指定节点之间的路径,作为单元格数组返回。每个元素路径{k}包含位于指定源节点和目标节点之间的一条路径上的节点。路径按照字典顺序返回。源节点和目标节点年代t指定相同的节点,然后按照约定allpaths返回包含该节点的单个路径。如果节点t从节点不可达年代,然后路径是空的。

输入项的数据类型路径这取决于方式年代t指定:

  • 如果年代t指定为数字节点索引,则每个元素路径{k}是节点索引的数值向量。

  • 如果年代t指定为字符串节点名,则每个元素路径{k}是节点名称的字符串数组。

  • 如果年代t指定为字符向量节点名,则每个元素路径{k}是字符向量节点名称的单元格数组。

每条路径的边,作为单元格数组返回。每个元素edgepaths {k}包含沿相应路径的边的指标,路径{k}.如果节点t从节点不可达年代,然后edgepaths是空的。

提示

  • 图中的路径数量很大程度上取决于图的结构。对于某些图结构,路径的数量可以随着节点的数量呈指数增长。例如,一个包含12个节点的完整图图G = ((12))包含在任意两个节点之间的近1000万条路径。使用MaxNumPathsMaxPathLength,MinPathLength用于控制输出的名称-值对allpaths在这些情况下。

介绍了R2021a