文档帮助中心文档
图的基本循环基
周期= cyclebasis (G)
[周期,edgecycles] = cyclebasis (G)
例子
周期= cyclebasis (G)计算基本周期的基础上对于无向图。输出周期是一个单元数组,指示哪些节点属于每个基本周期。
周期= cyclebasis (G)
周期
G
[周期,edgecycles) = cyclebasis (G)还返回每个周期的边。输出edgecycles单元阵列在哪里edgecycles {k}给出节点之间的边周期{k}.
[周期,edgecycles) = cyclebasis (G)
edgecycles
edgecycles {k}
周期{k}
全部折叠
创建并绘制无向图。
S = [1 1 2 2 3 4 4 5 5 6 7 8];T = [2 4 3 5 6 5 7 6 8 9 8 9];图G = (s, t);情节(G)
计算每个基本周期中有哪些节点。
周期=4×1单元阵列{[1 2 5 4]} {[2 3 6 5]} {[4 5 8 7]} {[5 6 9 8]}
计算一个图的基本周期中的节点和边,可视化基本周期,然后使用基本周期在图中找到其他周期。
S = [1 1 1 2 2 3 3 4 4 4 5 6];T = [2 3 4 4 5 4 6 5 6 7 7 7];图G = (s, t);绘图(g);
计算图的基本循环基础。
周期=6×1单元阵列{(1 2 4)} {[1 3 4]} {[2 4 5]} {[3 4 6]} {[4 5 7]} {[4 6 7]}
edgecycles =6×1单元阵列{[1 4 3]} {[2 6 3]} {[4 8 5]} {[6 9 7]} {[8 11 10]} {[9 12 10]}
突出每个基本周期,使用tiledlayout和nexttile构建一组副图。对于每个子图,首先获取对应循环的节点周期,边缘从edgecycles.然后,绘制图形并突出那些节点和边。
tiledlayout
nexttile
tiledlayout流为k = 1:length(cycles) nexttile highlight(plot(G),cycles{k},“边缘”,Edgecycles {k},“EdgeColor”,“r”,“NodeColor”,“r”)标题(“循环”+ k)结束
您可以通过在使用两个或多个基本周期之间找到对称差异来构建图表中的任何其他周期setxor函数。例如,取前两个周期之间的对称差,然后绘制出新的周期。
setxor
图new_cycle_edges = setxor(edgecycle {1},edgecycle {2});突出(情节(G),“边缘”new_cycle_edges,“EdgeColor”,“r”,“NodeColor”,“r”)
虽然每个循环都可以由由循环基组成的循环组合而成,但并不是每个基循环的组合都形成一个有效的循环。
检查如何输出cyclebasis和allcycles函数随图形中边的数量缩放。
cyclebasis
allcycles
创建并绘制一个正方形网格图,每边有三个节点。
n = 5;一个= delsq (numgrid (“年代”, n));图G = (,“omitselfloops”);情节(G)
使用。计算图中的所有周期allcycles.使用tiledlayout函数构造子图数组,并突出显示子图中的每个周期。结果表明,图中总共有13个循环。
[周期,edgecycles] = allcycles (G);tiledlayout流为k = 1:length(cycles) nexttile highlight(plot(G),cycles{k},“边缘”,Edgecycles {k},“EdgeColor”,“r”,“NodeColor”,“r”)标题(“循环”+ k)结束
其中一些循环可以被视为较小循环的组合。这cyclebasis函数返回构成图中所有其他循环基的循环的子集。使用cyclebasis计算基本周期的基础,并在子图中突出显示每个基本周期。尽管图中有13个循环,但只有4个基本循环。
[周期,edgecycles] = cyclebasis (G);tiledlayout流为k = 1:length(cycles) nexttile highlight(plot(G),cycles{k},“边缘”,Edgecycles {k},“EdgeColor”,“r”,“NodeColor”,“r”)标题(“循环”+ k)结束
现在,将正方形图每边的节点数从3个增加到4个。这表示图的大小略有增加。
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 8 7 11 12 1615 14 13 9 5]}{(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:length(cycles) nexttile highlight(plot(G),cycles{k},“边缘”,Edgecycles {k},“EdgeColor”,“r”,“NodeColor”,“r”)标题(“循环”+ k)结束
对于某些图形结构,仅具有较小变化的周期数量的循环次数的大幅增加。返回的周期数allcycles可以随着图中边的数量呈指数增长。但是,返回的周期数cyclebasis最多可以随图中的边数线性增长。
图
输入图形,指定为图对象。使用图创建无向图对象。
例子:图G =(1、2)
图G =(1、2)
基本图形循环,作为单元格数组返回。每一个细胞周期{k}包含属于基本循环之一的节点G.每个周期从最小的节点索引开始。如果G不包含任何循环吗周期是空的。
每一个周期G基本周期的组合回归了吗周期.如果一条边是循环的一部分G,那么它至少也是一个基本周期的一部分周期.
中的单元格的数据类型周期取决于输入图是否包含节点名称:
如果图G没有节点名,那么每个单元格呢周期{k}是节点索引的数值向量。
如果图G具有节点名称,然后是每个单元格周期{k}是字符向量节点名称的单元格数组。
每个基本周期的边,作为单元格数组返回。每一个细胞edgecycles {k}包含循环中各边的边索引周期{k}.如果G不包含任何循环吗edgecycles是空的。
在无向图中基本周期的基础上是构成图的环空间基的一组简单环。也就是说,图中的任何循环都可以由基本循环构成。例如,请参见基本循环中的节点和边.
图的基本循环基是从图的最小生成树计算出来的。对于每一条不在最小生成树中的边,都存在一个基本循环,它由这条边、它的端点以及连接它们的最小生成树中的路径组成。
使用的最小生成树cyclebasis一般是不同的一个返回minspantree.选择循环是短暂的。然而,cyclebasis并不能保证返回尽可能短的基本周期基础。
minspantree
allcycles|Allpaths.|hascycles|minspantree
Allpaths.
hascycles
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系