23.2.2. オートマトンの設計
指定のの機能を持つオートマトンを設計してみましょう. ここでは電子錠のような働きをするオートマトンを作成してみましょう.
具体的には,解錠するために正しく「abac」と入力される必要があり,それ以外の入力では失敗するものとします.
オートマトン動作のチェック表の作成 #
シミュレータを使う前に,完成したオートマトンの動きをチェックする表を作りましょう.ここでは,何文字か入力した後,終了状態になっている(解錠する)かどうかだけに注目します.「abac」が全て正しい順番で入力されたとき初めて解錠することを確認するため,正しい入力以外にも入力が不足している場合や途中で誤った入力が行われる場合もチェックするようにします。
| 入力 | 最終状態 |
|---|---|
| 無し | 非終了状態 |
| a | 非終了状態 |
| ab | 非終了状態 |
| aba | 非終了状態 |
| abac | 終了状態 |
| aabac | 非終了状態 |
| abbac | 非終了状態 |
| ababac | 非終了状態 |
グラフの構成 #
チェック表を満たすように,オートマトンを構成します. ここでは下図のようなオートマトンを入力してみましょう.

オートマトンの実行 #
チェック表をもとに作成したオートマトンのテストをしましょう.ウィンドウ左上に4つ並んでいるボタンの中で緑色の三角ボタンをクリックして,オートマトンを実行します.電子錠の鍵である「abac」を順にタイプすると,下図のように二重丸の終了状態が緑色になり,「解錠」できたことが分かります.

チェック表の他の入力についてもテストしてみましょう.「非終了状態」と予想した入力をタイプした後,二重丸の終了状態が緑色になっていないことを確認しましょう.たとえば,下は「aabac」と入力した後の状態です.緑になっている状態が二重丸でないので,「非終了状態」という予想通りになっていることが分かります.
