ネットワークスペシャリスト 2010年 午前2 問02
問題文
図のネットワークで、数字は二つの地点間で同時に使用できる論理回線の多重度を示している。X地点からY地点までには同時に最大幾つの論理回線を使用することができるか。

選択肢
ア:8
イ:9
ウ:10(正解)
エ:11
🔒 解説は解答すると表示されます
最大フロー計算【午前2解説】
正解の理由
与えられたネットワークでは、X から Y への最大同時論理回線数は最大フロー(最大送流量)に等しく、最小カットの容量がその上限になります。切断 S = {X, A, B, C} として考えると,S とその補集合 T = {D, E, F, G, Y} を結ぶ辺の容量合計は
A–D:1、B–D:2、B–E:3、C–F:4 の和で 1+2+3+4 = 10 となり,これが上界を与えます。一方で,総流量 10 を実際に与える具体的なフロー割当(経路ごとの流量)を構成できるため,上界 10 は到達可能です。したがって選択肢ウ(10)が正解です。
解法ステップ
- ネットワークを X(源)と Y(湧出点)に分けて考え,s-t カットの候補を探す。単純に X と残りを分ける切断は容量 だが,もっと小さい切断が存在するか検討する。
- S = {X, A, B, C} を取ると,S→T を横断する辺は A–D(1), B–D(2), B–E(3), C–F(4) で合計 10 になる。これにより最大値の上限は 10 と分かる(最小カット ≤ 10)。
- 上限が本当に到達可能かを示すため,具体的なフロー割当(増加パス)を示す。以下は X→Y に送る合計 10 を構成する経路分解の一例(各経路の流量を示す):
- X–A–D–Y : 1
- X–A–B–E–Y : 2
- X–B–D–Y : 2
- X–B–C–F–G–Y : 1
- X–C–F–G–Y : 2
- X–C–F–E–G–Y : 1
- X–B–E–Y : 1 これらを合計すると 1+2+2+1+2+1+1 = 10 となり,各辺の容量制約を全て満たす(下で辺ごとの合計を確認)。
- カットの上界(10)と到達可能性(具体的フロー)が一致するので最大流は 10。従って選択肢ウが正しい。
(辺ごとの使用量の確認)
- X–A: 1+2 = 3 ≤ 4
- A–B: 2 ≤ 2
- A–D: 1 ≤ 1
- X–B: 2+1+1 = 4 ≤ 4
- B–D: 2 ≤ 2
- B–E: 2+1 = 3 ≤ 3
- B–C: 1 ≤ 1
- X–C: 2+1 = 3 ≤ 3
- C–F: 1+2+1 = 4 ≤ 4
- F–G: 1+2 = 3 ≤ 3
- F–E: 1 ≤ 2
- E–G: 1 ≤ 4
- D–Y: 1+2 = 3 ≤ 3
- E–Y: 2+1 = 3 ≤ 3
- G–Y: 1+2+1 = 4 ≤ 6
以上より,どの辺も容量を超えずに合計流量 10 を実現できる。
選択肢別の誤答解説
- ア(8)
8 は明らかに小さすぎます。単純に下段経路や中段・上段の一部だけ見て過小評価している場合が多いです。上で示した 10 の構成を考えると 8 では説明できない流れが存在します。 - イ(9)
9 は「ほぼ正しい」と誤認しやすい値ですが,S = {X,A,B,C} のカット容量が 10 であるため 9 は上界を破らないが、9 が最大であることを示す論拠(9 を超えられないカット)を示せません。さらに具体的フローで 10 を構成できるため 9 は誤りです。 - ウ(10)
上述の通り、S = {X,A,B,C} のカット容量が 10(上界),かつ合計 10 を実現する具体的フローが存在するので正解です。 - エ(11)
X から直接出る辺の容量和 をそのまま最大流と判断すると誤りです。内部の中央部(A–D や B–D, B–E, C–F など)がボトルネックになり,それらを通過できる量の合計(最小カット)が 10 のため 11 を流すことは不可能です。
よくある誤解
- 出発点(X)からの辺の和をそのまま最大流と見なす誤り。出発点の出口和は上界の一つだが,内部のボトルネックで制限されることが多い。
- 個々の経路だけ見て重複する辺の容量制約を無視してしまう。複数経路で同じ辺を共有する場合,その辺の容量以上は流せない点を必ず確認する。
- 無向辺を矢方向に誤って片方しか使えないと解釈する/逆に方向を自由に使いすぎる誤解。問題の意味(ここでは同時に使用できる論理回線の多重度=無向容量)を明確に扱う。
補足コラム
- 理論的支柱は「最大流=最小カット定理」です。試験では「どこで切れば小さくなるか」を観察して最小カット候補を素早く見つけるのが得点に直結します。
- 手順の実務的な流れ:まず簡単なカット(例:X とそれ以外)で上界を得て、それより小さいカットがないか中央部やシーム(複数列のつなぎ目)を点検する。見つかった小さいカットの容量を計算し、可能なら具体的フローを構成して到達可能性を示すと確実です。
- アルゴリズム的には Ford–Fulkerson(増加パスを繰り返す)、Edmonds–Karp(BFS を用いる)などで最大流を求められますが,筆算・図で解く午前問題では最小カットの観察と容易なフロー構成で済むことが多いです。
FAQ
Q1. 「なぜ S = {X,A,B,C} を選ぶのか?」
A1. X を含む左側ブロックと右側ブロックを分けたとき,左右をつなぐ中央の辺容量(A–D, B–D, B–E, C–F)の合計が小さく,これが明らかに小さいカットだからです。直感的に「中央部の合計がボトルネック」になっている箇所を探すと良いです。
A1. X を含む左側ブロックと右側ブロックを分けたとき,左右をつなぐ中央の辺容量(A–D, B–D, B–E, C–F)の合計が小さく,これが明らかに小さいカットだからです。直感的に「中央部の合計がボトルネック」になっている箇所を探すと良いです。
Q2. 「フロー割当の作り方が分からないときは?」
A2. 最小カットの S→T 辺を満たすように S 側(A,B,C)への X からの供給を分配し,内部の移送(A→B, B→C など)で需給を調整しながら各カット辺を飽和させる方法が有効です。上の解説ではその手順で具体割当を示しました。
A2. 最小カットの S→T 辺を満たすように S 側(A,B,C)への X からの供給を分配し,内部の移送(A→B, B→C など)で需給を調整しながら各カット辺を飽和させる方法が有効です。上の解説ではその手順で具体割当を示しました。
Q3. 「無向辺は両方向使えるのか?」
A3. 本問の意味(「同時に使用できる論理回線の多重度」)では辺は容量制約だけが重要な無向容量と解釈できます。最大流問題として扱う際は,必要に応じて双方向に容量を割り当てる形で考えるか,単純にどれだけのフローをさばけるか(双方向を含めた制約)で検討します。午前問題では今回のように容量を合算して最小カットを考えるのが実用的です。
A3. 本問の意味(「同時に使用できる論理回線の多重度」)では辺は容量制約だけが重要な無向容量と解釈できます。最大流問題として扱う際は,必要に応じて双方向に容量を割り当てる形で考えるか,単純にどれだけのフローをさばけるか(双方向を含めた制約)で検討します。午前問題では今回のように容量を合算して最小カットを考えるのが実用的です。
関連キーワード: 最大流, 最小カット, フォードファルカーソン, Edmonds–Karp, ボトルネック分析, ネットワークフロー

\ せっかくなら /
ネットワークスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

