Main Content

既存グラフのノードとエッジの変更

この例では、addedgermedgeaddnodermnodefindedgefindnode および subgraph の各関数を使用して graph または digraph オブジェクト内のノードやエッジにアクセスし、それらを変更する方法を示します。

ノードの追加

4 つのノードと 4 つのエッジから成るグラフを作成します。st 内の対応する要素は、各グラフ エッジの末端のノードを指定します。

s = [1 1 1 2];
t = [2 3 4 3];
G = graph(s,t)
G = 
  graph with properties:

    Edges: [4x1 table]
    Nodes: [4x0 table]

グラフのエッジ リストを表示します。

G.Edges
ans=4×1 table
    EndNodes
    ________

     1    2 
     1    3 
     1    4 
     2    3 

addnode を使用してグラフに 5 つのノードを追加します。このコマンドは、ノード ID が 5678 および 9 である 5 つの結合していないノードを追加します。

G = addnode(G,5)
G = 
  graph with properties:

    Edges: [4x1 table]
    Nodes: [9x0 table]

ノードの削除

rmnode を使用して、グラフからノード 3、5 および 6 を削除します。削除されたノードのいずれかと結合しているすべてのエッジも削除されます。グラフ内の残りの 6 つのノードは、新しいノード数を反映するよう番号が付け直されます。

G = rmnode(G,[3 5 6])
G = 
  graph with properties:

    Edges: [2x1 table]
    Nodes: [6x0 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: [4x1 table]
    Nodes: [6x0 table]

エッジの削除

rmedge を使用してノード 1 とノード 3 の間のエッジを削除します。このコマンドは G.Edges から 1 つの行を削除します。

G = rmedge(G,1,3)
G = 
  graph with properties:

    Edges: [3x1 table]
    Nodes: [6x0 table]

エッジ インデックスの特定

ノード 1 とノード 5 の間のエッジのエッジ インデックスを特定します。エッジ インデックス eiG.Edges の行番号です。

ei = findedge(G,1,5)
ei = 2

ノード インデックスの特定

グラフにノード名を追加し、次にノード 'd' のノード インデックスを特定します。数値のノード インデックス niG.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: [1x1 table]
    Nodes: [2x1 table]

部分グラフのエッジ リストを表示します。

H.Edges
ans=table
       EndNodes   
    ______________

    {'a'}    {'b'}

変数エディターを使用したノード テーブルとエッジ テーブルの変更

グラフ オブジェクトのノードおよびエッジの情報は、NodesEdges という 2 つのプロパティに含まれています。これらのプロパティはどちらも、グラフ内のノードとエッジの属性を記述する変数が含まれるテーブルです。NodesEdges はどちらも table であるため、変数エディターを使用して対話的にその table を表示または編集できます。変数エディターでノードやエッジを追加または削除することはできません。また、Edges table の EndNodes プロパティを編集することもできません。変数エディターは Nodes table や Edges table 内のノードやエッジの余分な属性を管理する場合に便利です。詳細については、変数の作成と編集を参照してください。

参考

| | | | | | | |

関連するトピック