グラフ g の頂点 - 頂点の隣接行列を与える.
AdjacencyMatrix[{vw,…}]
規則 vw を使ってグラフ g を指定する.
AdjacencyMatrix
グラフ g の頂点 - 頂点の隣接行列を与える.
AdjacencyMatrix[{vw,…}]
規則 vw を使ってグラフ g を指定する.
詳細
- 隣接行列は,連結性行列としても知られている.
- AdjacencyMatrixはNormalを使って通常の行列に変換可能なSparseArrayオブジェクトを返す.
- 隣接行列の項 aijは頂点 νiから頂点 νjへの有向辺の数である.
- 対角項 aiiは頂点 viのループの数を数える.
- 無向辺は方向が逆の2つの有向辺と解釈される.
- 頂点 viはVertexList[g]で与えられる順序であるとみなされる.
- グラフの隣接行列の次元は
×
である.ただし,
は頂点数である.
予備知識
- AdjacencyMatrixは,正方行列を返す.その行と列はグラフの頂点に対応し,要素 aij は,頂点 vi から頂点 vj までの(有向)辺の数を与える非負の整数である.隣接行列は,行列に対する簡単な操作を使って,数多くの特性を計算するのに使えるグラフの便利な表現を提供する.隣接行列を与えることによって効率的に行えるグラフの計算の例には,頂点次数,入次数と出次数,最高で
ステップの頂点間の経路の数,グラフスペクトル等がある.
個の頂点のグラフについては,隣接行列は
×
の次元を持つ.無向グラフについては,隣接行列は対称である.有限の単純グラフ(例:自己ループや複数辺を持たない,無向で,重みなしのグラフ)については,隣接行列は対角に0を持たなければならず,その行列要素は,
が
に隣接している場合には
によって,その他の場合には
によって与えられる.- 頂点の特定の順序に基づくグラフの明示的な隣接行列の表現は,一意的である.しかし,グラフの頂点は置換できるので,対応する同形クラスのグラフを表す隣接行列のクラスが存在する.ただし,同形クラスの隣接行列は行列の行と列の一意的なモジュロ置換である(グラフ頂点のラベルを付け直すことに正確に対応する).
- AdjacencyGraphを使って,隣接行列からグラフを構築することができる.IncidenceMatrixは,頂点と頂点の関係の代りに,頂点と辺の関係を与えるグラフの別の行列表現を与える.AdjacencyMatrixはグラフの重みを考慮に入れないので,辺の重みを持つグラフの隣接行列を計算する場合には,WeightedAdjacencyMatrixを使わなければならない.
例題
すべて開く すべて閉じる例 (2)
スコープ (5)
Graph[{12, 13, 23, 24, 34}]AdjacencyMatrix[%]//MatrixFormGraph[{12, 21, 31, 32, 41, 42}]AdjacencyMatrix[%]//MatrixFormAdjacencyMatrix[{1 -> 2, 2 -> 1, 3 -> 1, 3 -> 2, 4 -> 1, 4 -> 2}]//MatrixForm{Graph[{12, 23, 31, 22}], Graph[{11, 12, 23, 31}]}MatrixForm /@ AdjacencyMatrix /@ %AdjacencyMatrixは大きいグラフに使うことができる:
Graph[Table[iMod[i ^ 2, 10 ^ 3], {i, 0, 10 ^ 3 - 1}]];Timing[m = AdjacencyMatrix[%]]MatrixPlotを使って行列を可視化する:
MatrixPlot[m]アプリケーション (7)
adjacencyDegree[g_ ? UndirectedGraphQ] := With[{a = AdjacencyMatrix[g]}, Total[a] + Diagonal[a]]adjacencyDegree[[image]]VertexDegree[[image]]adjacencyInDegree[g_ ? DirectedGraphQ] := Total[AdjacencyMatrix[g]]adjacencyInDegree[[image]]VertexInDegree[[image]]adjacencyOutDegree[g_ ? DirectedGraphQ] := Total[AdjacencyMatrix[g]]adjacencyOutDegree[[image]]VertexOutDegree[[image]]有向グラフのすべての頂点間の厳密に
ステップまでの経路数を数える:
graphPathCountMatrix[g_ ? DirectedGraphQ, k_Integer ? Positive] :=
MatrixPower[AdjacencyMatrix[g], k]graphPathCountMatrix[[image], 2]//MatrixForm有向グラフで
から
までの厳密にステップ
の経路の数を数える:
graphPathCount[g_ ? DirectedGraphQ, s_, t_, k_Integer ? Positive] :=
MatrixPower[AdjacencyMatrix[g], k][[VertexIndex[g, s], VertexIndex[g, t]]]graphPathCount[[image], 1, 5, 2]2つの頂点の共引用が共通祖先の数である共引用行列を計算する:
cocitationMatrix[g_ ? DirectedGraphQ] := With[{a = AdjacencyMatrix[g]}, a.a - DiagonalMatrix[Diagonal[a.a]]]g = [image];cocitationMatrix[g]//MatrixForm%[[VertexIndex[g, Subscript[J, 2]], VertexIndex[g, Subscript[J, 3]]]]2つの頂点間のカップリングが共通祖先の数であるカップリング行列を計算する:
couplingMatrix[g_ ? DirectedGraphQ] := With[{a = AdjacencyMatrix[g]}, a.a - DiagonalMatrix[Diagonal[a.a]]]g = [image];couplingMatrix[g]//MatrixForm%[[VertexIndex[g, Subscript[P, 1]], VertexIndex[g, Subscript[P, 4]]]]特性と関係 (14)
隣接行列の行と列はVertexListで与えられる順序に従う:
g = Graph[{23, 31, 12, 14}, VertexShapeFunction -> "Name", VertexStyle -> Blue]VertexList[g]TableForm[Normal@AdjacencyMatrix[g], TableHeadings -> {c = Style[#, Blue]& /@ %, c}]VertexIndexを使って頂点ペアに対応する行列の行と列を求める:
g = Graph[{23, 31, 12, 14}, VertexShapeFunction -> "Name"](a = AdjacencyMatrix[g])//MatrixForma[[VertexIndex[g, 1], VertexIndex[g, 4]]] == 1EdgeQと比較する:
% == EdgeQ[g, 14]g = CompleteGraph[4]AdjacencyMatrix[g]//MatrixFormSymmetricMatrixQ[%]AdjacencyGraphを使って隣接行列からグラフを構築する:
AdjacencyGraph[{{0, 1, 0}, {0, 0, 1}, {1, 1, 0}}]AdjacencyMatrix[%]//Normalループのない任意のグラフの隣接行列の主対角の項はすべて0である:
GridGraph[{2, 3}]Diagonal[AdjacencyMatrix[%]]//Normalg = CompleteGraph[5]Dimensions[AdjacencyMatrix[g]]VertexCount[g]{g, h} = {PetersenGraph[4, 1], HypercubeGraph[3]}IsomorphicGraphQ[g, h]AdjacencyMatrix[g] == AdjacencyMatrix[h]g の隣接行列を等しい h の行列を得るマッピングに従って置換する:
perm = Values[First[FindGraphIsomorphism[g, h]]]AdjacencyMatrix[g][[perm, perm]] == AdjacencyMatrix[h]d 固有値の多重性が1であるとき,d 正則グラフ g は連結グラフである:
g = HypercubeGraph[3]VertexDegree[g]Count[Eigenvalues[AdjacencyMatrix[g]], 3]ConnectedGraphQ[g]完全グラフの場合は,対角外の項はすべて隣接行列では1である:
AdjacencyMatrix[CompleteGraph[10]]//MatrixPlotAdjacencyMatrix[CompleteGraph[{2, 3, 4}]]//MatrixPlotTuranGraphは二部グラフである:
BipartiteGraphQ[g = TuranGraph[5, 2]]MatrixPlot[AdjacencyMatrix[g]]StarGraphは第1行と第1列のみに1がある:
AdjacencyMatrix@StarGraph[10]//MatrixPlotPathGraph[Range[20]]MatrixPlot[AdjacencyMatrix[%]]線グラフの隣接行列はそのIncidenceMatrixで計算することができる:
g = GridGraph[{2, 3}]m = IncidenceMatrix[g];MatrixPlot /@ {Transpose[m].m - 2IdentityMatrix[EdgeCount[g]], AdjacencyMatrix[LineGraph[g]]}関連するガイド
-
▪
- グラフと行列 ▪
- グラフの構築と表現 ▪
- グラフプログラミング ▪
- グラフ上の計算
テキスト
Wolfram Research (2010), AdjacencyMatrix, Wolfram言語関数, https://reference.wolfram.com/language/ref/AdjacencyMatrix.html (2015年に更新).
CMS
Wolfram Language. 2010. "AdjacencyMatrix." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2015. https://reference.wolfram.com/language/ref/AdjacencyMatrix.html.
APA
Wolfram Language. (2010). AdjacencyMatrix. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/AdjacencyMatrix.html
BibTeX
@misc{reference.wolfram_2026_adjacencymatrix, author="Wolfram Research", title="{AdjacencyMatrix}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/AdjacencyMatrix.html}", note=[Accessed: 10-July-2026]}
BibLaTeX
@online{reference.wolfram_2026_adjacencymatrix, organization={Wolfram Research}, title={AdjacencyMatrix}, year={2015}, url={https://reference.wolfram.com/language/ref/AdjacencyMatrix.html}, note=[Accessed: 10-July-2026]}