文档帮助中心文档
找到所有周期图
周期= allcycles (G)
[周期,edgecycles] = allcycles (G)
(___]= allcycles (G、名称、值)
例子
周期= allcycles (G)返回所有周期在指定的图形。输出周期是一个单元阵列,每个单元格的内容周期{k}列出节点形成一个循环。
周期
G
周期{k}
(周期,edgecycles)= allcycles (G)在每个周期也返回边缘。输出edgecycles是一个单元阵列在哪里edgecycles {k}给出了边缘在相应的周期,周期{k}。
(周期,edgecycles)= allcycles (G)
edgecycles
edgecycles {k}
(___)= allcycles (G,名称,值)使用一个或多个名称参数指定附加选项。您可以使用任何的输出参数组合在以前的语法。例如,您可以指定MaxNumCycles和一个标量来限制返回的周期数。
(___)= allcycles (G,名称,值)
名称,值
MaxNumCycles
全部折叠
与九节点创建一个有向图。画出图。
s = [1 2 3 5 6 5 4 6 8 9 8 7];t = [2 3 5 6 5 4 2 1 9 8 7 4];G =有向图(s, t);情节(G)
计算图中所有的周期。
周期=5×1单元阵列{[1 2 3 6 5 4]}{[1 2 3 6 9 8 5 4]}{[1 2 3 6 9 8 7 4]}{[2 3 6 5]}{[2 3 6 9 8 5]}
第二个输出参数allcycles返回包含在每个周期的边缘。这对于油印尤其有用,因为所需的边缘指数唯一地标识边缘在每个周期。
allcycles
创建一个导演油印有八个节点和18边缘。指定节点的名称。绘制图形是贴有标签的节点和边。
s = [1 1 2 2 3 3 2 2 4 6 8 6 5 6 7 3 3 3];t = [2 3 1 2 3 1 4 4 5 6 2 6 7 8 8 5 7 7];名称= {“一个”,“B”,“C”,' D ',“E”,“F”,‘G’,“H”};G =有向图(s t[],名称);p =情节(G,“EdgeLabel”1:numedges (G));
计算图中所有的周期。指定两个输出参数也返回边缘指数边缘在每个周期。
[周期,edgecycles] = allcycles (G);
查看节点和边在第五周期。
周期{5}
ans =1 x7单元格{A} {' C '} {“E”} {‘G’} {' H '} {' F '} {B}
edgecycles {5}
ans =1×72 9 13 17 18 14 3
强调了节点和边在第五周期。
突出(p,“边缘”,edgecycles {5},“EdgeColor”,“r”,“线宽”,1.5,“NodeColor”,“r”,“MarkerSize”6)
使用“MaxNumCycles”,“MaxCycleLength”,“MinCycleLength”选项来限制返回的周期的数量allcycles。
“MaxNumCycles”
“MaxCycleLength”
“MinCycleLength”
创建一个完全图的邻接矩阵与20节点。创建一个无向图的邻接矩阵,省略self-loops。
一个= 1 (20);图G = (,“omitselfloops”);
从图中的节点都连接到所有其他节点,图中有大量的周期(超过1.7 e17)。因此,它是不可行的计算所有的周期自结果将不适合在内存中。相反,计算前10周期。
1.7 e17
cycles1 = allcycles (G,“MaxNumCycles”,10)
cycles1 =10×1单元阵列{(1 2 3)}{(1 2 3 4)}{(1 2 3 4 5)}{(1 2 3 4 5 6)}{(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]}
现在计算的前10个周期的周期长度小于或等于3。
cycles2 = allcycles (G,“MaxNumCycles”10“MaxCycleLength”3)
cycles2 =10×1单元阵列{(1 2 3)}{[1 2 4]}{[1 2 5]}{[1 2 6]}{[1 2 7]}{[1 2 8]}{[1 2 9]}{[1 2 10]}{[1 2 11]}{[1 2 12]}
最后,计算一个周期的前10个周期长度大于或等于4。
cycles3 = allcycles (G,“MaxNumCycles”10“MinCycleLength”4)
cycles3 =10×1单元阵列{(1 2 3 4)}{(1 2 3 4 5)}{(1 2 3 4 5 6)}{(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]}
检查的输出cyclebasis和allcycles功能与边的数量规模图。
cyclebasis
创建和绘制正方形网格图和三个节点两侧的广场。
n = 5;一个= delsq (numgrid (“年代”,n));图G = (,“omitselfloops”);情节(G)
计算所有图中循环使用allcycles。使用tiledlayout函数来构造一个数组的次要情节,突出每个周期在一个次要情节。结果表明,总共有13个周期图中。
tiledlayout
[周期,edgecycles] = allcycles (G);tiledlayout流为k = 1:长度(周期)nexttile突出(情节(G)、周期{k},“边缘”,edgecycles {k},“EdgeColor”,“r”,“NodeColor”,“r”)标题(“循环”+ k)结束
这些周期可以被看作是组合的小周期。的cyclebasis函数返回循环形成的一个子集中的所有其他周期的基础图。使用cyclebasis计算的基本周期基础和突出每个基本周期在一个次要情节。即使有13个周期图中,只有四种基本周期。
[周期,edgecycles] = cyclebasis (G);tiledlayout流为k = 1:长度(周期)nexttile突出(情节(G)、周期{k},“边缘”,edgecycles {k},“EdgeColor”,“r”,“NodeColor”,“r”)标题(“循环”+ k)结束
现在,增加节点的数量在每一侧的从三、四方图。这是一个小图形的大小。
n = 6;一个= delsq (numgrid (“年代”,n));图G = (,“omitselfloops”);图绘制(G)
使用allcycles计算所有周期的新图形。这张图有超过200次,太多的情节。
allcycles (G)
ans =213×1单元阵列{[8 1 2 3 4 5 6 7]}{(1 2 3 4 5 8 7 6 10 9]}{(1 2 3 4 8 7 6 10 11 12 16 15 14 13 9 5]}{(1 2 3 4 5 8 7 6 10 11 15 14 13 9]}{(1 2 3 4 8 7 6 10 14 13 9 5]}{(1 2 3 4 8 7 11 10 6 5]}{(1 2 3 4 5 8 7 11 10 9]}{(1 2 3 4 5 8 7 11 10 14 13 9]}{(1 2 3 4 8 7 11 12 16 15 14 10 6 5]}{(1 2 3 4 5 8 7 11 12 16 15 14 10 9]}{(1 2 3 4 5 8 7 11 12 16 15 14 13 9]}{(1 2 3 4 8 7 11 12 16 15 14 13 9 10 6 5]}{(1 2 3 4 8 7 11 15 14 10 6 5]}{(1 2 3 4 5 8 7 11 15 14 10 9]}{(1 2 3 4 5 8 7 11 15 14 13 9]}{(1 2 3 4 8 7 11 15 14 13 9 10 6 5]}⋮
尽管大量的周期图中,cyclebasis还返回一个小数量的基本周期。每个周期图中可以使用只有9个基本构造周期。
[周期,edgecycles] = cyclebasis (G);图tiledlayout流为k = 1:长度(周期)nexttile突出(情节(G)、周期{k},“边缘”,edgecycles {k},“EdgeColor”,“r”,“NodeColor”,“r”)标题(“循环”+ k)结束
大数量的增加周期只有一个小的变化的大小图是典型的图结构。返回的周期数allcycles可以生长指数图的边的数量。然而,返回的周期数cyclebasis最多可以增加线性图的边的数量。
图
有向图
输入图,指定为一个图或有向图对象。使用图创建一个无向图有向图创建一个有向图。
例子:图G = (1、2)
图G = (1、2)
例子:2 G =有向图([1],[2 3])
2 G =有向图([1],[2 3])
指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家。
的名字
价值
Name1, Value1,…,的家
allcycles (G, MaxNumCycles, 100)
最大数量的周期,指定为逗号分隔组成的“MaxNumCycles”和一个非负整数标量。这个选项是有用的,当数量的周期图变得足够大的内存限制。您可以指定MaxNumCycles来限制返回的周期数allcycles这结果符合可用内存。
例子:allcycles (G, MaxNumCycles, 100)
MaxCycleLength
最大的周期长度,指定为逗号分隔组成的“MaxCycleLength”和一个正整数标量。这个选项过滤器返回的结果allcycles所以没有周期长度大于返回指定的限制。一个周期的长度是衡量边的数量,忽略了边。
寻找周期的长度,同时指定“MaxCycleLength”和“MinCycleLength”。寻找周期精确指定的长度,为双方指定相同的值“MaxCycleLength”和“MinCycleLength”。
例子:allcycles (G, MaxCycleLength, 4)回报周期的长度小于或等于4。
allcycles (G, MaxCycleLength, 4)
例子:allcycles (G, MinCycleLength 3 MaxCycleLength, 5)回报周期长度为3,4或5。
allcycles (G, MinCycleLength 3 MaxCycleLength, 5)
MinCycleLength
最小的周期长度,指定为逗号分隔组成的“MinCycleLength”和一个正整数标量。这个选项过滤器返回的结果allcycles所以没有周期长度小于返回指定的限制。一个周期的长度是衡量边的数量,忽略了边。
例子:allcycles (G, MinCycleLength, 2)回报周期的长度大于或等于2。
allcycles (G, MinCycleLength, 2)
图周期,作为细胞数组返回。每个元素周期{k}包含的节点,属于一个周期的G。每个周期开始节点的最小节点指数和周期辞典编纂的顺序返回。周期无向图只返回一次,在一个方向。如果G不包含任何周期呢周期是空的。
的数据类型细胞周期取决于输入图包含节点名称:
如果图G没有节点名,那么每个元素周期{k}是一个数值向量的节点指标。
如果图G节点名称,那么每个元素周期{k}是一个单元阵列特征向量节点的名称。
边缘在每个周期中,作为细胞数组返回。每个元素edgecycles {k}包含边缘的边缘指数相应的周期,周期{k}。如果G不包含任何周期呢edgecycles是空的。
存在周期在一个图中有一个非空的路径,只有第一个和最后一个节点是重复的。一个周期的例子是:(Node1 - Node2 Node3 Node1)。按照惯例,allcycles不返回循环中的最后一个节点,因为它是与第一个相同。
一个周期不能遍历两次相同的边缘。例如,周期(Node1 - Node2 Node1)在一个无向图只存在如果有多个边缘连接Node1和Node2。根据这个定义,self-loops算作周期,尽管他们不能循环的一部分。
周期图的数量在很大程度上依赖于图的结构。对于一些图结构,周期可以用节点的数量呈现指数级增长。例如,一个完全图12节点给出的图G = ((12))包含近6000万个周期。使用MaxNumCycles,MaxCycleLength,MinCycleLength选择控制的输出allcycles在这些情况下。
图G = ((12))
hascycles|cyclebasis|allpaths
hascycles
allpaths
你有一个修改版的这个例子。你想打开这个例子与编辑?
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
选择一个网站翻译内容,看到当地事件和提供。根据你的位置,我们建议您选择:。
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。
联系你当地的办公室