グラフの定義と表現
定義
グラフ・経路・重み
グラフ は頂点の集合 と辺の集合 からなる。辺に向きがあれば有向グラフ、なければ無向グラフという。頂点の列 で各 が辺であるものを長さ の経路という。重み関数 があるとき、経路の重みは辺の重みの和で、 から への最短経路の重みを と書く。閉路をもたない有向グラフを DAG(有向非巡回グラフ)という。
表現と基本的な関係
- 隣接リスト
- 隣接行列
- 握手補題(無向)
- 木
幅優先探索・深さ優先探索・トポロジカルソート
幅優先探索(BFS)は始点 からキューを使って近い順に頂点を訪ねる。
- 、他の頂点は とし、 をキューに入れる。
- キューから を取り出し、隣接する各 で なら としてキューに入れる。
- キューが空になるまで2を繰り返す。
深さ優先探索(DFS)はキューの代わりにスタック(または再帰)を使い、行けるところまで進んでから戻る。各頂点の発見時刻と終了時刻が得られ、閉路の検出や強連結成分の分解に使う。
定理・法則
幅優先探索の正しさ
条件
重みのない(すべての辺の長さが1の)有向または無向グラフ、隣接リスト表現。
主張
BFS の終了時、各頂点で は から への最短経路の辺数に等しく、 から到達できない頂点は のままである。計算量は 。
要点
キューに入る頂点の の値は単調非減少で、隣り合う値の差は1以下になる。辺に重みがあると、辺数の最短と重みの最短は一致しない。
定理・法則
トポロジカル順序の存在
条件
有向グラフ 。
主張
すべての辺 で が より前に来る頂点の並べ方(トポロジカル順序)が存在することと、 が DAG であることは同値である。
要点
DFS の終了時刻の降順に並べるか、入次数0の頂点を取り除き続ける方法(カーンのアルゴリズム)で で求まる。途中で入次数0の頂点がなくなれば閉路がある。トポロジカル順序は一般に一意ではない。
計算例
カーンのアルゴリズムでトポロジカルソート
辺 、、、、、 をもつ DAG をトポロジカルソートせよ。入次数0の頂点が複数あるときは番号の小さいものを先に取る。
解答
入次数は 、、、、、。
- 候補 から を取り、 と の入次数を1減らす(、)。
- 候補 から を取り、、。
- 候補 から 、次に を取り、。
- を取り 、最後に 。
順序は 。
検算
各頂点の位置は 、、、、、 番目で、6本の辺すべてで始点が終点より前にある。取り出した頂点が6個なので、閉路がないことも確かめられる。
最短経路:ダイクストラ法とベルマン・フォード法
ダイクストラ法の手順は次のとおり。
- 、他は 、確定済み集合 とする。
- にない頂点のうち が最小の を選び、 に加える。
- から出る各辺 で なら とする(緩和)。
- すべての頂点が に入るまで2、3を繰り返す。
ベルマン・フォード法は、全辺の緩和を 回繰り返す。その後もう一度全辺を調べて、まだ緩和できる辺があれば始点から到達できる負閉路がある。
定理・法則
ダイクストラ法の正しさ
条件
有向(または無向)グラフで、すべての辺の重みが 。
主張
頂点 が に加えられた時点で である。二分ヒープを使うと計算量は 、配列で最小値を探すと 。
要点
最初に誤った値で確定する頂点があったとすると、その最短経路上で の外にある最初の頂点 について となり、 を選んだことに反する。 に非負の重みを使う。負の辺があるとこの不等式が崩れる。
定理・法則
ベルマン・フォード法
条件
重みは負でもよい有向グラフ。
主張
始点から到達できる負閉路がなければ、 回の全辺緩和の後 となる。負閉路があれば、 回目の検査で緩和できる辺が見つかる。計算量は 。
要点
負閉路がなければ最短経路は辺 本以下の単純経路で、 回目の反復で辺 本の最短経路の値が確定する。
計算例
ダイクストラ法で距離の表を追う
有向辺 、、、、、、、(括弧内は重み)のグラフで、 からの最短距離を求めよ。
解答
- を確定()。、。
- を確定()。、、。
- を確定()。。
- を確定()。。
- を確定()、続いて を確定()。 は で更新しない。
は 、、、、、。 への最短経路は 。
検算
経路の重みは 。他の経路 は 、 は 、 は で、どれも 以上。
計算例
負の辺でダイクストラ法が誤る例
有向辺 、、、、、 のグラフで、ダイクストラ法とベルマン・フォード法の結果を比べよ。
解答
ダイクストラ法は の次に の を確定し、。次に を確定するが、 は確定済みなので で更新しない。 を確定して となり、結果は 、、。
ベルマン・フォード法では の緩和で となり、、 を得る。正しい値は後者で、 への最短経路は (重み )。
検算
このグラフに閉路はないので負閉路もなく、ベルマン・フォード法の条件を満たす。 で4回の反復後、5回目の検査で緩和できる辺はない。
最短経路アルゴリズムの使い分け
- 重みなし
- DAG(負の重み可)
- 非負の重み
- 負の重みあり
- 全点対
負閉路がなければ負の重みがあってもよい。終了後に となる があれば負閉路がある。
最小全域木とカット性
定義
最小全域木
連結な重みつき無向グラフ の全域木(全頂点を含む部分グラフで木であるもの)のうち、辺の重みの和が最小のものを最小全域木という。辺は 本である。
定理・法則
カット性
条件
は連結な重みつき無向グラフ。辺集合 はある最小全域木に含まれる。頂点の分割 を横切る の辺はない。
主張
を横切る辺のうち重み最小の辺 について、 もある最小全域木に含まれる。
要点
を含む最小全域木 が を含まなければ、 に を加えてできる閉路はカットを横切る別の辺 をもつ。 を に替えても重みは増えない。クラスカル法とプリム法はこの性質で正しさが示される。
クラスカル法は辺を重みの小さい順に見て、閉路を作らない辺を採用する。閉路の判定には素集合データ構造(union-find)を使い、全体は辺の整列で かかる。プリム法は1頂点から始め、木と木の外を結ぶ最小の辺を加え続ける。
計算例
クラスカル法
無向辺 、、、、、、、、 のグラフの最小全域木を求めよ。
解答
重みの小さい順に見る。 採用、 採用、 採用、 採用。 は がすでに を通じてつながるので閉路になり不採用。 採用で辺が 本になり終了する。
最小全域木は 、重みは 。
検算
9本から5本を選ぶ 通りをすべて調べても、全域木の重みの最小は13である。分割 と を横切る辺は 、、 で、最小の が採用されておりカット性とも合う。
答案でよくある誤り
- 1
負の重みの辺があるグラフにダイクストラ法を使う。確定済みの頂点が後から短くなり得るので、ベルマン・フォード法を使うか、DAG ならトポロジカル順の緩和を使う。
- 2
重みつきグラフの最短経路を BFS で求める。BFS が求めるのは辺数の最短で、重みがすべて等しいときだけ重みの最短と一致する。
- 3
計算量を と のどちらか片方だけ書き、データ構造を書かない。ダイクストラ法の計算量は優先度付きキューの実装で変わるので、配列か二分ヒープかを書く。
- 4
負閉路があるのに最短距離を答える。負閉路に到達できる頂点では最短経路の重みが定義されない()。ベルマン・フォード法の 回目の検査で確かめる。
- 5
クラスカル法で、重みが小さければ閉路を作る辺も採用する。採用前に、両端が同じ連結成分にないことを union-find で確かめる。
- 6
最小全域木の中の経路を2頂点間の最短経路とみなす。辺 、、 の三角形では最小全域木は で、木の中の から への経路は重み だが、最短経路は辺 の である。
グラフアルゴリズムが出た院試の過去問
院試hubが年度別解説の大問を分類した集計から、この単元の内容を扱う出題を挙げる。問題文は各大学の公式過去問で確かめ、解き方は各年度の解説ページで読める。
グラフ理論
8大学・22問(2020〜2026年度)
新しい年度の出題
- 名古屋大学大学院 数理情報学 2026年度 第6問離散最適化
- 名古屋大学大学院 複雑系科学 2026年度 第17問情3:整列・二分探索木と最短経路法
- 東京都立大学大学院 情報科学域 専門科目 2026年度 第4問ダイクストラ法の追跡
- 京都大学 知能情報学コース 2025年度 第3問F2-1 アルゴリズムとデータ構造
- 京都大学 数理工学コース 2025年度 第4問専門 第2問:グラフ理論
- 北海道大学大学院 情報科学専攻 情報理工学コース 専門科目 2025年度 第4問アルゴリズムとデータ構造
解答まで無料で読める演習問題
グラフ探索
9大学・14問(2014〜2026年度)
新しい年度の出題
- 名古屋大学大学院 複雑系科学 2026年度 第17問情3:整列・二分探索木と最短経路法
- 東京都立大学大学院 情報科学域 専門科目 2026年度 第4問ダイクストラ法の追跡
- 北海道大学大学院 情報科学専攻 情報理工学コース 専門科目 2025年度 第4問アルゴリズムとデータ構造
- 東京科学大学 専門科目(情報工学) 2025年度 第3問格子経路と再帰・動的計画法
- 京都大学 数理工学コース 2024年度 第4問専門 第2問:グラフ理論
- 東京大学 専門科目(コンピュータ科学) 2024年度 第3問連結性と全域木
解答まで無料で読める演習問題
アルゴリズムとデータ構造の前後の単元
このページの本文を数式のLaTeXのまま読むには Markdown版。最終更新 2026-11-16。誤りに気づいたら 運営者 へ連絡してほしい。