既存グラフのノードとエッジの変更
この例では、addedge、rmedge、addnode、rmnode、findedge、findnode および subgraph の各関数を使用して graph または digraph オブジェクト内のノードやエッジにアクセスし、それらを変更する方法を示します。
ノードの追加
4 つのノードと 4 つのエッジから成るグラフを作成します。s と t 内の対応する要素は、各グラフ エッジの末端のノードを指定します。
s = [1 1 1 2]; t = [2 3 4 3]; G = graph(s,t)
G =
graph with properties:
Edges: [4×1 table]
Nodes: [4×0 table]
グラフのエッジ リストを表示します。
G.Edges
ans=4×1 table
EndNodes
________
1 2
1 3
1 4
2 3
addnode を使用してグラフに 5 つのノードを追加します。このコマンドは、ノード ID が 5、6、7、8 および 9 である 5 つの結合していないノードを追加します。
G = addnode(G,5)
G =
graph with properties:
Edges: [4×1 table]
Nodes: [9×0 table]
ノードの削除
rmnode を使用して、グラフからノード 3、5 および 6 を削除します。削除されたノードのいずれかと結合しているすべてのエッジも削除されます。グラフ内の残りの 6 つのノードは、新しいノード数を反映するよう番号が付け直されます。
G = rmnode(G,[3 5 6])
G =
graph with properties:
Edges: [2×1 table]
Nodes: [6×0 table]
エッジの追加
addedge を使用して G に 2 つのエッジを追加します。1 番目のエッジはノード 1 とノード 5 の間にあり、2 番目のエッジはノード 2 とノード 5 の間にあります。このコマンドは G.Edges に 2 つの新しい行を追加します。
G = addedge(G,[1 2],[5 5])
G =
graph with properties:
Edges: [4×1 table]
Nodes: [6×0 table]
エッジの削除
rmedge を使用してノード 1 とノード 3 の間のエッジを削除します。このコマンドは G.Edges から 1 つの行を削除します。
G = rmedge(G,1,3)
G =
graph with properties:
Edges: [3×1 table]
Nodes: [6×0 table]
エッジ インデックスの特定
ノード 1 とノード 5 の間のエッジのエッジ インデックスを特定します。エッジ インデックス ei は G.Edges の行番号です。
ei = findedge(G,1,5)
ei = 2
ノード インデックスの特定
グラフにノード名を追加し、次にノード 'd' のノード インデックスを特定します。数値のノード インデックス ni は G.Nodes の行番号です。shortestpath などの他のグラフ関数を使用する場合、ni とノード名 'd' のどちらを使用してもノードを参照できます。
G.Nodes.Name = {'a' 'b' 'c' 'd' 'e' 'f'}';
ni = findnode(G,'d')ni = 4
部分グラフの抽出
subgraph を使用して、2 つのノードのみが含まれるグラフの一部を抽出します。
H = subgraph(G,[1 2])
H =
graph with properties:
Edges: [1×1 table]
Nodes: [2×1 table]
部分グラフのエッジ リストを表示します。
H.Edges
ans=table
EndNodes
______________
{'a'} {'b'}
変数エディターを使用したノード テーブルとエッジ テーブルの変更
グラフ オブジェクトのノードおよびエッジの情報は、Nodes と Edges という 2 つのプロパティに含まれています。これらのプロパティはどちらも、グラフ内のノードとエッジの属性を記述する変数が含まれるテーブルです。Nodes と Edges はどちらも table であるため、変数エディターを使用して対話的にその table を表示または編集できます。変数エディターでノードやエッジを追加または削除することはできません。また、Edges table の EndNodes プロパティを編集することもできません。変数エディターは Nodes table や Edges table 内のノードやエッジの余分な属性を管理する場合に便利です。詳細については、変数の作成と編集を参照してください。
参考
graph | digraph | addedge | rmedge | addnode | rmnode | findedge | findnode | subgraph