Skip to the content.

最終更新日:2026年9月2日

まず結論

状態遷移表は、現在の状態と入力の組合せから、次の状態を確認するための表です。

まず、表の1マスを次のように読みます。

表の列 = 今いる状態
表の行 = 今回の入力
交点    = 次に行く状態

つまり、基本はこれだけです。

現在状態 + 入力 → 次状態

科目Aでは、次の順で追えば解けます。

現在状態を確認する
↓
入力との交点を見る
↓
次の状態へ更新する
↓
次の入力を処理する

一番大切なのは、状態が変わったら、次の入力は新しい状態から読むことです。

直感的な説明

状態遷移表は、機械やシステムの「動作ルール表」と考えると分かりやすいです。

たとえば、次のような表があるとします。

入力\状態 S1 S2 S3
t1 S2   S1
t2   S3 S2

この表の

t1行 × S1列 = S2

は、単に「S2」と覚えるのではなく、次の文章として読みます。

現在S1にいて、t1が入力されたら、次はS2へ移る。

同じように、

t2行 × S2列 = S3

なら、

現在S2にいて、t2が入力されたら、次はS3へ移る。

という意味です。

交点に書かれている状態は、今いる状態ではなく、入力後の「次の状態」です。

条件分岐表として考える

プログラムに置き換えると、状態遷移表は次のようなルールを1枚にまとめたものです。

if state == "S1" and signal == "t1":
    state = "S2"

つまり、

今どこにいる?
+
何が入力された?
↓
次はどこへ行く?

を表にしたものです。

たとえば、自動販売機でも同じ考え方です。

  • 待機中に硬貨が入る
  • 商品選択待ちへ移る
  • 商品ボタンが押される
  • 商品を出して待機中へ戻る

状態遷移表は、このような「状態と入力による変化」を整理しています。

定義・仕組み

状態遷移表には、主に次の3つがあります。

項目 意味
現在状態 今いる状態
入力 今回与えられる信号やイベント
次状態 入力後に移る状態

表を1マスずつ文章にする

状態遷移表が分かりにくいときは、1マスずつ文章に変換すると理解しやすくなります。

入力\状態 S1 S2 S3
t1 S2   S1
t2   S3 S2

この表なら、次のように読めます。

S1でt1 → S2
S2でt1 → 変化なし
S3でt1 → S1

S1でt2 → 変化なし
S2でt2 → S3
S3でt2 → S2

表全体を一度に理解しようとせず、「現在状態・入力・次状態」の3点だけを見るのがコツです。

状態が変わったら見る列も変わる

現在状態がS1で、入力t1によってS2へ移ったとします。

S1 --t1--> S2

次の入力を処理するときは、もうS1ではありません。

次はS2列を見ます。

S1でt1 → S2
↓
現在状態をS2へ更新
↓
次の入力はS2列から読む

空欄の扱い

問題文で「空欄は状態が変化しない」と指定されている場合、現在状態をそのまま維持します。

現在状態:S2
入力:t1
交点:空欄

→ S2のまま

ただし、入力そのものを無視するわけではありません。

その入力は1回分処理済みなので、次の入力へ進みます。

空欄を「処理終了」や「未定義」と決めつけず、意味は必ず問題文で確認します。

不合格状態・エラー状態

文字列検査では、特定の状態へ入ると不合格になる場合があります。

状態 e に入る
→ 不合格

この場合、一度でもeへ遷移した選択肢は不合格です。

最後の文字まで読む必要がない場合もあります。

科目Aでどう出る?

状態遷移表の問題では、複数の入力を順番に与え、最後の状態を求める形式がよく出ます。

まず見るのは「現在状態」と「今回の入力」

たとえば、現在状態がS1で、入力がt2なら、

S1列を見る
↓
t2行を見る
↓
交点を確認する

という順番です。

交点がS3なら、

S1 --t2--> S3

となります。

次の入力では、S1ではなくS3列を見ます。

作業表を書いて追う

次の作業表を自分で書くと、途中の見落としを防げます。

手順 現在状態 入力 次状態
1 S1 t1 S2
2 S2 t2 S3
3 S3 t1 S1

解く手順は次のとおりです。

  1. 初期状態を書く
  2. 入力を1つだけ読む
  3. 表の交点を確認する
  4. 現在状態を次状態へ書き換える
  5. 次の入力へ進む

文字列を検査する問題

文字列検査では、文字を左から1文字ずつ読みます。

文字そのものを見る
↓
数字・符号・小数点・空白などに分類する
↓
現在状態との交点を見る
↓
次状態へ更新する

例えば、次のように記録します。

+0010:a → c → b → b → b → b
-1   :a → c → b
12.2 :a → b → b → d → e
9.空白:a → b → d → a

不合格状態がeなら、eを含む経路だけを探せば判断できます。

状態の意味を推測する

状態名がa、b、cのような記号でも、遷移から意味を推測できます。

状態 推測できる意味の例
a 初期状態、または入力前の状態
b 数字を読んでいる状態
c 符号を読んだ状態
d 小数点を読んだ直後
e 不合格状態

ただし、状態の意味は補助的な理解です。

最終的な判断は、必ず問題文の状態遷移表に従います。

判断表

問題文の表現 見るポイント
現在の状態がS1 最初に見る列はS1
入力を順番に与える 1つずつ処理する
交点にS3とある 入力後の次状態がS3
文字列を左端から検査 左から1文字ずつ読む
状態eなら不合格 eへ一度でも入るかを見る
空欄は変化なし 現在状態を維持する
最後の状態を求める 全入力を処理した後の状態を見る
行が入力、列が状態 見出しを確認して交点を読む

どんな場面で使う?

状態遷移の考え方は、状態によって動作が変わるシステムで使われます。

たとえば、次のような場面です。

  • 自動販売機
  • エレベーター
  • 信号機
  • ログイン処理
  • 通信プロトコル
  • 組込み機器の制御
  • ゲームキャラクターの動作
  • 入力文字列の形式検査
  • 数値や識別番号の入力チェック

同じ入力でも、現在状態が違えば次の動作が変わることがあります。

入力が同じ
≠
結果も同じ

現在状態と入力をセットで見ることが重要です。

よくある誤解・混同

交点に書かれている状態を「現在状態」と考える

交点に書かれているのは、入力後の次状態です。

現在S1 + 入力t2
交点S3

→ 次状態はS3

この1マスを文章にできるようになると、表全体が読みやすくなります。

最初の状態の列を最後まで見る

一度状態が変わった後も、最初の状態の列を見続ける誤りです。

S1 → S3

となった後は、次の入力をS3列で確認します。

状態が変わるたびに、見る列も変わります。

空欄なら入力を無視する

空欄が「状態変化なし」を表す場合でも、入力は1回分処理されています。

状態はそのまま
↓
次の入力へ進む

同じ入力をもう一度読むわけではありません。

行と列を逆に読む

表によって、行と列の配置は異なります。

  • 行が入力、列が状態
  • 行が状態、列が入力

どちらの場合もあります。最初に見出しを確認します。

状態遷移表と状態遷移図は別の仕組み

状態遷移表と状態遷移図は、表現方法が違うだけで、表している内容は同じです。

表現 特徴
状態遷移表 交点から次状態を探しやすい
状態遷移図 状態と移動の流れを直感的に見やすい

どちらも基本は次の関係です。

現在状態 + 入力 → 次状態

まとめ(試験直前用)

  • 列=現在状態、行=入力、交点=次状態と読む
  • 状態遷移表は、現在状態と入力から次状態を決める表
  • 交点に書かれているのは入力後の次状態
  • 入力は必ず1つずつ順番に処理する
  • 遷移後は、新しい状態から次の入力を読む
  • 空欄の意味は問題文を確認し、「変化なし」なら現在状態を維持する
  • 行と列の見出しを先に確認する
  • 迷ったら、手順|現在状態|入力|次状態 の作業表を書く

© 2024-2026 stemtazoo. All rights reserved.