基本情報技術者 2018年 春期 午前(科目A) 問04
問題文
入力記号、出力記号の集合が{0, 1}であり、状態遷移図で示されるオートマトンがある。0011001110を入力記号とした場合の出力記号はどれか。ここで、S1は初期状態を表し、グラフの辺のラベルは、入力/出力を表している。〔状態遷移図〕

選択肢
ア:0001000110(正解)
イ:0001001110
ウ:0010001000
エ:0011111110
🔒 解説は解答すると表示されます
有限オートマトンの入力出力変換【午前解説】
正解の理由
正解は ア(0001000110)です。初期状態 S1 から入力列を左から順に処理すると、各遷移ラベルの「/」右側が出力に対応します。S1 の 0 は S1 に留まり 0、S1 の 1 は S2 へ移り出力 0、S2 の 1 は S3 へ移り出力 1、S3 の 1 は自己ループで出力 1、S3 の 0 は S1 に戻り出力 0、という動きを繰り返すことで出力列が 0001000110 と得られます。
解法ステップ
- 初期状態 S1 を確認する。
- 入力列を左から順に1文字ずつ処理する。
- 現在状態と入力に合致する遷移をたどり、遷移ラベルの右側(出力)を順次並べる。
- 遷移先の状態を現在状態に更新して次の入力へ進む。
- 最後まで処理した出力列を選択肢と照合する。
(この問題は逐次シミュレーションで確実に解けます。手で追えない場合は簡単なコードで確認しても良いです。)
選択肢別の誤答解説
- ア: ア 0001000110 — 正解。上記手順で一文字ずつシミュレーションして得られる出力列と一致します。
- イ: 0001001110 — 8文字目(右から3番目)の出力が誤っており、S3 の 1 を自己ループと見なした際の出力変化を正しく反映していません。
- ウ: 0010001000 — 前半の遷移(S1→S2、S2→S3 など)の出力扱いを誤り、3〜4文字目の出力が逆転しています。
- エ: 0011111110 — 中盤以降をすべて 1 とした出力だが、S1 や S2 に戻る 0/0 遷移を無視しており不正解です。
(差分の具体例)正解 0001000110 と各選択肢を比べると、イは 7〜9 桁目、ウとエは前半で早期に異なります。手で追えば違いは一目で判ります。
よくある誤解
- S3 の 1/1 を「1 を読むと必ず S1 に戻る」と誤解して遷移先を間違える。実際は S3 の 1 は自己ループで S3 に留まります。
- 出力を状態に依存すると誤解して Moore 型と混同する。ここは遷移ラベルに出力がある Mealy 型で、入力ごとに即座に出力が決まります。
- 出力列の長さミス:入力列と出力列の長さは常に等しい(各入力に対して一つの出力がある)ことを忘れると桁合わせで誤る。
補足コラム
この図は典型的な Mealy オートマトンの例です。Mealy 型では出力が遷移に付随し、入力と現在状態の組合せで出力が決まります。一方 Moore 型は状態そのものが出力を持つため、同じ問題設定でも出力の決め方(遅延やオフセット)が異なります。試験では「入力/出力」の表記を見たら Mealy を想定して逐次シミュレーションするのが安全です。
簡単な確認用 Python 実装例:
# 状態を文字列で管理する簡易シミュレータ
trans = {
('S1','0'): ('S1','0'),
('S1','1'): ('S2','0'),
('S2','0'): ('S1','0'),
('S2','1'): ('S3','1'),
('S3','1'): ('S3','1'),
('S3','0'): ('S1','0'),
}
def run(input_seq):
state = 'S1'
out = []
for c in input_seq:
state, y = trans[(state,c)]
out.append(y)
return ''.join(out)
print(run("0011001110")) # -> 0001000110
FAQ
Q1: 出力の長さは入力の長さと必ず等しいですか?
A1: はい。Mealy 型では各入力に対して即座に出力が1つ対応するため等しくなります。
A1: はい。Mealy 型では各入力に対して即座に出力が1つ対応するため等しくなります。
Q2: 遷移が未定義の入力があった場合は?
A2: 試験問題では遷移図に明記されているため未定義は基本的にありません。不明瞭な表現があれば問題文の図や注を再確認してください。
A2: 試験問題では遷移図に明記されているため未定義は基本的にありません。不明瞭な表現があれば問題文の図や注を再確認してください。
Q3: 実務的な意味はありますか?
A3: このようなオートマトンはプロトコル処理や回路、文字列検査などで使われ、遷移と出力を正確に追う力は重要です。
A3: このようなオートマトンはプロトコル処理や回路、文字列検査などで使われ、遷移と出力を正確に追う力は重要です。
関連キーワード: オートマトン、Mealy、状態遷移図、逐次シミュレーション、有限状態機械、遷移ラベル、出力列、状態遷移

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

