隣接リスト

From Wikipedia, the free encyclopedia

隣接する頂点を付記した無向グラフ。この場合の隣接リストは {2,3}, {1,3}, {1,2,4}, {3} となる。

隣接リスト(りんせつリスト、: adjacency list)は、グラフ理論でのグラフにある頂点または辺を全てリスト(一覧)で表現したものである。

一般に隣接リストでは順序は不定である。

上図のグラフは以下のような隣接リスト表現を持つ:
12,3と隣接
21,3と隣接
31,2,4と隣接
43と隣接

計算機科学において、隣接リストはグラフを表すデータ構造と密接な関係がある。隣接リスト表現では、各頂点について、1つの辺でその頂点とつながっている全ての他の頂点のリストを作る(これがその頂点の「隣接リスト」である)。例えば、ヴァンロッサムが示唆した表現では、各頂点とその隣接する頂点群の配列ハッシュテーブルで関連付ける[1]。これは隣接リスト表現のインスタンスの1つと考えられる。また、Cormen らの表現では、頂点の番号をインデックスとする配列に各頂点の隣接する頂点群の片方向リストへの参照を格納する[2]

隣接リスト構造の問題点は、グラフの辺についてのデータ(例えば、長さ、コストなど)を格納する明確な場所がない点である。その解決策として、例えば Goodrich と Tamassia の著書では、よりオブジェクト指向的に隣接リスト構造を変形し、各頂点に接合する辺を表したオブジェクトのリストを格納するオブジェクト(incidence list と呼ぶ)を提案している[3]。この構造を完成させるには、各辺から2つの端点の頂点への参照を行う必要がある。このバージョンの隣接リストでは、辺オブジェクトが追加されるため、頂点だけをリストにしているものよりもメモリを余分に消費する。しかし、辺に関する情報を格納するには便利である。

トレードオフ

脚注

参考文献

Related Articles

Wikiwand AI