グラフ理論:ステップごとの解答つき練習問題

図、ヒント、詳しい解答つきの無料のグラフ理論練習問題。毎回新しい数値で、3 つのレベル:次数と辺, オイラー路と木, 最短経路と全域木。

無料の練習問題やさしい

木に 12 個の頂点があります。辺は何本|E|ありますか?

|V| = 12

正確な答え:整数で、四捨五入はしません。

次の問題 →
グラフ理論を無料で練習今すぐグラフ理論を練習毎日 5 問まで無料。カード登録は不要です。

練習する内容

  1. やさしい次数と辺
  2. ふつうオイラー路と木
  3. むずかしい最短経路と全域木

グラフ理論の問題の解き方

  1. 各頂点の次数を書き出します。次数の総和は辺の数の 2 倍になります。
  2. オイラーの問題では、グラフが連結であることを確かめ、奇数次数の頂点を数えます。
  3. 木では、辺が n − 1 本であることと握手補題を使います。
  4. ダイクストラ法では、暫定距離の表をつくり、毎回、未確定の頂点のうち最小のものを確定します。
  5. 最小全域木では、辺を重みの順に並べ、閉路をつくる辺を飛ばす方法(クラスカル法)か、始点から 1 本の木を成長させる方法(プリム法)を使います。

よくある間違い

  • 次数の和を 2 で割り忘れる。
  • 連結かどうかを確かめずに、オイラーグラフと言ってしまう。
  • ダイクストラ法で、距離が最小になる前に頂点を確定してしまう。
  • 閉路を確かめずに、軽い辺から順に取ってしまう。
  • Kn のハミルトン閉路の数を (n − 1)!/2 ではなく n! と数える。

重要な公式

握手補題
Σ deg(v) = 2|E|
完全グラフ
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
正則グラフ
|E| = n·k/2
木と森
|E| = n − 1, |E| = n − c
木の葉
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
オイラー
閉路:すべての次数が偶数; 路:奇数次数がちょうど 2 つ
Kn のハミルトン閉路
(n − 1)!/2
ダイクストラ法の更新
d(v) = min(d(v), d(u) + w(u, v))
長さ L の歩道
(Mᴸ)ij

グラフ理論をゼロから学ぶ

事前に学ぶこと: 集合・関係・関数

1頂点・辺・次数

グラフは、頂点(点)と辺(2 つの頂点を結ぶ線)からなります。単純グラフには、ループも多重辺もありません。

頂点の次数は、その頂点に接する辺の数です。どの辺にも端が 2 つあるので、それぞれの端の次数に 1 ずつ加えます。これが握手補題です:

Σ deg(v) = 2·|E|

次の 2 つが導かれます:次数の和は常に偶数であり、奇数次数の頂点の数も偶数です。

  • 完全グラフ Kn はすべての頂点の組を結びます:辺は n(n − 1)/2 本です。
  • 完全二部グラフ Km,n は、一方の側のすべての頂点を他方の側のすべての頂点と結びます:辺は m·n 本です。
  • n 個の頂点をもつ k 正則グラフには、n·k/2 本の辺があります。

隣接行列は、i と j が結ばれているとき (i, j) 成分が 1 です。無向グラフでは対称で、行の和が次数になり、Mᴸ の (i, j) 成分は i から j への長さ L の歩道の数を表します。

セルフチェック あるグラフの次数が 3, 3, 2, 2, 2 です。辺は何本ありますか?
  1. 10
  2. 12
  3. 5
  4. 6

答え: 6. 次数の和は 12 で、どの辺も 2 回数えられているので、辺は 12/2 = 6 本です。5 は頂点の数です。

2オイラーとハミルトン

オイラー閉路はすべての辺をちょうど 1 回ずつ通って出発点に戻ります。オイラー路はすべての辺を 1 回ずつ通りますが、別の場所で終わってもかまいません。連結グラフでは次のようになります:

  • すべての次数が偶数:オイラー閉路が存在する。
  • 奇数次数がちょうど 2 つ:オイラー路が存在し、一方の奇数次数の頂点から他方へ通る。
  • 奇数次数が 3 つ以上:どちらも存在しない。

ハミルトン閉路は、すべての頂点をちょうど 1 回ずつ訪れます。これには簡単な次数の判定法はありません。Kn には異なるハミルトン閉路が (n − 1)!/2 個あります:始点を固定し、残りの n − 1 個の頂点を並べ、向きが 2 通りあるので 2 で割ります。

セルフチェック 連結グラフの次数が 2, 3, 4, 3, 2 です。このグラフには何がありますか?
  1. どちらもない
  2. オイラー路はあるが、オイラー閉路はない
  3. オイラー閉路
  4. オイラー閉路と、閉路でないオイラー路の両方

答え: オイラー路はあるが、オイラー閉路はない. 奇数次数の頂点はちょうど 2 つ(2 つの 3)なので、それらの間にオイラー路はありますが、閉路はありません。

3木

木は、閉路をもたない連結グラフです。n 個の頂点をもつ木には、必ずちょうど n − 1 本の辺があります。どの辺を加えても閉路ができ、どの辺を取り除いても非連結になります。

n 個の頂点に c 本の木からなる森は、n − c 本の辺をもちます。m 本の辺をもつ連結グラフは、m − n + 1 本の辺を取り除いても全域木が残ります。

握手補題から葉の数が分かります:Σ deg = 2(n − 1)。短い形は、次数 d ≥ 3 の頂点について L = 2 + Σ (d − 2) です。次数 3 の頂点が 2 つで、残りがすべて葉の木には、2 + 1 + 1 = 4 枚の葉があります。

4ダイクストラ法と最小全域木

ダイクストラ法は、重みが非負のグラフで、始点からの最短距離を求めます。

  1. 始点の距離を 0、ほかのすべての頂点の距離を ∞ とします。
  2. 未確定の頂点のうち距離が最小のものを確定します。その距離はこれで最終です。
  3. 各隣接頂点 v について、d(v) = min(d(v), d(u) + w(u, v)) と更新します。
  4. 目的の頂点が確定するまで繰り返します。

最小全域木は、合計の重みが最小になるようにすべての頂点をつなぎます。クラスカル法は辺を軽い順に並べ、閉路をつくらない辺を順に取ります。プリム法は始点から 1 本の木を成長させ、その木から出る最も軽い辺を常に加えます。どちらも n − 1 本の辺で終わります。

例題

下のグラフで、A から E までの最短距離を求めてください。

1

開始

412581ABCDE

d(A) = 0。隣接頂点には d(B) = 4 と d(C) = 1 がつきます。

2

C を確定(1)

C を経由すると:d(B) = min(4, 1 + 2) = 3、d(E) = 1 + 8 = 9。

3

B を確定(3)

B を経由すると:d(D) = 3 + 5 = 8。

4

D を確定(8)

D を経由すると:d(E) = min(9, 8 + 1) = 9。改善なし、同じ値です。

5

E を確定(9)

E が確定しました:その距離が最終です。

答え

最短距離は d(E) = 9 で、A → C → E を通ります。A → C → B → D → E の経路も同じ長さで、1 + 2 + 5 + 1 = 9 です。

セルフチェック クラスカル法で、重み 1, 2, 3 の辺を取りました。次に軽い重み 4 の辺は、すでに連結している 2 つの頂点を結びます。どうなりますか?
  1. アルゴリズムが止まる
  2. 代わりに重み 3 の辺が取り除かれる
  3. 残りで最も軽いので、取られる
  4. 閉路ができるので、飛ばされる

答え: 閉路ができるので、飛ばされる. クラスカル法は閉路をつくりません:同じ連結成分にある 2 つの頂点を結ぶ辺は飛ばされ、アルゴリズムは次の辺に進みます。

5よくある間違い

  • 辺の数を求めるときに、次数の和を 2 で割り忘れる。
  • グラフが連結かどうかを確かめずに、オイラー閉路の有無を判定する。
  • ダイクストラ法で、暫定距離が最小になる前に頂点を確定してしまう。
  • 閉路を確かめずに、軽い方から n − 1 本の辺を取ってしまう。
  • Kn のハミルトン閉路の数を (n − 1)!/2 ではなく n! と数える。

6試験問題の例

  • やさしい:次数と辺。握手補題を使う、Kn、Km,n、正則グラフ、木の辺の数を求める、隣接行列を読む、指定された次数の頂点をクリックする、といった問題です。
  • ふつう:オイラー路と木。グラフにオイラー閉路やオイラー路があるかを判断する、木の葉を数える、全域木にするために取り除く辺の数を求める、Kn のハミルトン閉路を数える、といった問題です。
  • むずかしい:最短経路と全域木。ダイクストラ法を実行する、指定したラウンドで確定する頂点を求める、最小全域木の重みを求める、クラスカル法やプリム法が次に加える辺をクリックする、隣接行列で歩道を数える、といった問題です。

アプリでステップごとに学ぶアプリでステップごとに学ぶ

解答例

例題 1やさしい
AABBCCDDEE0010000001100010000101110

単純無向グラフの隣接行列が示されています。このグラフには辺が何本|E|ありますか?

求めるもの: |E|

ヒントを表示
  1. 頂点 i と j が辺で結ばれているとき、成分 (i, j) は 1 です。
  2. 各辺 {i, j} は 2 つの 1 を与えます:(i, j) に 1 つ、(j, i) に 1 つです。
  3. 行列には 1 が 8 個あります。
答えとステップごとの解答を表示

次数:頂点の次数は、その頂点に接する辺の数です。どの辺にも端が 2 つあるので、次数の和は辺の数の 2 倍になります:Σ deg(v) = 2|E|(握手補題)。したがって、奇数次数の頂点の数は偶数です。Kn には n(n − 1)/2 本の辺があり、n 個の頂点をもつ k 正則グラフには nk/2 本、n 個の頂点をもつ木には n − 1 本の辺があります。

1 を数える

行の和: 1 + 1 + 2 + 1 + 3 = 8
|E| = 8/2 = 4

答え

|E| = 4
例題 2ふつう
ABCDEFGオイラー閉路オイラー路あり、閉路なしどちらでもない

この連結グラフには、オイラー閉路、閉路でないオイラー路、またはどちらもないのうち、どれがありますか? 答えをクリックしてください。

|V| = 7|E| = 10
  1. 1オイラー閉路
  2. 2オイラー路あり、閉路なし
  3. 3どちらでもない
ヒントを表示
  1. オイラーの定理に必要なのは頂点の次数だけです(グラフは連結です)。
  2. すべての次数が偶数:オイラー閉路。奇数次数がちょうど 2 つ:その間のオイラー路。それより多い:どちらもなし。
  3. 奇数次数の頂点を数えましょう。
答えと解説を表示

オイラー、ハミルトン、木:連結グラフは、すべての頂点の次数が偶数のときオイラー閉路(すべての辺を 1 回ずつ通って始点に戻る)をもち、ちょうど 2 つの頂点の次数が奇数のとき、閉路でないオイラー路をもちます。その路は、一方の奇数次数の頂点から他方へ通ります。ハミルトン閉路はすべての頂点を 1 回ずつ訪れ、Kn には (n − 1)!/2 個あります。n 個の頂点をもつ木には n − 1 本の辺があり、m 本の辺をもつ連結グラフは、m − n + 1 本の辺を取り除いても全域木が残ります。

次数

deg(A) = 1, deg(B) = 4, deg(C) = 2, deg(D) = 4, deg(E) = 4, deg(F) = 2, deg(G) = 3

奇数次数の頂点

A, G → 2
オイラー路あり、閉路なし

答え

オイラー路あり、閉路なし

オイラー路は、一方の奇数次数の頂点から始まり、他方で終わります。

例題 3むずかしい
ABCDEF

E を始点かつ終点とする、長さ 3 の閉じた歩道はいくつありますか? 歩道では頂点や辺を繰り返してもかまいません。その数を N とします。

M = 隣接行列L = 3

求めるもの: N

ヒントを表示
  1. 隣接行列 M を使うと、i から j への長さ L の歩道の数は、Mᴸ の (i, j) 成分です。
  2. まず E からすべての頂点への長さ 2 の歩道を数え、それからもう 1 歩進みましょう。
  3. E からの長さ 2 の歩道:A: 2, B: 1, C: 0, D: 2, E: 4, F: 1。
答えとステップごとの解答を表示

次数:頂点の次数は、その頂点に接する辺の数です。どの辺にも端が 2 つあるので、次数の和は辺の数の 2 倍になります:Σ deg(v) = 2|E|(握手補題)。したがって、奇数次数の頂点の数は偶数です。Kn には n(n − 1)/2 本の辺があり、n 個の頂点をもつ k 正則グラフには nk/2 本、n 個の頂点をもつ木には n − 1 本の辺があります。

隣接行列

A: 0 1 1 0 0 0
B: 1 0 0 1 1 0
C: 1 0 0 0 1 0
D: 0 1 0 0 1 1
E: 0 1 1 1 0 1
F: 0 0 0 1 1 0

もう 1 歩

(M³)EE = 2·0 + 1·1 + 0·1 + 2·1 + 4·0 + 1·1 = 4

答え

N = 4

質問と回答

グラフ理論とは?

頂点の次数は、その頂点に接する辺の数です。どの辺にも端が 2 つあるので、それぞれの端の次数に 1 ずつ加えます。これが握手補題です:

次の 2 つが導かれます:次数の和は常に偶数であり、奇数次数の頂点の数も偶数です。

グラフ理論の問題の解き方は?(手順)
  1. 各頂点の次数を書き出します。次数の総和は辺の数の 2 倍になります。
  2. オイラーの問題では、グラフが連結であることを確かめ、奇数次数の頂点を数えます。
  3. 木では、辺が n − 1 本であることと握手補題を使います。
  4. ダイクストラ法では、暫定距離の表をつくり、毎回、未確定の頂点のうち最小のものを確定します。
  5. 最小全域木では、辺を重みの順に並べ、閉路をつくる辺を飛ばす方法(クラスカル法)か、始点から 1 本の木を成長させる方法(プリム法)を使います。
グラフ理論でよくある間違いは?
  • 次数の和を 2 で割り忘れる。
  • 連結かどうかを確かめずに、オイラーグラフと言ってしまう。
  • ダイクストラ法で、距離が最小になる前に頂点を確定してしまう。
  • 閉路を確かめずに、軽い辺から順に取ってしまう。
  • Kn のハミルトン閉路の数を (n − 1)!/2 ではなく n! と数える。
グラフ理論の練習では何を学ぶ?
  • やさしい: 次数と辺
  • ふつう: オイラー路と木
  • むずかしい: 最短経路と全域木

問題ごとに数値が変わるので、答えではなく解き方が身につきます。 行き詰まったら、まず小さなヒントを開き、必要なときだけ詳しい解説を見ましょう。

練習のしかた

  • 問題ごとに数値が変わるので、答えではなく解き方が身につきます。
  • 行き詰まったら、まず小さなヒントを開き、必要なときだけ詳しい解説を見ましょう。
  • 進捗、間違えた問題、保存した問題は記録されるので、試験前に復習できます。

このトピックの前後のトピック

先に学ぶ

このトピックを含む科目

数学・統計学のほかのトピック

印刷用ワークシート

グラフ理論を無料で練習今すぐグラフ理論を練習毎日 5 問まで無料。カード登録は不要です。