Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

digraph

有向エッジをもつグラフ

説明

digraphオブジェクトは性もつエッジノードがされいる有向グラフを表します。digraphオブジェクトの作成後、そのオブジェクトに対しオブジェクト関数を使用してクエリを実行することで、グラフについて詳細を知ることができます。たとえば、ノードまたはエッジの追加や削除、2 つのノード間の最短経路の特定、特定のノードやエッジの検出ができます。

G = Digraph([1 1], [2 3]) e = G.Edges G = addedge(G,2,3) G = addnode(G,4) plot(G)

作成

説明

G= digraphは,とをもた空の有向オブジェクトオブジェクトGを作成し。

G= digraph(A)は,正邻接行列Aを使用して有向グラフを作成します。

  • 论理邻接场合はエッジの重みないにになります。

  • 非論理隣接行列の場合は、エッジの重みがあるグラフになります。Aの各要素位置グラフエッジ指定しエッジの重みは要素要素の値にに等しくなりますますA(2,1) = 10である場合、Gには,ノードからからノードノードにに向かう10ののエッジがます。。。。

G= digraph(A,NodeNames)はさらにノード名を指定します。NodeNamesの要素数は尺寸(A,1)と等しくなければなりません。

G= digraph(A,NodeTable)は表NodeTableを使用ノード名(可能可能场合のノードもも)Aと同じ行数でなければなりません。table 変数姓名を使用て名を指定し。。

G= digraph(A,___,“省略自助”)Aの対角し,ループのを返し。前述の构文构文にある任意のの入力引数のの组み合わせ组み合わせ组み合わせ。

G= digraph(英石)は,有向グラフのエッジ(s,t)をソース ノードとターゲット ノードを表すペアで指定します。stは,ノードインデックスまたはノード名を指定できます。digraphは,G内のまずノードで并べ替え,ターゲットノードで并べ替え。sおよびtと同じ順序のエッジ プロパティがある場合は、構文g = digraph(s,t,EdgeTable)を使用エッジプロパティ渡し结果ので同じに并べ替えられるられるようにに。。。

G= digraph(英石,权重)は,配列权重によってエッジの重みも指定します。

G= digraph(英石,权重,NodeNames)はさらに、文字ベクトルの cell 配列または string 配列NodeNamesを使用て名を指定し。。stにはNodeNamesに存在ノード名含めることはませ。。。

G= digraph(英石,权重,NodeTable)は表NodeTableを使用してノード名を (可能な場合は他のノード属性も) 指定します。table 変数姓名を使用て名を指定し。。stにはNodeTableに存在ノードのみを含めることができ。。

G= digraph(英石,权重,num)は,数値スカラーnumによってグラフ内のノード数を指定します。

G= digraph(英石,___,“省略自助”)は自己ループをグラフに追加しません。つまり、s(k) == t(k)を満たすkは无视れ。前述构文に任意の引数の组み合わせが使用使用。。。

G= digraph(英石,EdgeTable,___)は,权重を指定する代わりに table を使用してエッジの属性を指定します。EdgeTableの入力は table で、その行はそれぞれstの要素ペア対応しばばなりん。変数変数Weightを使用してエッジの重みを指定します。

G= digraph(EdgeTable)は表EdgeTableを使用てをします。构文の场合,EdgeTableの最初のはEndNodesという名前で、グラフ エッジのリストを定義する 2 列配列でなければなりません。

G= digraph(EdgeTable,NodeTable)は,さらに tableNodeTableをしグラフの名前を(可能なは他の属性も)指定

G= digraph(EdgeTable,___,“省略自助”)は自己ループをグラフに追加しません。つまり、edgetable.endnodes(k,1)== edgetable.endnodes(k,2)を満たすkはすべてされます。EdgeTableの指定は必須です。NodeTableはオプション指定できます。

入力引数

すべて展開する

邻接行列非またはの数値行列指定します。Aの要素は、グラフのノード間における連結 (エッジ) のネットワークを指定します。Aの個々の非ゼロ要素の位置は、2 つのノード間のエッジを指定します。その要素の値はエッジの重みです。論理隣接行列は重みなしのグラフになります。

Aの非の主対角,,,“自己”,つまりそれに连结ノード指定します対角要素を无视无视するにには,“omitselfloops'を使用します。

例:A = [0 1 0; 0 0 0; 5 0 0]3つををつ,をををを本もつを表しますますノードノードノードノードノードノードノードノードノードノードからからからからから21、ノード 3 からノード 1 へのエッジの重みは5です。

データ型:单身的|double|logical

ノード名。文字ベクトルの cell 配列または string 配列として指定します。NodeNamesは,グラフの各ノードに対して空ではない一意の名前が含まれるように、numnodes(G)と長さが同じでなければなりません。

例:g = digraph(a,{'n1','n2','n3'})は,3 行 3 列の隣接行列A3つのつのを指定し。。。

データ型:cell|细绳

ソース ノードとターゲット ノードのペア。ノード インデックスまたはノード名として指定します。digraphstのするに有向エッジをし。。。ますとととともも数値数値数値であるであるであるかかか,,,,どちらどちらどちらもも文字文字ベクトルののののののののの配列配列配列,,またはまたは、stの要素数は同じでなければなりません。

  • stが数値の場合、その値はグラフ ノードのインデックスに対応します。数値のノード インデックスは、1 以上の正の整数でなければなりません。

  • stが文字ベクトル、文字ベクトルの cell 配列または string 配列である場合、ノード名を指定します。グラフのNodesプロパティは、ノード名姓名をもつ変数G.Nodes.Nameのテーブルです。

  • stが categorical 配列の場合、stのカテゴリがグラフ内のノード名として使用されます。これには、sまたはtの要素カテゴリ含まれるがあります。

  • sおよびt2つのつの间复数のエッジ指定すると结果は,,多重グラフになります。

次の表に、1 つ以上のノードを数値ノード インデックスまたはノード名のいずれかで参照するさまざまな方法を示します。

形式 単一ノード 複数ノード
ノードインデックス

スカラー

例:1

ベクトル

例:[1 2 3]

ノード名

文字ベクトル

例:'一个'

文字文字の细胞配列

例:{'A' 'B' 'C'}

细绳スカラー

例:"A"

细绳配列

例:["A" "B" "C"]

categorical 配列

例:categorical("A")

categorical 配列

例:categorical(["A" "B" "C"])

例:G = Digraph([1 2 3],[2 4 5])はノードを 5 つ、エッジを 3 本もつグラフを作成します。

例:g = digraph({'波士顿''纽约''华盛顿D.'},{'纽约'新泽西州'pittsburgh'})は名前付きノードを 5 つ、エッジを 3 本もつグラフを作成します。

エッジのスカラーベクトル,行列または元配列として指定し。权重には,,またはsおよびtと同じ要素数の配列を指定しなければなりません。

digraphは,G.Edgesプロパティ テーブルの変数Weightとしてエッジの重みを格納します。グラフの作成後に重みの追加や変更を行うために、たとえばG.Edges.Weight = [25 50 75]'table table変数変数直接変更でき。。。。

权重を空の配列[]として指定た,これ无视されます。

例:g = digraph([1 2],[2 3],[100 200])は,ノードを 3 つ、エッジを 2 本もつグラフを作成します。エッジの重みはそれぞれ100200です。

データ型:单身的|double

グラフノード。正スカラー整数としてし。。。numは,stの要素の最大数以上の値でなければなりません。

例:G = Digraph([1 2],[2 3],[],5)3つをつ,孤立ノードをををつもつを作成し。。

エッジ情报の。sおよびtを指定しない場合は、EdgeTableの最初の変数を、グラフ エッジを定義するEndNodesという 2 列の行列、文字ベクトルの cell 配列または string 配列にする必要があります。エッジの重みには、変数Weightを使用します。これは、このテーブル変数名が一部のグラフ関数で使用されているためです。変数Weightがある場合、これは数値列ベクトルにしなければなりません。table の作成の詳細については、tableを参照しください。

グラフの作成後、G.Edgesを使用て情报のをクエリします。

例:EdgeTable = table([1 2; 2 3; 3 5; 4 5],'VariableNames',{'EndNodes'})

データ型:table

ノード情报の。NodeTableには、グラフ ノードの属性を記述する変数をいくつでも含めることができます。ノード名には、変数姓名を使用します。これは、この変数名が一部のグラフ関数で使用されるためです。変数姓名がある場合、これは各行で一意の名前を指定する文字ベクトルの cell 配列または string 配列でなければなりません。table の作成の詳細については、tableを参照しください。

グラフの作成後、G.Nodesを使用て情报のをクエリします。

例:NodeTable = table({'a'; 'b'; 'c'; 'd'},'VariableNames',{'Name'})

データ型:table

プロパティ

すべて展開する

グラフのエッジ。table として返されます。既定では、これはM1列のテーブルであり、ここでMはグラフエッジ数です。G.Edges.Endnodes内のエッジ リストは、まずソース ノードで並べ替えてから、ターゲット ノードで並べ替えます。

  • グラフにエッジを追加するに,,边缘テーブルに新しい変数を作成します。

  • グラフにエッジを追加するにはオブジェクト関数添加を,からを削除にはオブジェクト关数rmedgeを使用します。

例:G.Edgesはグラフ内のエッジがリストされたテーブルを返します。

例:G.Edges.Weightはエッジの重みの数値ベクトルを返します。

例:G.Edges.Weight = [10 20 30 55]'は,グラフの新しいエッジの重みを指定します。

例:g.edges.normweight = g.edges.cepter/sum(g.edges.peight)は,正规された重みを新しいエッジををををににに追加し。。

データ型:table

グラフ。。としてとして返さます。で,,ははN0列の空のテーブルであり、ここでNはグラフのノード数です。

  • グラフに新しいノード プロパティを追加するには、Nodesテーブルに新しい変数を作成します。

  • グラフにノードを追加するにはオブジェクト関数addNodeを、グラフからノードを削除するにはオブジェクト関数rmnodeを使用します。

例:G.Nodesは,ノードがリストれテーブルを返し。このテーブルはは既定ででは空

例:G.Nodes.Names = {'Montana', 'New York', 'Washington', 'California'}'は,Nodes表に変数姓名sを追加することにより、グラフにノード名を追加します。

例:G.Nodes.WiFi = logical([1 0 0 1 1]')は,変数WiFiNodesテーブルに。このプロパティ,の空港にインターネットのサービスサービスエリアががあることことを。

データ型:table

オブジェクト関数

すべて展開する

添加 新しいエッジをグラフに追加
rmedge グラフからエッジ削除
Flipedge エッジの方向の反転
addNode 新しいノードをに追加
rmnode グラフからノードを削除
找到 グラフ内のを検出
findnode グラフ内のノードを検出
numedges グラフ エッジの数
numnodes グラフのノード数
edgecount 2つのノードの数数
reordernodes グラフノードのべ替え
subgraph 部分グラフの抽出
中心性 ノードの重要を测定
toposort 有向非循環グラフのトポロジカル順序
transclosure 推移闭包
transreduction 推移還元
isdag グラフが非循環かどうかの判定
Conncomp グラフの連結要素
condensation グラフの縮合
maxflow グラフの最大フロー
isisomorphic 2 つのグラフが準同型であるかどうかを判別
同构 2つグラフの同型计算计算
iSmultraph グラフにのがあるどうかを判别
简化 多重を単纯グラフ缩小缩小
bfsearch グラフの幅優先検索
dfsearch グラフの深さ優先検索
shortestpath 2 つの単一ノード間の最短経路
shortestpathtree ノードからの最短経路木
distances すべてのノード ペアの最短経路の距離
allpaths 2 つのグラフ ノード間のすべての経路の検出
hascycles グラフに循環があるかどうかを判別
allcycles Find all cycles in graph
adjacency グラフの隣接行列
incidence グラフの接続行列
indegre ノードの入次数
outdegree ノードの出次数
前任 先行ノード
successors 后続ノード
nearest 半径内の傍
inedges ノードの入方向エッジ
outedges ノードからの出方向のエッジ
plot グラフのノードとエッジをプロット

すべて折りたたむ

ノードを 3 つ、エッジを 3 本もつdigraphオブジェクトを。。。。つのエッジエッジはノードノードノードノードからノードノードノードノードへへへ,别别のエッジははははノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードノードからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからからから

g = digraph([1 1 2],[2 3 1])
G = Digraphwith properties: Edges: [3x1 table] Nodes: [3x0 table]

グラフのをします。有の场合场合,,,,列目列目列目各エッジののソースソースノードノードノードノード,,,,,,

G.Edges
ans=3×1 table末日________ 1 2 1 3 2 1

ノード名にし,新しいノードとテーブルをしします。。各各各エッジエッジエッジのソースノードととターゲットノードノードノードノードががが

g.nodes.name = {'一个''b''C'}';G.Nodes
ans=3×1 table姓名_____ {'A'} {'B'} {'C'}
G.Edges
ans=3×1 tableEndNodes ______________ {'A'} {'B'} {'A'} {'C'} {'B'} {'A'}

テーブルNodesおよび边缘に変数を追加し、あるいはそれを変更して、グラフのノードやエッジの属性を記述することができます。ただし、これらのテーブルを変更してグラフ内のノード数やエッジ数を直接変更することはできません。代わりに、関数添加rmedgeaddNodeまたはrmnodeを使用してグラフ内のノード数またはエッジ数を変更します。

たとえば,グラフのノード2 とノード 3 の間にエッジを追加し、新しいエッジ リストを表示します。

G = addedge(G,2,3)
G = Digraphwith properties: Edges: [4x1 table] Nodes: [3x1 table]
G.Edges
ans=4×1 tableEndNodes ______________ {'A'} {'B'} {'A'} {'C'} {'B'} {'A'} {'B'} {'C'}

次数 4 の完全有向グラフを作成する対称隣接行列Aを作成し。論理隣接行列を使用して、重みのないグラフを作成します。

a =一个(4) -  diag([1 1 1 1 1])
A =4×40 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0
G = Digraph(A~=0)
G = Digraphwith properties: Edges: [12x1 table] Nodes: [4x0 table]

グラフのリストを表示。。

G.Edges
ans=12×1 table末日________ 1 2 1 3 1 4 2 1 2 3 2 4 3 1 3 2 3 4 4 1 4 2 4 3

邻接行列作成します。

a =魔术(4);a(a> 10)= 0
A =4×40 2 3 0 5 0 10 8 9 7 6 0 4 0 0 1

この隣接行列を使用して、名前付きノードをもつグラフを作成します。“omitselfloops'を指定して、Aの対角を无视し。。

names = {'alpha''beta''gamma''delta'};g = digraph(a,名称,“omitselfloops')
G =具有属性的Digraph:边缘:[8x2表]节点:[4x1表]

エッジとノードの情報を表示します。

G.Edges
ans=8×2 tableEndNodes Weight ______________________ ______ {'alpha'} {'beta' } 2 {'alpha'} {'gamma'} 3 {'beta' } {'alpha'} 5 {'beta' } {'gamma'} 10 {'beta' } {'delta'} 8 {'gamma'} {'alpha'} 9 {'gamma'} {'beta' } 7 {'delta'} {'alpha'} 4
G.Nodes
ans=4×1 table名称_________ {'alpha'} {'beta'} {'gamma'} {'delta'}

各エッジの末端ノードのリストを使用して立方体グラフを作成し、プロットします。

s = [1 1 1 2 2 3 4 5 5 6 7];t = [2 4 8 3 7 4 6 5 6 8 7 8];g = digraph(s,t)
G = Digraphwith properties: Edges: [12x1 table] Nodes: [8x0 table]
plot(G,'Layout','force')

图包含一个轴对象。轴对象包含类型图形图的对象。

各エッジノードリストを使用し立方グラフ作成し,プロットプロットししますます。ノード名とエッジエッジのの重み重み重みをを

s = [1 1 1 2 2 3 4 5 5 6 7];t = [2 4 8 3 7 4 6 5 6 8 7 8];权重= [10 10 1 10 1 10 1 1 12 12 12 12]; names = {'一个''b''C''D''E''F''G''H'};G = Digraph(S,T,权重,名称)
G = Digraphwith properties: Edges: [12x2 table] Nodes: [8x1 table]
plot(G,'Layout','force','EdgeLabel',g.edges.

图包含一个轴对象。轴对象包含类型图形图的对象。

各エッジの末端ノードのリストを使用して、重み付きグラフを作成します。グラフに合計 10 個のノードが含まれるよう指定します。

s = [1 1 1 1 1]; t = [2 3 4 5 6]; weights = [5 5 5 6 9]; G = digraph(s,t,weights,10)
G = Digraphwith properties: Edges: [5x2 table] Nodes: [10x0 table]

グラフをプロットします。追加のノードは、主要な連結要素と連結されていません。

plot(G)

图包含一个轴对象。轴对象包含类型图形图的对象。

空の digraph オブジェクトGを作成し。

G = Digraph;

このグラフにノードを 3 つ、エッジを 3 本追加します。stの対応する要素は、エッジのソース ノードとターゲット ノードを定義します。それらがまだ存在していない場合、添加は適切なノードをグラフに自動的に追加します。

s = [1 2 1];t = [2 3 3];g =添加(g,s,t)
G = Digraphwith properties: Edges: [3x1 table] Nodes: [3x0 table]

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

G.Edges
ans=3×1 table末日________ 1 2 1 3 2 3

最高のを得るに,,digraphの呼び出しを 1 回使用してグラフをすべて一度に作成します。大規模なグラフでは、ループを使用してノードやエッジをグラフに追加する処理が低速になることがあります。

変数EndNodesWeightおよび代码を格納するエッジ テーブルを作成します。次に、変数姓名およびCountryを格纳テーブル作成し。テーブルのは,グラフのノードとエッジエッジのプロパティプロパティししし

s = [1 1 1 2 2 3];t = [2 3 4 3 4 4];权重= [6 6.5 7 11.5 12 17]';代码= {'1/44''1/49''1/33''44/49''44/33''49/33'}';EdgeTable = table([s' t'],weights,code,...'variablenames',{'endnodes''Weight''代码'})
EdgeTable=6×3 tableEndNodes Weight Code ________ ______ _________ 1 2 6 {'1/44' } 1 3 6.5 {'1/49' } 1 4 7 {'1/33' } 2 3 11.5 {'44/49'} 2 4 12 {'44/33'} 3 4 17 {'49/33'}
names = {'美国''gbr''DEU''FRA'}';country_code = {'1''44''49''33'}';NodeTable = table(names,country_code,'variablenames',{'Name''Country'})
NodeTable=4×2 table姓名Country _______ _______ {'USA'} {'1' } {'GBR'} {'44'} {'DEU'} {'49'} {'FRA'} {'33'}

ノードテーブルテーブル使用し,,し。国国コードをノードノードラベルとエッジラベルとしてとして使用使用ししして

g = digraph(可用,NodeTable); plot(G,'NodeLabel',G.Nodes.Country,'EdgeLabel',G.Edges.Code)

图包含一个轴对象。轴对象包含类型图形图的对象。

拡張機能

バージョン履歴

R2015Bで导入

すべて展開する

R2018a での動作変更