MATLAB ヘルプ センター
グラフに循環があるかどうかを判別
R2021a 以降
tf = hascycles(G)
tf = hascycles(G) は、グラフ G に循環が 1 つ以上ある場合は logical 1 (true)、それ以外の場合は logical 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])
グラフに循環が存在するのは、最初と最後のノードのみが繰り返される空でない経路がある場合です。循環は、たとえば (Node1 - Node2 - Node3 - Node1) のようになります。
循環が同じエッジを 2 回通過することはありません。たとえば、無向グラフに循環 (Node1 - Node2 - Node1) が存在するのは、Node1 と Node2 を連結するエッジが複数ある場合のみになります。この定義により、自己ループは循環としてカウントされますが、それよりも大きい循環の一部となることはありません。
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.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ