MATLAB 帮助中心
确定图是否包含循环
自 R2021a 起
tf = hascycles(G)
如果图 G 包含一个或多个循环,则 tf = hascycles(G) 返回逻辑值 1 (true),否则返回逻辑值 0 (false)。
G
1
true
0
false
示例
全部折叠
创建并绘制一个无向图。
G = graph([1 1 1 1],[2 3 4 5]); plot(G)
确定图是否有循环。
tf = logical 0
现在,在图中的节点 2 和节点 3 之间添加一条边。重新绘制该图。
G = addedge(G,2,3); plot(G)
确定新图是否有循环。
tf2 = hascycles(G)
tf2 = logical 1
检查对有向图进行操作的 hascycles 和 isdag 函数之间的区别。
hascycles
isdag
创建并绘制一个有向图。
s = [1 1 1 2 3 3 3 4 6]; t = [2 4 5 5 6 7 4 1 4]; G = digraph(s,t); plot(G)
确定该图是否包含循环。
tf = logical 1
当有向图包含循环时,hascycles 返回 true。
现在,使用 isdag 确定该图是否为有向无环图。
tf2 = isdag(G)
tf2 = logical 0
isdag 返回 false,因为图包含循环。一般情况下,对于有向图,hascycles 和 isdag 函数返回相反的结果。
graph
digraph
输入图,指定为 graph 或 digraph 对象。可使用 graph 创建一个无向图,或使用 digraph 创建一个有向图。
示例: G = graph(1,2)
G = graph(1,2)
示例: G = digraph([1 2],[2 3])
G = digraph([1 2],[2 3])
如果图中有一条非空路径,其中只有第一个和最后一个节点重复,则图中就存在一个循环。循环的一个示例是:(节点 1 - 节点 2 - 节点 3 - 节点 1)。
一个循环不能对同一条边遍历两次。例如,无向图中的循环(节点 1 - 节点 2 - 节点 1)仅在连接结点 1 和节点 2 的边不止一条的情况下才存在。根据此定义,自环算作循环,尽管它们不能作为任何更大循环的一部分。
在 R2021a 中推出
allcycles | cyclebasis | isdag
allcycles
cyclebasis
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处