基本情報技術者 2024年 科目A 問13
問題文
アローダイアグラムで表されるプロジェクトは、完了までに最少で何日を要するか。

選択肢
ア:105
イ:115
ウ:120(正解)
エ:125
🔒 解説は解答すると表示されます
クリティカルパスの合計日数【午前解説】
正解の理由
アローダイアグラム(AOA)では「ノードの最早時刻=そのノードに到達するまでの最長経路長」で計算します。図中の破線(ダミー)は所要日数0でもノードの先行関係を変え、ある枝の開始時刻を遅らせるため、単純に各枝の和だけを比較する誤りが生じます。前方計算(最早時刻)を行うと収束ノードの最早時刻が日になり、最後の作業Hの日を加えると合計日となるため、選択肢のうち ウ が正しいです。
解法ステップ
- ノードごとに「最早発生時刻(Earliest Event Time)」を前方に計算する。
- 開始ノードを0とする。
- 各矢印(作業)について、尾ノードの最早時刻+作業日数を頭ノードの候補時刻とし、頭ノードの最早時刻は候補の最大値を取る(複数入力がある場合)。
- 最終ノードの最早時刻がプロジェクト最短所要日数である(ダミーは0日として扱う)。
前方計算の実際の数値(単位:日)
- 開始 = 0
- Aの完了(中央左ノード) = 0 + 30 = 30
- Bの完了(上ノード) = 30 + 5 = 35
- Cの完了(中央ノード) = 30 + 30 = 60
- ここへダミー(上ノード→中央ノード)があるが、ダミーは0日なので候補は35。最大を取ると60のまま。
- Dの完了(下ノード) = 30 + 20 = 50
- ただし、ダミー(中央ノード→下ノード)により中央ノードの完了60も入力されるため下ノードの最早時刻は max(50, 60) = 60
- 収束ノード(上経路E / 中央経路F / 下経路G のうち最大)
- E経路:上ノード(35) + 40 = 75
- F経路:中央ノード(60) + 25 = 85
- G経路:下ノード(60) + 30 = 90 ← 最大
- したがって収束ノード = 90
- 終了ノード = 収束ノード(90) + H(30) = 120
よって最少所要日数は 日(選択肢 ウ)。
選択肢別の誤答解説
- ア: 105
- これは A→B→E→H の単純和 を最大と見なした誤り。収束ノードで他経路の遅延(ダミーの影響)により更に長い経路が存在するため不足する。
- イ: 115
- これは A→C→F→H の単純和 を用いた誤り。中央経路は長いが、下経路の遅延(ダミーによって下ノードが60に引き上げられる)により上回られる。
- ウ: 120
- 正しい。前方計算で収束ノードが90になり、Hの30を加えて120になる。
- エ: 125
- どこかで余分に待ち時間や作業日数を誤って二重計上した値。与えられた作業日数・ダミーを正しく前方集計すれば発生しない。
よくある誤解
- ダミー矢印を無視する
- ダミーは日数0でも「先行関係」を変えるため、ノードの最早時刻に影響を与えることがある。特に収束点での最大値判定を忘れると短く出る。
- 単に枝ごとの合計だけを比較する
- 分岐と収束があるネットワークでは、ノード時刻を前方に伝播させて最大値を取るのが正しい。複数経路が交差する場合、ある経路が他を遅らせることがある。
- AOA(矢印図)とAON(ボックス図)の扱いを混同する
- AOAでは「矢印が作業」「ノードがイベント」で、ダミーが必要。AONと同じ直観で見ないこと。
補足コラム
- 実務上は「最早時刻(ES/ET)」と「最遅時刻(LS/LT)」を前方・後方計算で求め、各作業のフロート(余裕)を算出します。フロート0の作業がクリティカルパス上の作業です。本問題ではダミーが作用して、クリティカル(余裕0)となるのは下流の G と H となることが多い点が興味深いです(詳細な最遅時刻計算で確認できます)。
FAQ
Q. ダミーは本当に0日で扱うのですか?
A. はい。ダミーは所要日数ゼロで先行関係を明示するための補助枝です。ただし存在することでノードの最早時刻/最遅時刻に影響を与えます。
A. はい。ダミーは所要日数ゼロで先行関係を明示するための補助枝です。ただし存在することでノードの最早時刻/最遅時刻に影響を与えます。
Q. なぜ単純に各パスの合計を比較してはいけないのですか?
A. 分岐・収束があると、あるノードの最早時刻は「そのノードに入る全ての矢印のうち最も大きい値」で決まります。ダミーや別経路の遅延がその最大値を決めるため、単純和だけでは不十分です。
A. 分岐・収束があると、あるノードの最早時刻は「そのノードに入る全ての矢印のうち最も大きい値」で決まります。ダミーや別経路の遅延がその最大値を決めるため、単純和だけでは不十分です。
Q. 手早く解くコツは?
A. AOAでは「前方計算=ノードに最大値を入れていく」ことを手で追うのが最速。各ノードに数値を書き込み、収束点で最大値を選べば答えが出ます。
A. AOAでは「前方計算=ノードに最大値を入れていく」ことを手で追うのが最速。各ノードに数値を書き込み、収束点で最大値を選べば答えが出ます。
関連キーワード: クリティカルパス、ダミー矢印、アローダイアグラム、前方計算、フロート(余裕)

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

