応用情報技術者 2022年 秋期 午前2 問19
問題文
LAN に接続された3台のプリンターA〜Cがある。印刷時間が分単位で4,6,3,2,5,3,4,3,1の9個の印刷データがこの順で存在する場合、プリンターCが印刷に要する時間は何分か。ここで、プリンターは、複数台空いていれば、A, B, Cの順で割り当て、1台も空いていなければ、どれかが空くまで待ちになる。また、初期状態では3台とも空いている。
選択肢
ア:7
イ:9
ウ:11(正解)
エ:12
🔒 解説は解答すると表示されます
プリンタ割当と時刻計算【午前2解説】
正解の理由
与えられたルールに従って逐次的に割り当てると、プリンターCが担当する印刷データは長さ の4件となり、合計は 分です。したがって選択肢の ウ が該当します。以下で各ジョブの開始・終了時刻を明示して、どのようにして 11 分になるかを示します。
解法ステップ
- 初期状態で3台とも空いているので、最初の3件を A, B, C の順で割り当てる(優先順は常に A→B→C)。
- 以降は、残りジョブを順に処理する。いずれのプリンターも空いていなければ、最も早く空く時刻まで待つ(同時に複数が空いた場合も優先順 A→B→C を適用して割り当てる)。
- 各ジョブについて「割当プリンター」「開始時刻」「終了時刻」を記録し、プリンターごとの合計印刷時間を合算する。
※同時に複数台が空く場合の扱いは問題文の解釈が曖昧になりがちなので、本解説では常に A→B→C の優先順で割当てるものとします(初期の「複数台空いていればA,B,Cの順で割り当て」に合わせた明確化)。
割当表(逐次計算)
印刷データの時間順序:4, 6, 3, 2, 5, 3, 4, 3, 1
各プリンターの合計稼働時間:
- A: 分
- B: 分
- C: 分
プリンターCの合計は 分で、選択肢の ウ に一致します。
選択肢別の誤答解説
- ア: 7
単純にCの最初の一件(3分)と続けて割り当ての一部だけを足してしまった誤り。全てのC割当てを合算していない。 - イ: 9
最後の C に割当てられたジョブ(3分、時刻8–11)を見落とす、あるいはジョブ6か8の割当てを誤判定して合計を少なくしたために生じる誤り。 - ウ: 11
正。逐次割当ての結果、Cが担当するジョブは 3,2,3,3 の合計で 11 分となる。 - エ: 12
どこかで1分余分に加算してしまったか、別プリンターのジョブを誤ってCに含めたミス。スケジュール表を逐次確認すれば誤りとわかる。
よくある誤解
- 「空いている中で最も早く空くプリンターに割り当てる」として、優先順を無視してしまう。問題文は「複数台空いていればA,B,Cの順で割り当て」と明示しているため、同時に複数台が空いている場合や初期割当てではこの順序を適用する必要がある。
- どれも空いていないときの「待ち」の扱いを忘れ、次ジョブを時刻0で割り当てようとする。正しくは「最も早く空く時刻まで待ってから」割り当てる。
- ジョブごとの開始・終了時刻を記録せずに合計を推測するため、どのジョブがどのプリンターに割り当てられたかを誤認する。
補足コラム
この問題は「到着順(与えられた順序)のジョブを、優先順のリソースに逐次割り当てる」典型的なシミュレーション問題です。手計算では表や時刻線を作ることが最も確実です。プログラムで解く場合は各プリンターの「空き時刻」の最小値を管理する(優先度付きキューや単純な配列での最小探索)ことで容易にシミュレートできます。
例:Python 風の擬似コード(考え方を示す)
durations = [4,6,3,2,5,3,4,3,1]
# printers = [A_free_time, B_free_time, C_free_time] 初期は [0,0,0]
# 割当時は、もし複数台が同時に空なら A->B->C の順で割当て
FAQ
Q1. 同時に複数台が空いたらどうするのか?
A1. 問題文の指定に従い、常に A→B→C の順で割り当てます(初期割当て・その後の同時空きともに同様)。
A1. 問題文の指定に従い、常に A→B→C の順で割り当てます(初期割当て・その後の同時空きともに同様)。
Q2. この手法は最短総完了時間(makespan)を保証するか?
A2. いいえ。本問題は与えられたルールに従うシミュレーションであり、必ずしも最適な(理論上の)スケジューリングとは一致しません。ここではルール通りに割り当てて合計時間を求めることが目的です。
A2. いいえ。本問題は与えられたルールに従うシミュレーションであり、必ずしも最適な(理論上の)スケジューリングとは一致しません。ここではルール通りに割り当てて合計時間を求めることが目的です。
関連キーワード: プリンタ割当、ジョブスケジューリング、先着順、優先割当、シミュレーション、時刻管理

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

