隣接行列

提供: testwiki
ナビゲーションに移動 検索に移動

テンプレート:混同

12341234(0100101101000100)
辺の重みと多重辺を
持たない無向グラフ
左のグラフに対する
4x4-隣接行列
A=(001260010000002003200000070000)
辺の重みを持ち、多重辺を
持たない有向グラフ
左のグラフに対する
隣接行列
A=(0300204000010020)
辺の重みを持ち、多重辺を
持つ有向グラフ
ループを持たない左のグラフの
可約隣接行列

グラフ理論および計算機科学において、隣接行列(りんせつぎょうれつ、テンプレート:Lang-en-short)は、有限グラフを表わすために使われる正方行列である。この行列の要素は、頂点の対がグラフ中でテンプレート:仮リンクしているか否かを示す。

有限単純グラフの特別な例では、隣接行列はその対角上に0を持つ テンプレート:仮リンクである。もしグラフが無向ならば、隣接行列は対称である。グラフとその隣接行列の固有値および固有ベクトルとの間の関係はスペクトラルグラフ理論において研究される。

隣接行列はグラフに関する接続行列および次数行列と区別されなければならない。接続行列は、その要素が頂点-辺の対が接続しているか否かを示す行列表現であり、次数行列は個々の頂点次数に関する情報を含む行列表現である。

定義

頂点の組Vを持つ単純グラフについて、隣接行列はその要素A'テンプレート:Subが頂点iから頂点jへの辺が存在する時は1、辺が存在しない時は0であるような テンプレート:Abs × テンプレート:Abs正方行列Aである[1]。この行列の対角要素は全て0である(単純グラフでは頂点からそれ自身への辺〈テンプレート:仮リンク〉は許されないため)。また、代数的グラフ理論において代数変数を持つ非ゼロ要素を置換するために有用なこともある[2]

同じ概念は2つの頂点間の辺の数を対応する行列要素に格納することや非ゼロの対角要素を許容することによってテンプレート:仮リンクやループを持つグラフへと拡張することができる。ループは、一貫した慣習に従っている限り、1回(単一の辺)数えても2回(2つの頂点-辺接続として)数えてもよい。無向グラフはループを2回数える後者の慣習を使用することが多いが、有向グラフは通常前者の慣習を使用する

2部グラフ

2つの部分がr個とs個の頂点を持つ2部グラフの隣接グラフAは以下の形式で書くことができる。

A=(0r,rBBT0s,s),

上式において、Bテンプレート:Nowrap 行列、0テンプレート:Subおよび0テンプレート:Subテンプレート:Nowrapおよびテンプレート:Nowrapゼロ行列を表す。この場合、より小さな行列Bがグラフを一意に表し、Aの残りの部分は冗長として捨てることができる。Bはbiadjacency行列と呼ばれることがある。

形式的に、テンプレート:Nowrapを部分テンプレート:Nowrap}およびテンプレート:Nowrap}を持つ2部グラフとする。Biadjacency行列は、 テンプレート:NowrapEの時かつその時に限りテンプレート:Nowrapテンプレート:Nowrap 0–1行列Bである。

Gが2部多重グラフまたは重み付きグラフならば、要素 bテンプレート:Subは頂点間の辺の数、または辺テンプレート:Nowrapの重みをそれぞれ取る。

バリエーション

単純グラフの テンプレート:Nowrap-「隣接行列」は、(i, j) が辺ならばAテンプレート:Sub = a、辺でなければb、対角上にcを持つ。テンプレート:仮リンクテンプレート:Nowrap-「隣接行列」である。この行列は強正則グラフテンプレート:仮リンクの研究で使われる[3]

距離行列は、位置 (i, j) に頂点vテンプレート:Subvテンプレート:Subとの間の距離を有する。この距離は頂点を連結する最短の道の長さである。辺の長さが明示的に与えられていない限り、道の長さは道中の辺の数である。距離行列は隣接行列の高冪と似ているが、2つの頂点が連結しているかどうか(すなわち、真偽値を含む連結行列)だけを教える代わりに、頂点間の正確な距離を与える。

無向グラフ

ここでは(無向グラフについて)、それぞれの辺が行列中の適切なセルに1を加え、それぞれのループが2を加えるという慣習に従う[4]。これによって、隣接行列中のその対応する行または列中の値の和を取るとによって頂点の次数を容易に見付けることが可能である。

テンプレート:仮リンク 隣接行列
(210010101010010100001011110100000100)


座標は1–6。


テンプレート:仮リンク


座標は0–23。
白い場は0、色付けされた場は1である。

有向グラフ

有向グラフでは、頂点の入次数は対応する列の成分の和を取ることによって計算でき、出次数は対応する行の成分の和を取ることによって計算できる。

ラベル付きグラフ 隣接行列


Sテンプレート:Sub有向ケイリーグラフ


座標は0–23。
グラフが有向であるため、隣接行列は必ずしも対称ではない。

自明なグラフ

完全グラフの隣接行列は、成分が0の対角要素以外は全て1を含む。空グラフの隣接行列はゼロ行列である。

性質

スペクトル

無向単純グラフの隣接行列は対称であり、したがって固有値および直交固有ベクトル基底の完全集合を持つ。グラフの固有値一式はグラフのスペクトルである[5]。通常、固有値をλ1λ2λnと表す。

最大固有値λ1は最大次数によって上に有界である。これはペロン=フロベニウスの定理の結果として見ることができるが、容易に証明することができる。vλ1と関連した1つの固有ベクトルとし、xvが最大の絶対値を持つ成分とする。一般性を失うことなくvテンプレート:Subは正と仮定する。なぜならさもなければ、単純に(これもλ1と関連した)固有ベクトルvを取ると、

λvx=(Av)x=y=1nAx,yvyy=1nAx,yvx=vxdeg(x)

となるためである。

d次正則グラフについて、dはベクトルテンプレート:Nowrapに対するAの最初の固有値である(これが固有値であり、上界により最大値であることを調べることは簡単である)。この固有値の多重度はGの連結成分の数であり、具体的には連結グラフではλ1>λ2である。もしGが2部グラフならば、それぞれの固有値λiについて、その反数 λi=λn+1iAの固有値であるテンプレート:Cn。具体的には、-dは2部グラフの固有値である。

λ1λ2はスペクトルギャップと呼ばれ、Gテンプレート:仮リンクと関連している。また、スペクトルギャップは、λ(G)=max|λi|<d|λi|によって示されるAスペクトル半径を導入するためにも有用である。この数はλ(G)2d1o(1)で境界がある。この境界はラマヌジャングラフにおいてタイトである。ラマヌジャングラフは多くの分野に応用を持つ。

同型写像と不変量

隣接行列Aテンプレート:SubおよびAテンプレート:Subを持つ2つの有向または無向グラフGテンプレート:SubおよびGテンプレート:Subが与えられると仮定する。Gテンプレート:SubおよびGテンプレート:Subは、

PA1P1=A2

というような置換行列Pが存在する時かつその時に限り同型である。

具体的には、Aテンプレート:SubおよびAテンプレート:Sub相似であり、したがって同一の最小多項式固有多項式、固有値、行列式を有する。したがってこれらは、グラフの同型不変量として機能する。しかしながら、2つのグラフは同じ固有値の組を持つかもしれないが、同型ではない[6]。こういった線型作用素テンプレート:仮リンク的と言われる。

行列の冪

Aが無向または有向グラフGの隣接行列とすると、行列Aテンプレート:Sup(すなわちAn個の複製の)は興味深い解釈を持つ: 要素テンプレート:Nowrapは頂点iから頂点jへの長さnの(有向または無向)歩道の数を与える。nが、あるijについてAテンプレート:Supの要素テンプレート:Nowrapが正となるような最小の非負整数とすると、nは頂点iと頂点jとの間の距離である。これは、例えば、無向グラフG中の三角形の数が厳密にAテンプレート:Supの跡を6で割った数となることを暗に示す。ここで留意すべきは、隣接行列はグラフが連結しているかどうかを決定するために使うことができることである。

データ構造

隣接行列は、グラフを操作するためのコンピュータプログラムにおけるグラフの表現のためのデータ構造として使うことができる。この応用のためにも使われる主な代替データ構造は隣接リストである[7][8]

隣接行列中の各成分は1ビットしか必要としないため、隣接行列は非常にコンパクトなやり方で表すことができ、有向グラフを表わすためにはわずかテンプレート:Absテンプレート:Sup/8バイト、無向グラフを表わすためには(パック三角形式を用い、行列の下部三角部分のみを格納することによって)わずか約 テンプレート:Absテンプレート:Sup/16しか占めない。わずかにより簡潔な表現も可能であるものの、この方法は全てのテンプレート:Mvar頂点グラフを表すために必要な最小ビット数の情報理論的下界に近付く[9]テキストファイルにグラフを格納するためには、全てのバイトがテキスト文字であることを(例えばBase64表現を使うことによって)保証するためにバイト毎により少ないビットした使うことができない[10]。無駄な空間を避けることに加えて、このコンパクトさは参照の局所性を促す。しかしながら、大きなテンプレート:仮リンクでは、隣接リストの方が必要とする格納空間が小さい。これは、隣接リストは存在「しない」辺を表わすためのいかなる空間も無駄にしないためである。

隣接行列の別形式(しかし、より大きな空間量を必要とする)は行列の個々の要素中の数を(辺が存在する時は)辺オブジェクトへのポインタあるいは(辺が存在しない時は)ヌルポインタで置き換える[11]。また、辺の重みを隣接行列の要素中に直接格納することも可能である[8]

空間のトレードオフに加えて、異なるデータ構造は異なる操作をも容易にする。隣接リスト中の任意の頂点に隣接する全ての頂点を探すことはリストを読むのと同じぐらい単純であり、隣の数の比例した時間がかかる。隣接行列を使うと、代わりに全行をスキャンしなければならず、これはグラフ全体の中の頂点の数に比例したより長い時間がかかる。一方、任意の2つの頂点間に辺が存在するかどうかを調べるのは隣接行列を使うと瞬時に決定することができるのに対して、隣接リストを使うと2つの頂点の最小次数に比例した時間を要する[8][11]

出典

テンプレート:Reflist

関連項目

外部リンク

テンプレート:Normdaten

  1. テンプレート:Citation.
  2. テンプレート:Citation.
  3. テンプレート:Cite journal
  4. テンプレート:Cite conference
  5. テンプレート:Harvtxt, Chapter 2 ("The spectrum of a graph"), pp.7–13.
  6. Godsil, Chris; Royle, Gordon Algebraic Graph Theory, Springer (2001), テンプレート:ISBN2, p.164
  7. テンプレート:Harvtxt, p.361: "There are two data structures that people often use to represent graphs, the adjacency list and the adjacency matrix."
  8. 8.0 8.1 8.2 テンプレート:Citation.
  9. テンプレート:Citation.
  10. テンプレート:Citation.
  11. 11.0 11.1 テンプレート:Citation.