待ち行列と数式の近似・極限
M/M/1 待ち行列の前提と待ち時間の式を使って、「どの運用なら前提に反しないか」「利用率がいくつで待ち時間が逆転するか」を判断できるようになる。あわせて、漸化式・不動点・分数関数の極限・(1+α)^n の近似・行列の基本操作の問題を、式を整理して解けるようになる。
システムの応答時間を見積もるときに、「サーバが混むと待ち時間がどれだけ延びるか」は性能設計の基本です。試験では、式をそのまま使う計算問題と、前提条件に反する運用を見抜く問題が繰り返し出ています。数式系の問題は、式を1行整理すれば数秒で解けるものばかりなので確実に点にできます。
このレッスンで稽古する(用語チェック・過去問)結論:このレッスンで覚えるのは6つの型
このレッスンの問題は、ほぼ次の6つの型に収まります。どれも「式を1回整理する」か「条件を1つ見抜く」だけで解けます。待ち行列の2つが少し厚め、残りは型を覚えれば十分です。
| # | 型 | 一言でいうと |
|---|---|---|
| 1 | M/M/1 の前提 | 到着はでたらめ・処理時間もでたらめ・窓口1つ・行列は無制限で先着順 |
| 2 | M/M/1 の待ち時間 | 待ち時間 = 処理時間 × ρ/(1−ρ)。ρ=0.5 で処理時間と同じになる |
| 3 | 漸化式と不動点 | 式を f(n+1)=○×f(n) の形に直す。繰り返して値が変わらなくなったら f(y)=y |
| 4 | 分数関数の極限 | t→∞ では分子と分母の最高次数を比べる。分母の次数が高ければ 0 |
| 5 | (1+α)^n の近似 | |α| が 1 よりずっと小さいとき 1+nα で近似できる |
| 6 | 行の基本操作 | 「定数倍」「入れ替え」「他の行の定数倍を足す」の3種類を見分ける |
M/M/1 待ち行列とは:記号の意味と4つの前提
待ち行列理論は、「お客さんが来る→並ぶ→処理される」仕組みで、平均どれくらい待つかを計算する理論です。M/M/1 は、その中でいちばん単純なモデルの名前です。3つの記号は順に「到着のしかた / 処理時間のばらつき方 / 窓口の数」を表します。
| 記号の位置 | M/M/1 での値 | 意味 |
|---|---|---|
| 1つ目 M | ポアソン到着 | お客さんは互いに無関係に、でたらめなタイミングで来る |
| 2つ目 M | 指数分布 | 処理時間はでたらめにばらつく(決まった時間ではない) |
| 3つ目 1 | 窓口1つ | 処理するのは1台・1人だけ |
| (暗黙の前提) | 行列は無制限・先着順 | 行列が長くなっても断らず、来た順に処理する |
たとえるなら、レジが1台だけのコンビニです。客は勝手なタイミングで来て、会計時間は人によってばらばら。行列が長くても入店を断らず、割り込みもさせない店、というイメージです。
試験では「前提に反しない運用はどれか」の形で出ます。前提に反する運用と比べると次のとおりです。
| 運用の例 | 判定 | 理由 |
|---|---|---|
| 緊急度や量に関係なく先着順に処理する | ✅ 反しない | 先着順は前提どおり |
| 空き具合を見てから要求を出す人がいる | ❌ 反する | 到着が状況に左右され、「互いに無関係なでたらめな到着」ではなくなる |
| 待ちが一定量を超えたら受付を止める | ❌ 反する | 行列の長さに上限ができる(無制限でなくなる) |
| 処理時間 = 一定の準備時間 + 量に比例する時間 | ❌ 反する | 処理時間が式で決まってしまい、指数分布のでたらめなばらつきにならない |
| 急ぎの仕事を優先する | ❌ 反する | 先着順でなくなる |
M/M/1 の待ち時間の式:ρ が 0.5 を超えると「待つ方が長い」
利用率 ρ(ロー) は、窓口がふさがっている時間の割合です(0〜1 の値)。M/M/1 では次の式が成り立ちます。
平均待ち時間 = 平均サービス時間 × ρ / (1 − ρ)
平均サービス時間は、1件の処理そのものにかかる時間です(問題文では「平均伝送時間」などと呼ばれます)。ρ/(1−ρ) が「処理時間の何倍待つか」を表すので、ρ を入れて計算すれば倍率が分かります。
| 利用率 ρ | ρ/(1−ρ) | 待ち時間は処理時間の… |
|---|---|---|
| 0.4 | 0.4/0.6 ≒ 0.67 | 0.67倍(処理より短い) |
| 0.5 | 0.5/0.5 = 1 | ちょうど同じ |
| 0.6 | 0.6/0.4 = 1.5 | 1.5倍 |
| 0.8 | 0.8/0.2 = 4 | 4倍 |
| 0.9 | 0.9/0.1 = 9 | 9倍 |
ρ が 1 に近づくと待ち時間は急に膨らみます。これが「サーバの利用率は余裕をもって設計する」理由です。なお、待ち時間に処理時間を足したもの(応答時間)は、処理時間 ÷ (1−ρ) になります。問題文で聞かれているのが「待ち時間」か「応答時間」かは必ず確認してください。
漸化式と不動点:まず f(n+1)=○×f(n) に直す
漸化式は、「次の値を、いまの値から計算するルール」を書いた式です。読み方のコツは、左辺を f(n+1) だけにしてから倍率を読むことです。
例:f(n+1) + 0.2×f(n) = 2×f(n) → f(n+1) = 2f(n) − 0.2f(n) = 1.8×f(n)。つまり1世代後は 1.8倍です。選択肢の文章は 0.2 を「何に対する割合か」でずらしてきます。
| 選択肢の言い方 | 実際の倍率 |
|---|---|
| 2倍になり、増殖後の20%が死ぬ | 2 × 0.8 = 1.6倍 |
| 2倍になり、増殖後の20%が増える | 2 × 1.2 = 2.4倍 |
| 2.2倍に増える | 2 + 0.2(移項の符号ミス) |
| 1.8倍に増える | 2 − 0.2 = 1.8倍(正解) |
不動点は、関数に入れても値が変わらない点(f(y)=y となる y)です。「y←f(x)、x←y」を繰り返して y が変わらなくなったなら、そのとき f(y)=y が成り立ちます。
分数関数の極限:最高次数を比べるだけ
極限(lim)は、t をどこまでも大きくしたときに値が近づく先のことです。t→∞ の分数は、分子と分母の最高次数(t の何乗がいちばん大きいか)を比べれば答えが決まります。
| 比べた結果 | 極限 | 例 |
|---|---|---|
| 分子の次数 < 分母の次数 | 0 | (t+1)/(t²−t) → 0 |
| 分子の次数 = 分母の次数 | 最高次の係数の比 | (3t+1)/(2t−5) → 3/2 |
| 分子の次数 > 分母の次数 | ∞(発散) | t²/(t+1) → ∞ |
分数を分数で割る形 g(t)/f(t) は、先に「割る分数をひっくり返して掛ける」で1つの分数にまとめます。
(1+α)^n ≒ 1+nα の近似条件
(1+α)^n を展開すると 1 + nα + (α² の項) + (α³ の項)… となります。|α| が 1 よりずっと小さいと、α²・α³ の項はほぼ 0 になるので、1+nα だけで近似できます(これを一次近似といいます)。たとえば 1.01^3 = 1.030301 は、1+3×0.01 = 1.03 とほぼ同じです。
行の基本操作(掃き出し法):3種類を見分ける
連立方程式の係数を表(行列)に並べ、行に操作を加えて解を出す方法を掃き出し法といいます。使える操作は次の3種類だけです。
| 操作 | 見分け方 |
|---|---|
| (1) ある行に 0 でない数を掛ける | 1つの行の数が全部同じ倍率で変わる(例:0,3,6 → 0,1,2) |
| (2) 行を入れ替える | 2つの行の位置がそのまま入れ替わる |
| (3) ある行に他の行の定数倍を足す | 片方の行だけが、もう片方の行の数を使って変わる |
判定のコツは、変化前後で「どの行が変わったか」と「変わった行の新しい値が、他の行から作れるか」を見ることです。
待ち時間が伝送時間を最初に上回る利用率
ア 0.4
イ 0.5
ウ 0.6
エ 0.7
出典:基本情報技術者試験 科目A免除 修了試験 20250727 実施分 問4
解き方と答えを見る
- 式を書く:平均回線待ち時間 = 平均伝送時間 × ρ/(1−ρ)(ρ は回線利用率)
- 「待ち時間 > 伝送時間」になる条件は、倍率 ρ/(1−ρ) が 1 を超えること
- ρ/(1−ρ) = 1 となる境界を求める:ρ = 1 − ρ → 2ρ = 1 → ρ = 0.5
- 確かめる:ρ=0.4 なら 0.4/0.6 ≒ 0.67(1未満)、ρ=0.6 なら 0.6/0.4 = 1.5(1超)
- ρ が 0.5 を超えた時点で、初めて待ち時間が伝送時間より長くなる
答え:イ(0.5)
漸化式から1世代後の倍率を読む
ア 1 世代後の個数は,第 n 世代の個数の 1.8 倍に増える。
イ 1 世代後の個数は,第 n 世代の個数の 2.2 倍に増える。
ウ 1 世代後の個数は,第 n 世代の個数の 2 倍になり,更に増殖後の 20%が増える。
エ 1 世代後の個数は,第 n 世代の個数の 2 倍になるが,増殖後の 20%が死ぬ。
出典:基本情報技術者試験 科目A免除 修了試験 20250727 実施分 問6
解き方と答えを見る
- 式:f(n+1) + 0.2×f(n) = 2×f(n)
- 左辺の 0.2×f(n) を右辺へ移す:f(n+1) = 2×f(n) − 0.2×f(n)
- まとめる:f(n+1) = 1.8×f(n)
- 1世代後は第n世代の1.8倍。1より大きいので「増える」
答え:ア(1.8倍に増える)
繰り返し手続で値が変わらなくなったときの関係式
ア f(a) = y
イ f(y) = 0
ウ f(y) = a
エ f(y) = y
解き方と答えを見る
- 手続の流れ:y ← f(x) を計算し、x ← y として、また y ← f(x) に戻る
- つまり毎回「前回の y を f に入れて、新しい y を出す」ことを繰り返している
- y の表示が変わらなくなった = f に y を入れても同じ y が返ってくる
- よって f(y) = y(不動点)。f(a)=y は1回目だけの式なので不適
答え:エ(f(y) = y)
分数関数の比の極限
ア 0
イ 1
ウ b/a
エ ∞
解き方と答えを見る
- g(t)/f(t) = {b/(t²−t)} ÷ {a/(t+1)}
- 割る分数をひっくり返して掛ける:= b/(t²−t) × (t+1)/a = b(t+1) / {a(t²−t)}
- 次数を比べる:分子 b(t+1) は1次、分母 a(t²−t) は2次で、分母の方が高い
- 確かめ:分子と分母を t² で割ると b(1/t + 1/t²) / {a(1 − 1/t)}。t→∞ で分子は 0、分母は a に近づく
- よって極限は 0 ÷ a = 0
答え:ア(0)
行の基本操作を分類する
| 5 | 6 | 7 |
|---|
| 1 | 0 | −1 |
|---|
| 2 | 3 | 4 |
|---|
| 0 | 3 | 6 |
|---|
| 0 | 1 | 2 |
|---|
ア a と b
イ a と c
ウ b と c
エ b と d
出典:基本情報技術者試験 科目A免除 修了試験 20211212 実施分 問4
解き方と答えを見る
- a:1行目(2,3,4)はそのまま。2行目が(5,6,7)→(1,0,−1)。(5,6,7) − 2×(2,3,4) = (5−4, 6−6, 7−8) = (1,0,−1) なので「他の行の定数倍を足す」=(3)
- b:2つの行がそのまま上下入れ替わっている =(2)
- c:1行目(1,0,−1)はそのまま。2行目が(2,3,4)→(0,3,6)。(2,3,4) + (−2)×(1,0,−1) = (0,3,6) なので =(3)
- d:2行目が(0,3,6)→(0,1,2)。全部を 1/3 倍しているので =(1)
- 同じ種類の操作は a と c(どちらも(3))
答え:イ(a と c)
要点(試験直前に読む)
- M/M/1 の前提は「ポアソン到着(でたらめ・互いに無関係)・指数分布の処理時間・窓口1つ・行列無制限で先着順」。運用がこの4つのどれかを崩したら前提違反
- M/M/1 の待ち時間 = サービス時間 × ρ/(1−ρ)。ρ=0.5 で処理時間と同じ、0.5 を超えると待つ方が長い
- 漸化式は f(n+1)=○×f(n) に直して倍率を読む。繰り返して値が変わらなくなったら f(y)=y(不動点)
- t→∞ の分数は最高次数で決まる。分母の次数が高い→0、同じ→係数比、分子が高い→∞
- (1+α)^n ≒ 1+nα は |α| が 1 よりずっと小さいときに使える
- 行の基本操作は「定数倍」「入れ替え」「他の行の定数倍を足す」の3種類
ひっかけ
- M/M/1 の前提問題:「処理時間=一定時間+量に比例する時間」はもっともらしいが、処理時間が式で決まるので指数分布に反する。「受付を一時中断」は行列の長さに上限ができるので反する
- 待ち時間の問題:0.4〜0.7 を感覚で選ばせる。ρ/(1−ρ)=1 を解いて ρ=0.5 と境界を出す
- 漸化式の問題:「2倍から20%死ぬ(1.6倍)」「2倍に20%増える(2.4倍)」「2.2倍(符号ミス)」が並ぶ。必ず移項して 1.8 を計算する
- 極限の問題:b/a(係数の比)が選択肢にあるが、それは次数が同じときだけの答え。次数が違えば 0 か ∞
- (1+α)^n の問題:n や n×α が大きいことを条件にする選択肢は誤り。小さくすべきは α
用語(15)
到着・行列・処理の仕組みをモデル化し、平均待ち時間や行列の長さを計算する理論。
ポアソン到着・指数分布のサービス時間・窓口1つで、行列無制限・先着順を前提とする待ち行列モデル。
⚠ M/D/1 は2つ目が D(一定のサービス時間)。「処理時間が一定」なら M/M/1 の前提に反する。
客が互いに無関係に、でたらめなタイミングで到着すること。
⚠ 「空き具合を見て要求を出す」のように到着が状況に左右されると、ポアソン到着ではなくなる。
M/M/1 でサービス時間が従うと仮定する、でたらめなばらつき方の分布。
⚠ 「一定時間+量に比例する時間」のように式で決まる処理時間は指数分布ではない。
窓口が処理中でふさがっている時間の割合で、0以上1未満の値。
⚠ 待ち時間の倍率 ρ/(1−ρ) と混同しない。ρ=0.5 のとき倍率がちょうど1になる。
行列に並んでから処理が始まるまでの平均時間で、M/M/1 では サービス時間×ρ/(1−ρ)。
⚠ 応答時間(待ち時間+サービス時間 = サービス時間/(1−ρ))と区別する。
1件の処理そのものにかかる平均時間(伝送時間・印刷時間など)。
⚠ 待ち時間は含まない。
来た順に処理する方式で、M/M/1 の前提。
⚠ 緊急度や量で順番を変える優先処理は前提に反する。
次の項の値を、前の項の値から計算するルールを表した式。
関数に入れても同じ値が返る点で、f(y)=y を満たす y。
⚠ 方程式の解 f(y)=0 とは別物。
変数をある値や無限大に限りなく近づけたときに、式の値が近づく先。
多項式の中で、変数が何乗まで出てくるかを表す数。
⚠ 分数の極限では係数でなく次数で判断する。係数の比が答えになるのは次数が同じときだけ。
2乗以上の小さな項を無視し、1次の項までで値を近似すること。
数を縦横の表の形に並べたもので、連立方程式の係数をまとめるのに使う。
⚠ 待ち行列の「行列」とは無関係。
行の基本操作を繰り返して、係数の表を解が読める形に変える連立方程式の解き方。
このレッスンの過去問
- M/M/1待ち行列モデルの前提条件基本情報技術者試験 科目A免除 修了試験 20240609 実施分 問4
- M/M/1待ち行列モデルの待ち時間比較計算基本情報技術者試験 科目A免除 修了試験 20250727 実施分 問4
- 漸化式による増減率の解釈平成27年度 秋期 基本情報技術者試験 午前 問3
- 分数関数の極限計算令和元年度 秋期 基本情報技術者試験 午前 問4
- (1+α)^nの一次近似条件基本情報技術者試験 科目A免除 修了試験 20200614 実施分 問3
- 連立一次方程式の行基本変形(掃き出し法)の操作分類基本情報技術者試験 科目A免除 修了試験 20211212 実施分 問4