主要内容

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

無向エッジをもつグラフ

説明

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

图([1 1],[2 3]);e = add (G,2,3) G = add (G,4) plot(G)

作成

説明

G=图は,ノードとエッジをもたない空の無向グラフオブジェクトGを作成します。

G=图(一个は正方対称の隣接行列一个を使用して重み付きグラフを作成します。一个の各非ゼロ要素の位置はグラフのエッジを指定し,エッジの重みは要素の値に等しくなります。たとえば,(2, 1) = 10である場合,Gには,ノード2とノード1を連結する重み10のエッジがあります。

G=图(一个节点名はさらにノード名を指定します。节点名の要素数は大小(1)と等しくなければなりません。

G=图(一个NodeTableは、表NodeTableを使用してノード名を(可能な場合は他のノード属性も)指定します。はこの表,一个と同じ行数でなければなりません。表変数的名字を使用してノード名を指定します。

G=图(一个___类型はグラフの作成に使用する隣接行列が上三角か下三角かを指定します。一个の指定は必須ですが,节点名またはNodeTableはオプションで指定できます。グラフの作成に一个の上三角または下三角のみを使用する場合,类型“上”または“低”のいずれかにすることができます。

G=图(一个___, ' omitselfloops ')一个の対角要素を無視し,自己ループのないグラフを返します。前述の構文にある任意の入力引数の組み合わせが使用できます。

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

G=图(s t权重は,配列权重によってエッジの重みも指定します。

G=图(s t权重节点名は,文字ベクトルの细胞配列または字符串配列节点名を使用してノード名を指定します。年代tには节点名に存在するノード名のみを含めることができます。

G=图(s t权重NodeTableは、表NodeTableを使用してノード名を(可能な場合は他のノード属性も)指定します。表変数的名字を使用してノード名を指定します。年代tにはNodeTableに存在するノード名のみを含めることができます。

G=图(s t权重全国矿工工会は,数値スカラー全国矿工工会によってグラフ内のノード数を指定します。

G=图(s t___, ' omitselfloops ')は自己ループをグラフに追加しません。つまり,s (k) = = t (k)を満たすkはすべて無視されます。前述の構文にある任意の入力引数の組み合わせが使用できます。

G=图(s tEdgeTable___は,权重を指定する代わりに表を使用してエッジの属性を指定します。EdgeTableの入力は表でその行はそれぞれ年代tの要素のペアに対応しなければなりません。表変数重量を使用してエッジの重みを指定します。

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

G=图(EdgeTableNodeTableは,さらに表NodeTableを使用してグラフノードの名前を(可能な場合はその他の属性も)指定します。

G=图(EdgeTable___, ' omitselfloops ')は自己ループをグラフに追加しません。つまり,EdgeTable.EndNodes (k, 1) = = EdgeTable.EndNodes (k, 2)を満たすkはすべて無視されます。EdgeTableの指定は必須です。NodeTableはオプションで指定できます。

入力引数

すべて展開する

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

一个の非ゼロの主対角要素は,“自己ループ”,つまりエッジでそれ自体に連結するノードを指定します。対角要素を無視するには,入力オプション“omitselfloops”を使用します。

类型の入力が指定されていない場合,一个は対称でなければなりません。行列が対称であることを確認するには、issymmetricを使用します。三角隣接行列の場合,类型を指定して上三角または下三角のみを使用します。

例:A = [0 1 5];1 0 0;5 0 0)は,ノードを3つエッジを2本もつグラフを表します。ノード1とノード2の間のエッジの重みは13,ノード1とノードの間のエッジの重みは5です。

データ型:||逻辑

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

例:图G = (A, {n1, n2, n3的})は3行3列の隣接行列一个に対し3つのノード名を指定します。

データ型:细胞|字符串

隣接行列のタイプ。“上”または“低”として指定します。

例:图G = (A,“上”)はグラフGの作成に一个の上三角のみを使用します。

ノードペア。ノードインデックスまたはノード名として指定します。年代tの対応するノード間にエッジを作成します。年代とtはいずれも数値であるか、いずれも文字ベクトル、文字ベクトルの cell 配列、string 配列または categorical 配列でなければなりません。すべての場合において、年代tの要素数は同じでなければなりません。

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

  • 年代tが文字ベクトル,文字ベクトルの细胞配列または字符串配列である場合,ノード名を指定します。グラフの节点プロパティは,ノード名的名字をもつ変数G.Nodes.Nameのテーブルです。

  • 年代tが直言配列の場合,年代tのカテゴリがグラフ内のノード名として使用されます。これには,年代またはtの要素ではないカテゴリが含まれる場合があります。

  • 年代およびtで同じ2つのノード間の複数のエッジを指定すると,結果は,多重グラフになります。

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

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

スカラー

例:1

ベクトル

例:(1 2 3)

ノード名

文字ベクトル

例:“一个”

文字ベクトルの细胞配列

例:{“A”“B”“C”}

字符串スカラー

例:“一个”

字符串配列

例:(“A”“B”“C”)

绝对配列

例:分类(“”)

绝对配列

例:分类([“A”“B”“C”))

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

例:{'波士顿' '纽约' '华盛顿特区},{'纽约' '新泽西' '匹兹堡' '})は名前付きノードを5つエッジを3本もつグラフを作成します。

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

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

权重を空の配列[]として指定した場合,これは無視されます。

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

データ型:|

グラフノードの数。正のスカラー整数として指定します。全国矿工工会は,年代tの要素の最大数以上の値でなければなりません。

例:G = graph([1 2],[2 3],[],5)は連結ノードを3つ,孤立ノードを2つもつグラフを作成します。

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

グラフの作成後,G.Edgesを使用してエッジ情報のテーブルをクエリします。

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

データ型:表格

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

グラフの作成後,G.Nodesを使用してノード情報のテーブルをクエリします。

例:NodeTable =表({' a ';“b”;“c”;' d '}, VariableNames,{'名字'})

データ型:表格

出力引数

すべて展開する

無向グラフ。オブジェクトとして返されます。G.Edges.EndNodes内のエッジリストは,まずソースノードで並べ替えてから,ターゲットノードで並べ替えます。

プロパティ

すべて展開する

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

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

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

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

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

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

例:G.Edges.NormWeight = G.Edges.Weight /笔(G.Edges.Weight)は,エッジの正規化された重みを含む新しいエッジプロパティを表に追加します。

データ型:表格

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

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

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

例:G.Nodesは,グラフのノードプロパティがリストされたテーブルを返します。このテーブルは既定では空です。

例:G.Nodes.Names ={'蒙大拿','纽约','华盛顿','加州'}'は,节点表に変数的名字を追加することにより,グラフにノード名を追加します。

例:G.Nodes.WiFi = logical([1 0 0 1 1])は,変数无线网络节点テーブルに追加します。このプロパティは,特定の空港にワイヤレスインターネットのサービスエリアがあることを示します。

データ型:表格

オブジェクト関数

すべて展開する

addedge 新しいエッジをグラフに追加
rmedge グラフからエッジを削除
addnode 新しいノードをグラフに追加
rmnode グラフからノードを削除
findedge グラフ内のエッジを検出
findnode グラフ内のノードを検出
numedges グラフエッジの数
numnodes グラフのノード数
edgecount 2つのノード間のエッジ数
reordernodes グラフノードの並べ替え
子图 部分グラフの抽出
中心 ノードの重要度を測定
conncomp グラフの連結要素
biconncomp グラフの2重連結要素
bctree ブロックカット木グラフ
isisomorphic 2つのグラフが準同型であるかどうかを判別
同构 2つのグラフ間の同型を計算
ismultigraph グラフに複数のエッジがあるかどうかを判別
简化 多重グラフを単純グラフに縮小
bfsearch グラフの幅優先検索
dfsearch グラフの深さ優先検索
shortestpath 2つの単一ノード間の最短経路
shortestpathtree ノードからの最短経路木
距离 すべてのノードペアの最短経路の距離
maxflow グラフの最大フロー
minspantree グラフの最小全域木
allpaths 找出两个图节点之间的所有路径
hascycles 确定图是否包含循环
allcycles 在图中找到所有的循环
cyclebasis 图的基本循环基
邻接 グラフの隣接行列
发病率 グラフの接続行列
拉普拉斯算子 グラフのラプラシアン行列
学位 グラフノードの次数
邻居 グラフノードの隣接ノード
最近的 半径内の最近傍
outedges ノードからの出方向のエッジ
情节 グラフのノードとエッジをプロット

すべて折りたたむ

ノードを3つエッジを2本もつオブジェクトを作成します。1番目のエッジはノード 1 とノード 2 の間にあり、2 番目のエッジはノード 1 とノード 3 の間にあります。

G =图([1 1],[2 3])
G = graph with properties: Edges: [2x1 table] Nodes: [3x0 table]

グラフのエッジテーブルを表示します。

G.Edges
ans =2×1表EndNodes ________ 1 2 1 3

ノード名をグラフに追加し,新しいノードテーブルとエッジテーブルを表示します。各エッジの終了ノードが,ノード名を使用して表されます。

G.Nodes.Name = {“一个”“B”“C”} ';G.Nodes
ans =3×1表名称_____ {'A'} {'B'} {'C'}
G.Edges
ans =2×1表EndNodes ______________ {'A'} {'B'} {'A'} {'C'}

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

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

G = addedge (G, 2、3)
G =具有属性的图:Edges: [3x1 table] Nodes: [3x1 table]
G.Edges
ans =3×1表EndNodes  ______________ {' 一个“}{B} {A} {' C '} {B} {' C '}

対称隣接行列一个を作成します。この行列は,次数4の完全グラフを作成します。論理隣接行列を使用して,重みのないグラフを作成します。

A = ones(4) - diag([1 1 1 1])
一个=4×40 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
图G = (~ = 0)
G = graph with properties: Edges: [6x1 table] Nodes: [4x0 table]

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

G.Edges
ans =6×1表EndNodes ________ 1 2 1 3 1 4 2 3 2 4 3 4

上三角隣接行列を作成します。

一个= triu(魔法(4))
一个=4×416 2 3 13 0 11 10 8 0 0 6 12 0 0 0

この隣接行列を使用して,名前付きノードをもつグラフを作成します。“omitselfloops”を指定して一个の対角要素を無視し,类型“上”に指定して一个が上三角であることを示します。

名称= {“α”“β”“伽马”“δ”};图G =(名称,“上”“omitselfloops”
G =具有属性的图:Edges: [6x2 table] Nodes: [4x1 table]

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

G.Edges
ans =6×2表EndNodes重量  ______________________ ______ {' α’}{“beta”}2{“α”}{“伽马”}3{“α”}{“δ”}13{“beta”}{“伽马”}10{“beta”}{“δ”}8{“伽马”}{“δ”}12
G.Nodes
ans =4×1表的名字  _________ {' α’}{“beta”}{“伽马”}{“δ”}

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

S = [1 1 1 2 2 3 3 4 5 5 6 7];T = [2 4 8 3 7 4 6 5 6 8 7 8];图G = (s, t)
G =具有属性的图形:Edges: [12x1 table] Nodes: [8x0 table]
情节(G)

图中包含一个坐标轴。坐标轴包含一个graphplot类型的对象。

各エッジの末端ノードのリストを使用して立方体グラフを作成し,プロットします。ノード名とエッジの重みを別々の入力として指定します。

S = [1 1 1 2 2 3 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];名称= {“一个”“B”“C”' D '“E”“F”‘G’“H”};图G = (s t重量、名称)
G =具有属性的图:Edges: [12x2 table] Nodes: [8x1 table]
情节(G,“EdgeLabel”G.Edges.Weight)

图中包含一个坐标轴。坐标轴包含一个graphplot类型的对象。

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

S = [1 1 1 1];T = [2 3 4 5 6];权重= [5 5 5 6 9];图G = (s t重量、10)
G =具有属性的图:Edges: [5x2 table] Nodes: [10x0 table]

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

情节(G)

图中包含一个坐标轴。坐标轴包含一个graphplot类型的对象。

空のグラフオブジェクトGを作成します。

G =图;

このグラフにノードを3つエッジを3本追加します。年代tの対応する要素は,グラフエッジの終了ノードを定義します。それらがまだ存在していない場合,addedgeは該当するノードをグラフに自動的に追加します。

S = [1 2 1];T = [2 3 3];G = addedge (G s t)
G = graph with properties: Edges: [3x1 table] Nodes: [3x0 table]

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

G.Edges
ans =3×1表EndNodes ________ 1 2 1 3 2 3

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

変数EndNodes重量および代码を格納するエッジテーブルを作成します。次に,変数的名字および国家を格納するノードテーブルを作成します。各テーブルの変数は,グラフのノードとエッジのプロパティを指定します。

S = [1 1 1 2 3];T = [2 3 4 3 4];权重= [6 6.5 7 11.5 17]';代码= {“1/44”“1/49”“1/33”“44/49”“49/33”} ';EdgeTable = table([s' t'],weight,code,...“VariableNames”,{“EndNodes”“重量”“代码”})
EdgeTable =5×3表EndNodes重量代码  ________ ______ _________ 1 2 6{“1/44”}1 3 6.5{“1/49”}1 4 7{“1/33”}2 3 11.5{“44/49”}3 4 17{“49/33”}
名称= {“美国”“GBR”“德吴”联邦铁路局的} ';country_code = {' 1 '“44”“49”“33”} ';NodeTable =表(名称、country_code“VariableNames”,{“名字”“国家”})
NodeTable =4×2表国家的名字  _______ _______ {' 美国‘}{1}{的GBR}{“44”}{‘德吴}{“49”}{联邦铁路局的}{“33”}

ノードテーブルとエッジテーブルを使用して,グラフを作成します。国コードをノードラベルとエッジラベルとして使用して,グラフをプロットします。

图G = (EdgeTable NodeTable);情节(G,“NodeLabel”G.Nodes.Country,“EdgeLabel”G.Edges.Code)

图中包含一个坐标轴。坐标轴包含一个graphplot类型的对象。

互換性についての考慮事項

すべて展開する

R2018aでの動作変更

R2015bで導入