グラフの基本
informationgraphundergraduatelecture
1導入
この講義では、対象間の関係を頂点と辺で表すグラフの定義と、探索を記述するために必要な隣接・道・距離・連結性を説明する。
道路網では交差点の形より接続関係が重要であり、通信網では機器の外観より通信可能性が重要である。グラフは、対象そのものから関係だけを抽出し、異なる問題を同じ構造として扱うための表現である。
2用語と定義
グラフ G=(V,E) は、頂点の集合 V と辺の集合 E からなる。頂点は対象を、辺は二つの対象間の関係を表す。この講義の無向グラフは有限単純グラフであり、
E\subseteq\bigl\{\{u,v\}\subseteq V\mid u\ne v\bigr\}
とする。したがって、自己ループと多重辺は含まれない。
有向グラフでは E\subseteq V\times V とし、辺 (u,v) は u から v への向きを持つ。以下では、特に断らない限り有限単純無向グラフを扱う。
二頂点 u,v が辺で直接結ばれているとき、u と v は隣接するという。頂点 v に隣接する頂点の集合を
N(v)=\{u\in V\mid \{u,v\}\in E\}
と書く。
3道と距離
頂点列
v_0,v_1,\ldots,v_k
が各 i=1,\ldots,k について \{v_{i-1},v_i\}\in E を満たすとき、この列を長さ k の歩道という。さらに v_0,\ldots,v_k が相異なるとき、これを道という。頂点 s から v への歩道が存在するとき、閉路を除けば道が得られるため、v は s から到達可能である。
無重みグラフにおける距離 d(s,v) は、s から v への道の長さの最小値である。道が存在しない場合は d(s,v)=\infty とする。ここで「無重み」とは、すべての辺を一歩として数えることを意味する。
4連結性
任意の二頂点の間に道が存在する無向グラフを連結という。連結でないグラフは、互いに到達可能な頂点をまとめた連結成分に分解できる。
例えば
V=\{a,b,c,d\},\qquad E=\{\{a,b\},\{b,c\}\}
では、a,b,c は同じ連結成分に属し、d は単独の連結成分をなす。また、d(a,c)=2 である。
5表現方法
隣接リストは各頂点 v に対して N(v) を保存する。頂点数を |V|、辺数を |E| とすると、無向グラフの全隣接リストの要素数は 2|E| である。各辺が両端点のリストに一度ずつ現れるためである。
隣接行列は、頂点に番号を付け、辺の有無を行列要素で表す。辺の存在判定は高速だが、頂点数の二乗に比例する領域を必要とする。疎なグラフでは隣接リストが適し、密なグラフや辺の存在判定を頻繁に行う場合は隣接行列が候補になる。
6探索への接続
グラフ探索は、始点から隣接頂点を順に調べ、到達可能な頂点を列挙する操作である。この講義で定義した頂点、辺、隣接、道、距離が、DFSとBFSの入力と主張を構成する。
data/lecture/information/algorithm/search/dfs-and-bfs-basics.lecture.n.md
7まとめ
data/exercise/information/algorithm/search/graph-traversal-and-unweighted-distance.exercise.n.md
- グラフ G=(V,E) は、対象を頂点、関係を辺として表す。
- 道は相異なる隣接頂点を順に並べた列であり、無重み距離は最短の道の辺数である。
- 連結性は、任意の二頂点間の到達可能性で定義される。
- 隣接リストと隣接行列は、同じグラフを異なる計算特性で表現する。