Main Content

ismultigraph

グラフに複数のエッジがあるかどうかを判別

説明

tf = ismultigraph(G) は、G の 2 つのノード間に複数のノードがある場合、logical 1 (true) を返します。その他の場合は logical 0 (false) を返します。

慣例により、ismultigraph は、自己ループを含むが、繰り返されるエッジのないグラフに対して logical 0 (false) を返します。ただし、複数の自己ループをもつグラフは多重グラフと見なされます。

すべて折りたたむ

ismultigraph を使用して、入力グラフの 2 つのノード間に複数のエッジがあるかどうかを判別します。

グラフを作成します。

G = graph([1 1 1 1 1 2 2 2],[2 2 3 4 5 6 7 8]);
plot(G)

Figure contains an axes object. The axes object contains an object of type graphplot.

G が多重グラフかどうかを確認します。ノード 1 とノード 2 の間に 2 本のエッジがあるため、結果は logical 1 (true) になります。

tf = ismultigraph(G)
tf = logical
   1

ismultigraph を使用して、グラフを簡略化する必要があるかどうかを判断します。

一般的に、空のグラフを作成し、プログラムで addedge を使用してエッジをそのグラフに追加すると、重複するエッジが発生します。重複を避けるためには、エッジに使用されるデータは一意でなければなりません。

これを示すために、1 つの空のグラフと、乱数の 2 つの列をもつ 1 つの行列を作成します。乱数は 1 ~ 5 のみであるため、このデータでは複数のエッジが作成されます。

G = graph;
rng default % for reproducibility
X = randi(5,15,2)
X = 15×2

     5     1
     5     3
     1     5
     5     4
     4     5
     1     4
     2     1
     3     5
     5     5
     5     4
      ⋮

ソース データをクリーニングして行を一意にするのではなく、すべてのエッジをグラフに追加します。参照用にグラフをプロットします。

G = addedge(G,X(:,1),X(:,2));
plot(G)

Figure contains an axes object. The axes object contains an object of type graphplot.

テストしてグラフが多重グラフかどうかを確認します。多重グラフの場合は、simplify を使用して繰り返されるエッジと自己ループを削除します。

if ismultigraph(G)
    G = simplify(G);
end

結果のグラフをプロットします。

plot(G)

Figure contains an axes object. The axes object contains an object of type graphplot.

入力引数

すべて折りたたむ

入力グラフ。graph オブジェクトまたは digraph オブジェクトとして指定します。無向グラフの作成には graph を、有向グラフの作成には digraph を使用します。

例: G = graph(1,2)

例: G = digraph([1 2],[2 3])

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2018a で導入