最終更新日:2026年9月17日
fe fe-technology algorithm programming pseudocode
まず結論
複数の条件を順番に判定する処理では、出現頻度が高いケースを先に判定すると、平均の比較回数を少なくできることがあります。
FEで「処理区分」という言葉が出てきたら、まずは難しく考えず、
処理区分
= データの種類
= どの処理に回すかを決める分類ラベル
と読み替えると理解しやすくなります。
試験では、次の流れで考えるのがポイントです。
どの区分が多いか確認する
↓
多い区分を先に判定する
↓
早く判定終了するデータを増やす
↓
平均比較回数を減らす
直感的な説明
例えば、売上データを次の3種類に分けるとします。
A区分:60%
B区分:30%
C区分:10%
ここで、最初にA区分かどうかを調べる処理を考えます。
Aですか?
├─ はい → Aの処理
└─ いいえ → Bですか?
├─ はい → Bの処理
└─ いいえ → Cの処理
A区分は全体の60%なので、60%のデータは最初の1回の比較だけで処理が決まります。
残りの40%は2回目の比較まで必要です。
反対に、出現率10%のC区分から調べると、最初の1回で終わるのは10%だけです。残り90%は次の比較まで進みます。
つまり、よく出るケースを先に置いた方が、早く処理を終えられるデータが多くなるということです。
動かして確認してみる
次の教材では、最初に判定する区分を変えられます。100件のデータを処理すると考えて、平均比較回数がどう変わるかを確認してみてください。
3つの処理区分をどの順番で判定する?
最初に判定する区分を選んでください。
- A区分 60件 × 1回 = 60回
- 残り 40件 × 2回 = 80回
ポイント:最初の判定で終わるデータが多いほど、平均比較回数は小さくなります。
この図で見ると、期待値の式を覚える前に、「100件のうち何件が1回で終わるのか」を考えればよいことが分かります。
定義・仕組み
「処理区分」は特別なアルゴリズム用語ではない
「処理区分」は、特定のアルゴリズムだけで使う決まった専門用語ではありません。
業務データなどで、レコードごとに処理内容を分けるための項目として使われる表現です。
例えば、売上データなら次のような分類が考えられます。
通常売上
返品
値引き
取消し
このような分類を表す項目を「処理区分」と呼ぶことがあります。
FEの問題では、言葉そのものよりも、その区分によって条件分岐する処理を想像できるかが重要です。
条件分岐に置き換える
3種類の処理区分があるなら、次のような if・else の処理として考えられます。
もし A区分 なら
Aの処理
そうでなく B区分 なら
Bの処理
そうでなければ
Cの処理
この場合の比較回数は次のようになります。
| 区分 | 比較回数 | 理由 |
|---|---|---|
| A | 1回 | 最初の条件で確定する |
| B | 2回 | Aではないことを確認してからBを判定する |
| C | 2回 | AでもBでもなければCと確定する |
Cについては、最後に else で処理しているため、Cかどうかを追加で比較する必要はありません。
平均比較回数は「期待値」で求める
Aが60%、Bが30%、Cが10%のとき、Aを最初に判定すると、
60% → 1回で終了
40% → 2回で終了
となります。
平均比較回数は、
1 × 0.6 + 2 × 0.4
= 1.4回
です。
「期待値」という言葉が分かりにくい場合は、100件のデータで考えると直感的です。
A:60件 × 1回 = 60回
BとC:40件 × 2回 = 80回
合計 140回
140回 ÷ 100件 = 1.4回
つまり期待値は、ここでは1件あたり平均して何回比較するかを求めているだけです。
このテーマは、条件分岐やアルゴリズムの処理順序と関係があります。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、複数の処理区分の出現比率が与えられ、どの順番で判定すれば平均比較回数が少なくなるかを問う形が考えられます。
例えば、次の3区分があるとします。
A:60%
B:30%
C:10%
それぞれを最初に判定した場合を比較します。
| 最初に判定する区分 | 1回で終了する割合 | 平均比較回数 |
|---|---|---|
| A | 60% | 1.4回 |
| B | 30% | 1.7回 |
| C | 10% | 1.9回 |
Bを先にすると、
1 × 0.3 + 2 × 0.7
= 1.7回
Cを先にすると、
1 × 0.1 + 2 × 0.9
= 1.9回
となります。
したがって、このような条件では、出現頻度が最も高いAを先に判定するのが有利です。
試験中は、まず式を書く前に、
どのケースを先に判定すれば、一発で処理が決まるデータが最も多いか?
と考えると選択肢を切りやすくなります。
科目Bでどう使う?
科目Bでは、条件分岐を読むときに、どの条件が何回評価されるかを追うことが大切です。
例えば、次のような疑似言語を考えます。
if 区分 = A
Aの処理
elseif 区分 = B
Bの処理
else
Cの処理
endif
区分がBなら、処理の流れは次のようになります。
区分 = A ? → 偽
区分 = B ? → 真
Bの処理へ
比較は2回です。
区分がCなら、
区分 = A ? → 偽
区分 = B ? → 偽
else → Cの処理へ
となり、比較はやはり2回です。
科目Bでトレースするときは、
- 条件を上から順に見る
- 真になった時点でどこへ進むか確認する
- 後続の条件を評価するか確認する
elseなら追加の比較がないことを確認する
という順で追うと整理しやすくなります。
よくある誤解・混同
「処理区分」は決まった専門用語?
必ずしもそうではありません。
問題文の文脈で使われる分類項目と考えて、
処理区分 → データの種類
と読み替えると十分なことが多いです。
比較回数はどの順番でも同じ?
同じではありません。
頻繁に出るケースが後ろにあると、多くのデータが前の条件を何度も通過するため、平均比較回数が増えます。
一番少ない区分を先にした方が、先に除外できる?
今回のように、判定された時点で処理が終了する条件分岐では逆です。
少ない区分を先にしても、そこで終了するデータは少数です。多くのデータが次の比較まで進むため、平均比較回数は増えます。
3区分なら最大3回比較する?
条件の書き方によります。
if A
elseif B
else C
なら、CはAでもBでもないことで確定するため、最大2回です。
一方、Cも明示的に条件比較する処理なら、3回目の比較が発生することがあります。
問題文や疑似言語で、最後の区分が else で確定するのかを確認することが大切です。
まとめ(試験直前用)
- 「処理区分」は、まず「データの種類・分類」と読み替える
- 条件分岐では、出現頻度が高いケースを先にすると平均比較回数を減らしやすい
- 期待値は「1件あたり平均何回比較するか」と考える
if → elseif → elseでは、真になった時点で後続条件を評価しない- 最後が
elseなら、最後の区分そのものを追加で比較しない