
スポンサードリンク
こんにちは、ももやまです。
前編の「うさぎ模試 グラフ理論 フォーム編」にて、グラフ理論で使う知識を浅く広く確認はできましたでしょうか。
後編ではグラフ理論の中でも特に重要な項目を、実践的な問題として、記述式で5題(問題4~問題8)を用意しました!
時間がある人はじっくり、時間がない人は素早くこの記事にてグラフ理論の復習をしましょう!
↓ まだ問題をダウンロードしていない人はこちらからしましょう!(フォーム式の問題から解くことをおすすめします)
※ 採点は各自でお願いします。
目次 [hide]
スポンサードリンク
問題4. 中問集合
(1) 平面グラフの確認
次のグラフ

(1) グラフ

グラフ
すると、頂点数
ここで、グラフ
よって、グラフ
平面グラフでないことを示す方法は次の2通り。
[1] 完全グラフ(クラトフスキーの定理) [2] グラフの点の数
- グラフに長さが奇数の閉路がある場合 →
を満たさないこと - グラフに長さが奇数の閉路がない場合 →
を満たさないこと
平面グラフについて、さらに復習したい人は下の記事を御覧ください!
(2) 最小分離集合
次のグラフ

(2) グラフ
s-g間の点素(内素)な道は、下の2つ(ピンクと青)である。

この道から点を1つずつ選べば最小分離集合となる。(答えは9通りあります)
ある点
最小分離(点)集合
→
最小分離辺集合
→
最小分離集合についてさらに復習をしたい人はこちらの記事をご覧ください!
スポンサードリンク
問題5. オイラーグラフとハミルトングラフ
(1) ハミルトングラフかどうかの確認
ヒビキくんとアキさんは下のようなグラフ
ここで、それぞれのグラフの頂点は街を表し、辺は街に行くための道路を表している。次の会話を読み、(1), (2)の問いに答えなさい。(配点 12)

アキ:ヒビキくん、もしよかったら一緒に散歩しない?
ヒビキ:いいね! 今日はどの道を散歩する?
アキ:うーん、じゃあ1回通った街を2回以上通らないように地域全部の街を回るルートで散歩がしたいんだけど、そんなルートはあると思う?
ヒビキ:なるほど、つまりグラフ
(1) グラフ

※ すべての点を1度だけたどって起点に戻るようなたどり方を1個示せていたらOK。
オイラーグラフ
→ すべての辺を1度ずつ通って元の点に帰ってこれるグラフ(一筆書きの辺Ver)
ハミルトングラフ
→ すべての点を1度ずつ通って元の点に帰ってこれるグラフ(一筆書きの点Ver)
※ 実際にオイラーグラフ・ハミルトングラフであることを示す場合は、一筆書きができる例を1つ示せばOK
(2) オイラーグラフかどうかの確認
散歩後、ヒビキくんとアキさんがまた会話をしている。

アキ:散歩楽しかったね!
ヒビキ:うん!
アキ:ねぇ、明日は1回通った道路を2回以上通らないように地域全部の道路を回るルートで散歩がしたいな!
ヒビキ:ってことは、グラフ
アキ:そうそう! でも2日連続散歩するのはちょっとしんどいわね。明日は一緒にゲームしよっか! ヒビキ:おけおけ!*2
*1 ぽれ … 1人称
*2 おけおけ! … 賛同を表している。OKとほぼ同じ。
(2) グラフ

オイラーグラフは、次数が奇数の点が存在しないことが条件なので、1つでも次数が奇数の点が存在したその時点でオイラーグラフでないことが確定します。
オイラーグラフ・ハミルトングラフではないことを示す方法
[オイラーグラフ]次数が奇数の点が1つでもあることを言えばOK。
(オイラーグラフは次数がすべて偶数のグラフなため)
次の条件のどちらかを満たしていないことを言えばOK。
- グラフの最小次数
、頂点数 のとき、 - 隣接していないどの2点を選んでも、次数の合計が頂点数以上になっていること。
オイラーグラフ、ハミルトングラフについてさらに復習したい人はこちらの記事をご覧ください!
スポンサードリンク
問題6. 最短経路問題・最小全域木
(1) 最短経路問題
ヒビキ家の住民は、下のようなグラフ

ここで、それぞれのグラフの頂点は街を表し、辺は街に行くための道路を表している。また、それぞれの辺の数字は距離[km]を表している。
ヒビキ母:ねぇ、明日街
ヒビキ:それなら、ダイクストラ法で計算すればかんたんに計算できるかな。
ヒビキ母:なるほど〜。ちょっとヒビキ計算してみてよ。
ヒビキ:えぇ、めんどくさいなぁ。(計算を始める)
(1) 街
最短距離: 12(8点)
※経路は

各点にかかれている数字の色の意味は下の通り。ここで、数字の右に書かれているかっこは、どの点から来たかを表す。
- 桃 … すでに距離が確定した点
- 赤 … ちょうど距離が確定した点
- 紫 … 新たに暫定距離が求まった(更新された)点
- 緑 … すでに暫定距離が求まっている点
- 水 … 新たな暫定距離が求まったが、前の暫定距離の方が短かったため更新されなかった点
Step1. 点

Step2. 点

Step3. 点

Step4. 点

Step5. 点

Step6. 点
※ 暫定距離が最も短い点が2つ以上ある場合は、

Step7. 点

Step8. 点

Step9. 点

それぞれの点から点までの距離が確定したものを確定距離、確定はしてないものの距離を計算している点を暫定距離とする。
Step1. 始点から始点までの確定距離を0とする。
Step2. 距離が確定した点と隣り合っている点までの暫定距離とたどる元の点を求める。(暫定距離 = 確定距離 + 隣り合っている点までの移動距離)
ただし、隣り合っている点の暫定距離がすでに求まっている場合、より短い暫定距離が出た場合のみ上書きする。また、隣り合っている点の確定距離がすでに求まっている場合は無視する(すでに確定してるので更新されない)。
Step3. 暫定距離が出ている点の中で、一番暫定距離が小さいものを確定距離とする。
すべての距離が確定するまでStep2, Step3を繰り返す。また、各点の経路は、ゴールから元の点をたどることで求めることができる。
ダイクストラ法のアルゴリズムについてさらに確認したい人はこちらをご覧ください!
(2) 最小全域木
ヒビキとその父親が夕食後、会話をしている。

ヒビキ父:今度この街に渋滞緩和のための有料道路を作ろうと思ってるだよね。
ヒビキ:え? 本当に? どことどこを結ぶの?
ヒビキ父:この地域にある街を有料道路だけで行き来できるようにいろんな区間に建設するんだ*4。
ヒビキ:まじか、それ予算すごくかからない?
ヒビキ父:そうなんだよ。ちょっとヒビキ、どの街間に有料道路を設置すれば費用が一番安くなるか、計算できる?
ヒビキ:グラフ G の最小全域木を計算すれば求まるけどさぁ…。
[注釈] *4 普通の家庭ではこんな話はしない。(2) グラフ

クラスカル法とプリム法のどちらでもやってもOK。
解く際には、辺の数が (頂点数) - 1 になることを必ず意識すること!!(今回は8)
(i) クラスカル法で解く場合
辺の重み(設置費用)が小さい順に追加すればOK。ただし、途中で閉路ができないように注意すること。
※ ピンク色の辺は追加した辺、灰色の辺は追加すると閉路ができてしまう辺を表しています。
1つ目 / 8つ目. 同じ重みの辺が複数ある場合、

2つ目 / 8つ目

3つ目 / 8つ目

4つ目 / 8つ目

5つ目 / 8つ目

6つ目 / 8つ目

7つ目 / 8つ目

8つ目 / 8つ目

Step1. まだ追加していないグラフ内の辺の中で、重みが最も小さい辺を取り出す。
(複数存在する場合は指示がない限り、どれを取り出してもOK)
Step2. チェックした辺を追加しても閉路ができなければ辺を追加し、Step1に戻る。追加して閉路ができてしまう場合は無視。
Step3. すべての辺をチェックし終わったときに追加された辺が最小全域木である。
(ii) プリム法で解く場合
辺の重みが最も小さい辺が含まれている点をスタートとして、辺をどんどんつなげていく形で最小全域木を作り上げましょう。ただし、閉路ができないように注意。
※ ピンク色の辺は追加した辺、水色の辺は追加する候補の辺、灰色の辺は追加すると閉路ができてしまう辺を表しています。
1つ目 / 8つ目. 点

2つ目 / 8つ目.

3つ目 / 8つ目.

4つ目 / 8つ目.

5つ目 / 8つ目.

6つ目 / 8つ目.

7つ目 / 8つ目.

8つ目 / 8つ目.

Step1. スタートの点を1つ決める(どこでもOK)
Step2. スタート点、およびすでに追加した辺からたどれる辺の中で一番重みが小さい辺を追加することを繰り返す。
(一番重みが小さい辺が複数ある場合は重みが一番小さいどの辺をチェックしてもOK)
Step3. 追加できる辺がなくなったらおしまい
最小全域木についてさらに練習したい人はこちらの記事をご確認ください!
問題7. 最大フロー・最小カット
ヒビキ達が住んでいる地域は、下のようなグラフ

ここで、それぞれのグラフの頂点は街を表し、辺は街に行くための道路を表している。辺に書かれている数字は、1時間あたりに移動できる人数の上限[×100人]を表している。ここで、この地域では、年に1度、地域の誕生を祝う祭りが開かれる。その祭りの際に、街
(1) このグラフ
(2) グラフ
(1) [解答] 5,000人/h(最大フローは50×100人)(7点)
(2) 最小カット
(1) フローと残余ネットワークは下の通り。

残余ネットワークのグラフにおいて、
初期状態(何も追加していない状態)

Attempt1. 緑色の矢印方向に15追加

Attempt2. 緑色の矢印方向に15追加

Attempt3. 緑色の矢印方向に15追加

Attempt4. 緑色の矢印方向に5追加

ここで、残余ネットワークのグラフを見ると、
よって、この状態が最大フローであることがわかる。
あるネットワークのスタート
Step1. 全部のフローが0の状態をはじめの状態(初期フロー)とし、初期フローのときの残余ネットワーク(与えられたネットワークと同じ)を考える。
Step2. 残余ネットワークで から までたどれるような道(ルート)を見つけ、その道に流せるだけのフローを流す。(増大道と呼ばれる)
Step3. Step2を繰り返し、
(2)
最小カットは、「最大フローの状態のときの残余ネットワークのグラフ」において、スタート点
よって、最小カットは
また、最小カットの容量は、「
よって、最小カットの容量の答えは50(5,000人)となる。(3点)

なお、最大フローと最小カットの容量は必ず等しくなるため、最小カットの集合を問われていない場合は、最大フローを求めるだけで最小カットの容量を求めることができる。
(最大フローと最小カットの容量を両方求めることで、検算に使うのももちろんOK)
最大フローのときの残余ネットワークのグラフにおいて、始点
また、最小カット
最大フロー・最小カットについてもう少し練習したい人はこちらの記事をご覧ください。
問題8. マッチング
ヒビキとその友達(リクオ、マツ、ノゾミ、ユメ、サキ)は肝試しをすることにした。そこで、肝試しを楽しんでもらうために、お互いに仲が良い人同士で組むことを考えたい。ここで、男性陣はヒビキ、リクオ、マツの3人、女性陣はノゾミ、ユメ、サキの3人である。
(1) まずは、男女考えずに2人組を作ることを考えた。事前に仲良しな人を調査した結果、6人の関係は下の表となった。次の(i), (ii)の問いに答えなさい。ここで、○がついている人同士がお互いに仲が良い人を表す。例えば、ヒビキとリクオは○がついているため、お互いに仲が良い。

(i) 人を点、仲良し関係を辺としたときの状態をグラフで書きなさい。
(ii) 互いに仲が良い人同士で組むことは可能か。理由とともに答えなさい。
(2) 次に男女ペアで2人組を作ることを考えた。事前に組んでもいい人を調査した結果、関係は下の表ようになった。((1)と同じく、○がついている人同士が互いに仲が良い)

(i) 仲良し関係を辺としたときの状態をグラフで書きなさい。
(ii) 互いに仲が良い人同士で組むことは可能か。理由とともに答えなさい。
(1-i) グラフは以下の通り。特に解説はなし。(3点)

(1-ii) 可能。(2点)
理由:(i)で作ったグラフの完全マッチングが下のグラフのようになるから。(解答として書く際には、ピンクの辺を取り出してグラフを書けばOK)(3点)

どの点にも辺がつながっているマッチングのことを完全マッチングと呼ぶので、覚えておきましょう。
なお、完全マッチングが存在する場合、完全マッチングのグラフの辺の数は必ず頂点の数の半分となるので、頭に入れておくと便利です。
極大マッチング:マッチングの中でこれ以上辺(ペア)を追加できないもの
最大マッチング:あるグラフに追加できる上限数分の辺(ペア)を追加したもの
(最大マッチングであるものは必ず極大マッチングであるが、極大マッチングだからといって最大マッチングであるとは限らない)
完全マッチング:どの点にも辺がつながっている(ペアになっている)マッチング
(完全マッチングであれば必ず最大マッチングとなる、一方最大マッチングが完全マッチングになるかはわからない。)
また、あるグラフが完全マッチングとなる場合、頂点数
(2-i) グラフは以下の通り。今回は、2部グラフとなる。(3点)

(ii) 不可能。(2点)
[理由] (3点)(i)のグラフが
しかし、
マッチングについてさらに復習したい人はこちらの記事にて復習しましょう!
関連広告・スポンサードリンク