この記事は,執筆陣より平山が第74回灘校文化祭(2020年・オンライン開催)に寄せて数学研究部の部誌として執筆した きほんの「き」から始めるグラフ理論 ~数学オリンピックの視点から~ の移植・改訂版となります.今後も継続的に加筆・修正が施される可能性があります.
0. はじめに
早速ですが,「グラフ」という単語を聞いて皆さんはどのような概念を想像しますか?明鏡国語辞典第二版(大修館書店)には以下のような定義がなされています:
- 観察・比較を容易にするために,二つ以上の数量や関数の関係を図に表したもの
これにはいわゆる「棒グラフ」や「円グラフ」,あるいは座標平面上に直線や曲線を表現したものが含まれるでしょう.しかし今回我々が扱う「グラフ」はこれらとはかなり異なる概念です.
今回考える「グラフ」として最も身近な対象の一つに鉄道の路線図があります.路線図には実際の形状や距離などが正確には表現されていません.それでも我々が困らないのは,「それぞれの駅(頂点)がどのように路線(辺)で結ばれているか」が最も重要な情報だからです1.こうした「つながり方」に着目して抽象化された図形が今回扱う「グラフ」です.
言語的に定義をすると,グラフ (graph) とは有限個の頂点 (vertex) と有限本の辺 (edge) からなる図形です2.ただし各辺は
ところでこのグラフ理論ですが,タイトルにもある通り数学オリンピックにおいても題材となることが少なくありません.一つ例を見てみましょう.この問題は本編で再び扱います.
数学オリンピックでグラフ理論が題材となっている問題は上のように適当な設定付けが行われていることが多く,題意を理解する上で直接的にグラフ理論の知識が求められることは基本的にありません.しかしながらグラフ理論の知識を有していると見通しが良くなるケースが殆どです.不思議なことに数学オリンピックにおけるグラフ理論は,いわゆる競技プログラミングなどにおけるそれと比べて遥かに開拓が進んでいない印象があり,全体的に難易度も過大評価されているように見えます.したがって一定の訓練を積めば,ある程度の難問でも物にできるチャンスがある分野と言えましょう.
基本的に一切の前提知識を仮定せず記述していくので,ある程度の心得があるという方は適宜スキップしてください.
1. 基本的な用語
まずは大前提となる基本的な用語の定義を列挙します3.
- ある辺が結ぶ頂点を端点 (endpoint) と呼びます.ある頂点がある辺の端点であるときこれらは接続している (incident) と言います.
- ある
つの頂点を結ぶ辺が存在するとき,これらは隣接している (adjacent) と言います.またある つの辺が端点を共有しているときこれらを隣接している (adjacent) と言います4.
- ある辺の両端点が等しいとき(自己)ループ (loop) と呼びます.またある
頂点間に複数の辺が存在するとき多重辺 (multiple edges) と呼びます.ループも多重辺も含まないグラフを単純 (simple) と言います.
以下,特に断りがない限り単に「グラフ」と言えば有限・単純・無向なものを指すものとします.
- グラフ
について,その頂点集合を ,辺集合を で表すものとします. つのグラフ と について, かつ であるとき, を の部分グラフ (subgraph) と呼びます5.特に,「 の辺であって両端点が に属するもの全体」が に一致するとき, を誘導部分グラフ (induced subgraph) と呼びます6.
- ある頂点に接続する辺の数を次数 (degree) と呼びます.すべての頂点の次数が
で等しいグラフを -正則 (regular) と呼びます.特に,任意の 頂点間に辺が存在する 頂点の (単純) グラフを完全グラフ (complete graph) と呼び, で表します.これは -正則です.
以下の命題は定義より明らかですが非常に重要なもので,問題を解く上で意外な盲点になることもあります.
- 隣接する頂点を辿って出来る経路のうち7,経由する辺の重複を許さないものを路 (trail),さらに経由する頂点の重複も許さないものを道 (path) と呼びます.また始点と終点が一致する路を閉路 (cycle)と呼びます8.ある道に含まれる辺の本数を長さ (length)と呼びます.
- あるグラフの任意の
頂点を結ぶ道が存在するとき連結 (connected) と言い,そうでないとき非連結 (disconneted) と言います.あるグラフ の連結な部分グラフ であって, を部分グラフとする連結な の部分グラフが しか存在しないものを の連結成分 (connected component) と呼びます9.
- 連結グラフ(あるいは同じ連結成分)において,ある
頂点間を結ぶ道の長さの最小値を距離 (distance) と呼びます. - 取り除くと連結成分の数が増えるような辺を橋 (bridge) と呼びます.
何がグラフとみなせるか?
冒頭で述べた通り,グラフ理論を背景とする数学オリンピックの問題のステートメントのほとんどはグラフ理論の用語で記述されていません.多くは日常感のある設定に置き換えられており,代表的なものとしては人間関係(友人である・同じグループである etc.)や交通網(航空網・高速道路 etc.)などが挙げられます.
しかしながら,一見グラフに関係するようには全く見えないが実はグラフとみなせる状況も数多く存在し,これはグラフ理論の醍醐味の一つと言えるかもしれません.一例としてはマス目です.
一般にマス目に対して,各マスを頂点とし隣接する
他にもより奇抜なグラフの構築を求められることはしばしばあります.そもそも設定がC分野ではないかもしれません.(ネタバレにはなりますが)例えば以下の問題でグラフが利用できるとは,一瞥しただけでは誰も気付かないでしょう(練習問題として再掲します).
逆にグラフのように見えるが別なる視点から捉え直した方が良い問題も無論あります.
このように分野をクロスオーバーする問題は,ともすれば大外れした方針に嵌まり込んでしまう危険性もありますが,数学オリンピックの面白さの一つでもあります.地道に実験と考察を重ねて手がかりをつかみましょう.
練習問題
連結グラフにおいて最長のパスが
連結グラフの辺
グラフ
区分線形関数
2. きほんの「木」
定理2.2.の条件の一つ (すなわちすべて) を満たすような連結グラフを木 (tree) と呼びます.以下の系は定理2.2.の証明よりただちに得られますが,系2.3.は不等式評価などで盲点になりがちですし,系2.4.も決して完全に自明ではありません.
これらの性質をみたすグラフが「木」と呼ばれる所以を探りましょう.ある頂点を選び,それが一番「上」にあるとします.このとき,定理2.2.(3)を考慮すると,
(根以外で) 次数
深さ優先探索 (DFS)
根付き木の重要な応用例の一つとして深さ優先探索 (depth-first search) を紹介します.情報科学の用語ですが,その発想自体は数学オリンピックにも無用ではありません13.これは一般のグラフの頂点を全探索するアルゴリズムの一つです.
まず根付き木に対するDFSは定式的に以下のように表現されます.頂点
: の子 それぞれについて を順に行う.ただし が葉のとき何もしない.
より噛み砕いて言語化すると以下のようになります.実際に適当な根付き木を描いて追ってみましょう14 15.
- 根からスタートし,適当な子を選びながら下れるだけ下る.
- 葉に到達したら,一つずつ後戻りする.
- 訪れていない子が存在するとき,そこから適当な子を選びながら下れるだけ下る.
- 2.と3.を繰り返し,根に再び戻ってきたら終了する.
この方法を応用して,一般のグラフに対してもDFSを考えることが出来ます.
- 適当な頂点からスタートし,隣接する頂点であって過去に訪れていないものを適当に選びながら進めるだけ進む.
- 進める頂点が無くなったら,一つずつ後戻りする.
- 隣接する頂点であって過去に訪れていないものが存在するとき,1.に戻る.
- 最初にスタートした頂点に再び戻ってきたら終了する.
上の手順で明らかに全ての頂点を経由します.ここで途中で通った辺集合に着目すると,連結で閉路を含まないことから木,すなわち全域木をなしていることがわかります.DFSは全域木を取得する最も単純なアルゴリズムの一つでもあります.
ここでは取り扱いませんが,同様のアルゴリズムに幅優先探索 (breadth-first search) があります.これはある頂点から見た「深さ」が等しい頂点をすべて同時に見ていくことで探索を行います.DFSとBFSにはそれぞれの長所があります.
練習問題
- 島
と が隣接しているとき, 島の手紙の送付先は隣接しているか同一である
このとき「自分自身に手紙を送った島」または「互いに手紙を交換した隣接する
無限に広がるマス目のうち,連結な
の内部に完全に含まれる- 二つに分けられた外周それぞれが
個以上の頂点を含む (対角線の端点を除く)
3. 辺彩色
辺彩色 (edge coloring) とは,読んで字の如くグラフの辺をいくつかの色を用いて塗り分けることです.ここで (当然ですが) それぞれの辺全体は同じ色で塗るものとします.一般的に「辺彩色」と言えば「隣接する辺は異なる色で塗る」という制約が課されることがほとんどですが,ここではこの制約を課した辺彩色を特に最適辺彩色と呼んで区別するものとします.
Ramseyの定理
Ramseyの定理とは辺彩色における最も根本的な主張の一つで,一般には以下のように記述されます16 17.
ここでは最も単純な結果である18 以下の定理について
最適辺彩色
あるグラフを出来るだけ少ない種類数の色で最適辺彩色することを考えます.グラフ
この場合は明らかですが,実際には木のみならず,一般に二部グラフについても同様の主張が成立することが知られています.
さらに一般のグラフについても類似の主張が成立します.一般的にかなり高い効率で最適辺彩色が可能ということです.
証明はこちらのPDFなどを参照してください.残念ながら具体的に
練習問題
完全グラフ
4. 二部グラフ
グラフ
異なる独立集合に属する頂点対すべてに辺を張った
ここでは特に
二部グラフの最も重要な言い換えが以下の定理4.2.です.直感的に明らかに思えるようになると良いです.
上の定理の意外な応用例を見ることが出来ます.なお実際のところ後半はただのオマケで,前半の方が本質的です20.
Hallの結婚定理
あるグラフのマッチング (matching) とは,辺集合であって互いに端点を共有しないものを言います.特に二部グラフにおけるそれ (二部マッチング) は重要な興味です.唐突ですが合コンを想像してみましょう.同じ人数の男女が参加しており,各人には好みの異性が何人かいます.このとき全員が好みの異性と結ばれるような「マッチング」(完全マッチングと呼ばれます) は存在するでしょうか?これに対して簡潔な必要十分条件を与えるのが以下の定理です.
この定理の少し特殊な応用例の一つとして,各マスに
練習問題
- どの島からも奇数本の橋を渡って自身へ戻ってこれない.
先に橋を架けられなくなった方を負けとするとき,先手必勝となる
- 任意の
に対し, と の距離は と の距離以上である.
このとき
マス目
各マスに非負整数の書き込まれた
各マスに
- 同行および同列のものを含まないような任意の
マスからなる部分集合には,少なくとも が一つ以上存在する.
このとき,
5. 隣接行列
- 正整数
に対し,行列 の 成分は「頂点 から に至る長さ の相異なる歩道の数」を表す. - 成分がすべて
の 次元列ベクトルを で表すと,列ベクトル の 成分は頂点 の出次数を表す. の転置を で表すと,列ベクトル の 成分は頂点 の入次数を表す.- 行列
において, 成分は頂点 の出次数を表し, 成分 ( ) は「頂点 を始点とする辺と頂点 を始点とする辺で共通して終点となる頂点の数」を表す. - 行列
において, 成分は頂点 の入次数を表し, 成分 ( ) は「頂点 を終点とする辺と頂点 を終点とする辺で共通して始点となる頂点の数」を表す.
無向グラフに対しても同様に定められます.すなわち頂点
- 正整数
に対し,行列 の 成分は「頂点 と を結ぶ長さ の相異なる歩道の数」を表す. - 成分がすべて
の 次元列ベクトルを で表すと,列ベクトル の 成分は頂点 の次数を表す. - 行列
において, 成分は頂点 の次数を表し, 成分 ( ) は「頂点 と に共通して隣接する頂点の数」を表す.
このような値を演算で取り出せるのは扱いが良く,隣接行列の性質を調べることで問題が解けることもあります21.
ある学校において,どの男女の組も互いに知り合いであるか知り合いでないかのいずれかである.どの男子もちょうど
もちろん線型代数を前提にした問題は数学オリンピックでは出題されませんから,基本的になんらかの純粋に組み合わせ論的な解法は存在するのですが,一つの武器として持ち合わせておくに越したことは全くありません.いくら「オーバーキル」のように見えたところで正解は正解です.好機を逃さないようにしましょう.
練習問題
何人かの数学者がおり,どの
- どの数学者についても同じグループに知り合いが偶数人いる.
6. 雑多な話題たち
ハミルトン路
グラフ上のすべての頂点を一度ずつ通る路のことをハミルトン路 (Hamiltonian trail) と言い,特に閉路であるときハミルトン閉路 (Hamiltonian cycle) と呼びます.一般に与えられたグラフがハミルトン (閉) 路を持つための条件を記述するのは困難ですが,辺が「ある程度の密度で」存在すればハミルトン閉路を持つという事実にあまり不思議は無いでしょう.
証明を観察すると,条件は弱められることがわかります.すなわち以下の拡張が容易に可能です.
ハミルトン路のうち,特にすべての辺を一度ずつ通るものをオイラー路 (Eulerian trail) といい,特に閉路のときオイラー閉路 (Eulerian cycle) と呼びます.これはいわゆる「一筆書き」に相当するもので馴染み深く,簡潔な必要十分条件の存在も有名です.しかし特に「すべての次数が頂点が偶数のときオイラー閉路が存在する」という事実は盲点になりがちです.
クリーク
クリーク (clique) 22 とは,あるグラフの部分集合となっている完全グラフのことです.
なお,
なお, 頂点を
このMantelの定理の一般化として得られたのが,次のTuránの定理です.実際
のとき:頂点 を取り除き,代わりに の「コピー」(隣接している頂点の集合が一致する) を作る. と の間に辺を張らないと定めると,クリークのサイズの最大値は増加せず,辺の本数は増加することがわかる. の場合も同様. かつ のとき:上と同様に, と を取り除き,代わりに の「コピー」を つ作ればよい.
以上より
またこの章立てとは直接関係ないですが,参考までにMantelの定理の別視点からの拡張である以下の結果を紹介します.
同じ対象を
有向グラフをはじめ,ここでは統一的に取り上げなかったテーマは他にも多数存在します.興味のある人は探求してみると良いでしょう.なお以下の練習問題はこれらの内容も含めて総合的にチョイスしています.骨のある問題も多いですから,是非じっくり腰を据えて実力試しをしてみてください.
練習問題
無向グラフ
- 任意の
頂点の組 について, と , と , と , と の間に辺が存在するならば, と ,または と の間には辺が存在する.
ある無向グラフ
各辺がいずれか一方に向き付けされた完全グラフをトーナメントグラフ (tournament graph) と呼ぶ.トーナメントグラフは (有向グラフとしての) ハミルトン路をもつことを示せ.
トーナメントグラフの各辺が赤または青で塗られている.このとき,次の条件をみたすような頂点
- 任意の頂点
について, から への同色の道が存在する.
凸多面体の各辺がいずれか一方に向き付けされており,すべての頂点について入次数と出次数がともに
正整数
- どの都市
についても, から同じ会社のみを乗り継いで に戻ってこれない. - どの相異なる
都市についても,いずれかからもう片方へ,同じ会社のみを乗り継いで移動できる.
このとき,ある都市から出発して次の条件をみたすように
の便の直後に の便に乗ることがない.
いま,都市を
- どちらのグループも都市を
つ以上含む. - どの都市に対しても,その都市から出ている高速道路は
本以下である.
ある国は
- 開設の後,都市をうまく
個のグループに分けることで,任意の都市について,同じグループ内のどの都市にも 本以下の直行便を乗り継いで移動することが不可能なようにできる.
ある学校には
- 頂点を
個のグループに分割して,各グループの頂点間には常に辺が存在するか存在しないかのいずれかに出来る.
あるサービスには
と , と が友人であり, と は友人でないようなある 人組について, と が友人となり, と , と はともに友人でなくなる.
友人の数が
- 各山に含まれる小石の重さの合計は等しい.
- 各色で塗られている小石は,各山にちょうど
個ずつある.
ある無向グラフ
あるコンテストで
-
ここから「辺彩色」(要するに路線)や「辺の重み(コスト)」(要するに所要時間)などの手段によって様々な種の情報を乗せていくことが出来ます. ↩︎
-
この定義は全く数学的ではありませんが,ここでは拘らないものとします.興味のある人は形式的な定義についても調べてみましょう.なお,頂点や辺に有限性を課す必要は実際にはありませんが,この記事内では基本的に無限グラフは考えないものとします. ↩︎
-
用語の命名や定義には種々の流儀が存在します.誤解を生みそうな用法は避けるか,厳密に定義しておくべきでしょう. ↩︎
-
用語こそ同じですが対象が違うので混同のおそれは無いでしょう. ↩︎
-
要するに「あるグラフの一部になっているグラフ」です. ↩︎
-
要するに「あるグラフからいくつか適当に頂点を選び,それらの間に存在する辺をすべて張って作られる部分グラフ」です. ↩︎
-
これを歩道 (walk) と総称することもあります.この辺りの定義は流儀によって特に齟齬が生じやすいところですが,命題1.3.が有用です. ↩︎
-
始点と終点が一致する道には閉道 (closed path) や単純閉路 (simple cycle) という名称もありますが,多くはこれらも単に閉路と呼ばれます. ↩︎
-
「ある
頂点の間に道が存在するか」は命題1.3.より同値関係となります.この関係による同値類として連結成分を定義してもよいです. ↩︎ -
日常的で直感的な好例に迷路があります.一般的に迷路の解が一意なのは閉路を持たないことから保障されており,逆も然りなわけです. ↩︎
-
図を描きましょう.すべての頂点間に「上下」関係が定まるわけではないことに留意してください.要するに「半順序」の関係です. ↩︎
-
視覚的には一番「下」に描いた方が「根」や「木」の語感は自然ですが,以下の用語のように家系図をイメージすると「上」の方が良いですね. ↩︎
-
一般に情報科学,もとい競技プログラミング方面の知識・発想は,グラフに限らず数学オリンピックの特にC分野やN分野で多く有用に働きます.同時に,逆も然りではないでしょうか. ↩︎
-
やはり迷路を想像すると良いでしょう.「行き止まりに突き当たるたびに引き返す」という(恐らく)自然で馴染み深い戦略がまさにそれです. ↩︎
-
この手順で得られた根から出て根へ戻る経路のことをオイラーツアー (Euler tour)と呼びます. ↩︎
-
実際にはこれはグラフに限らず組み合わせ論における広範的な主張で,さらなる一般化も可能です.詳細はWikipediaなどを参照して下さい. ↩︎
-
クリークについては第5章を参照して下さい. ↩︎
-
具体的には
のとき で良いことを主張しています.逆に を含まない の 色での彩色を考えてみてください. ↩︎ -
単に「彩色」と言えば一般には「最適頂点彩色」を指すことが多いようです.確かに四色定理に代表されるように最も自然な対象ではあります. ↩︎
-
後半部分については,実は
を偶数に広げても に限られ,これには簡潔な証明が知られています: に対し格子点を頂点とする正 角形の存在を仮定し,面積最小の をとると, が平行四辺形となるような各 は格子点で, は完全に含まれる正 角形となり矛盾. ↩︎ -
線型代数を以下しっかり使います.数学オリンピックでは大学以降の知識を援用しても何ら問題ありません.あくまで正しく使えてさえいれば… ↩︎
-
このように条件が二部グラフの場合は隣接行列を簡潔化できます.ただし上に挙げた諸演算で得られるものが少し変わるので注意して下さい. ↩︎ ↩︎
-
正確には
が必要ですが, のとき で特に全ての男女が知り合いとわかります.コーナーケースには常に注意しましょう. ↩︎ -
固有値の匂いがしますね.その辺りの議論も実際グラフとは好相性です.これは記事の補強によってまた扱いたいと思っています. ↩︎