グラフとは
点と辺からなる図形を言います。
数学的には、点集合

グラフの種類
有名なものとして、下記のグラフがあります。
無向グラフ、有向グラフ
- 無向グラフ:点と点を結ぶ辺に向きが無いこと。
- 有向グラフ:点と点を結ぶ辺に向きが有ること。

院試では、無向グラフが良く問われます。よって、本記事でも無向グラフに焦点を当てて説明していきます。
単純グラフ
グラフを構成する点と点を結ぶ辺(多重辺)が複数個存在せず、自己ループ辺も存在しないグラフを言います。

なお、多重辺が存在するグラフは多重グラフと呼ばれています。
院試問題でグラフ理論を出題する際は、無向グラフかつ単純グラフであることを暗黙の了解として作問することが多いです。
連結グラフ
グラフを構成する任意の点xと点yを結ぶ辺が存在することを言います。
直接xとyを結ぶ場合は勿論連結になりますが、別の点を経由するが、必ず最終地点yに至る道がある場合も連結になります。
要は、グラフが2つに分かれておらず、1つの塊になっているならば、そのグラフは連結であると言えます。

連結成分とは、グラフGを構成する塊の個数を意味しています。連結成分1のとき、グラフは分離しておらず、全て一つの塊になります。
院試では、問題の後半でよく問われます。
グラフの性質
点Vの個数がn個、辺Eの個数がm個である任意のグラフ
握手定理
証明
ある点
それぞれの辺に対し、2本の点が必ず存在し、これが全ての点に対しても成立することから式(2)は証明できた。
奇数次の点の総数は偶数個存在する。
グラフ上の各点から伸びる辺の数は、偶数次、奇数次の2通りに分けられます。
偶数次の辺の場合、総数が奇数、偶数に依らず、(2)式の右辺は必ず偶数(2k)になります。
もし、奇数次の点の総数が奇数個の場合、右辺は奇数(2k’+1)になります。
両者を足しあわせると、右辺は奇数となってしまい、矛盾します。
よって、奇数次の点の総数は偶数個である必要があります。
十分性についても、同様に示すことができます。
単純グラフの性質
グラフを構成する点の最小次数が2以上ならば、Gには閉路が存在する。
背理法を用いて証明します。
閉路が存在しないと仮定するが、そのようなグラフは存在しないことを説明していきます。
具体的には、グラフが連結である場合、長さn-1の点が存在することに注目します。
証明
グラフGを構成するある点
よって、長さ2の道
長さn-1の道
よって、
しかし、この操作を繰り返すと、道の長さが∞に発散する。(矛盾)
以上より、閉路は存在する。
辺の個数mは、点の個数nに対し 以下である。
これは、単純グラフに対して成立します。前節の関係までは、多重グラフに対しても成立していましたが、ここからは別です。
証明
(2)式を変形し
単純グラフのとき、任意の点vの次数は、点の個数nに対し自身の点を引いたn-1個までなので
これを(3)式に代入することで
点の次数は、点の個数nに対し1つ引いた値が最大である考え方は、情報数学に限らずよく使います。
例えば、アルゴリズム論の最小全域木の計算時間を考えるうえでも、探索時間として辺の個数が影響してきます。
このとき、(4)式の関係を頭に抑えておくと、オーダー計算がスムーズにできます。
n≧2のとき、グラフG内には次数が等しい2点が存在する
証明
(4)式より、グラフ上の各点vについて、存在可能な次数は、
もし、ある点の次数がn-1\のとき、自身の点以外全てと辺で繋がる。よって、グラフ全体で見ても次数0の点は存在しないことが分かる。
逆に、次数0の点が存在するならば、次数n-1の点は存在しない。
よって、グラフGの各点で存在可能な次数の組み合わせは、下記の2通り考えられる。
いずれの場合でも、n個ある点のそれぞれの次数はn-1個の値から取られる。
よって、少なくとも2つの点の次数は等しくなることが分かる。
連結グラフの性質
グラフGを構成する任意の点vの次数が のとき、Gは連結である。
グラフGが単純グラフであることが前提です。
感覚的に、各点の次数がグラフを構成する点の総数nに1を引いた(n-1)/2以上ならば、辺を繋ぐ相手の辺の次数も含めてn-1以上になるので、連結になるだろうと予想できます。
数学的に証明すると、以下になります。
証明
グラフGに存在する連結成分の数をkとする。前提条件より
点の数は、頂点の数より1つ多い。よって、各連結成分の点の個数
グラフを構成する点の数はnなので、連結成分の数もこの数以下になる。
これを変形し、
kは1以上ないとグラフとして存在できなくなる。また、グラフを構成する点nは2つ以上無いと、辺が作れず、これもグラフとして成立しない。
n=2を上式に代入すると
これより、
をグラフGの異なる連結成分のとき、 は共有点を持たない。
証明
異なる連結成分=分離されたグラフであることから、互いのグラフは共有点を持ちません。
同様に、分離されたグラフを結ぶ辺も存在しません。
感覚的に理解しやすく、上記で十分と考えます。数学的な証明はここでは割愛します。(ただ、試験で問われた際は数式をしっかり用いましょう。)
をGの任意の連結部分グラフとし、 をGの連結成分のとき
証明
よって、
以上から、
グラフの行列表現、リスト表現
プログラミングを行う上で、グラフは行列表示、リスト表示し、コンピュータで計算できる形にすることが多いです。
行列表現
グラフを構成する各点に番号を振り、点と点の間が辺で結ばれている(隣接している)場合は、対応する行列の要素に1を設定する表記方法です。隣接行列とも呼ばれます。

- 直感的であるため、人間の目で見ても点と点の関係が分かりやすい。
- 点同士が隣接しているとき、隣接行列に辺の重みを設定することで、コストも表現できる。
- 隣接していない要素に対し0を設定する必要があり、その分のメモリを消費する。
- 大規模なグラフを扱う場合、計算負荷が大きい。
リスト表現
グラフを構成する各点に対し、ポインタでリスト化し、接続関係を表す方法です。(隣接リストとも呼ばれます。)
この場合、接続している点同士のみをリストで対応すれば良く、隣接行列のようにメモリ負荷をかけることがありません。
一般的に、計算機でグラフを表現するときに最もよく使われる手法になります。

最後に
本記事では、グラフ理論の基礎が詰まっています。
数学的な証明として、集合を気にする必要があり、抽象的になることが多いです。じっくり練習し、自分のものにしましょう。