【おーとまとん】

オートマトン とは?

最終更新:
💡 入力と規則で状態が変わる、計算のモデル

入力や遷移規則に応じて状態が変わる、抽象的な計算モデル。有限オートマトンは有限個の状態を持ち、入力列が規則に合うかを判定できる。理論上の正規表現や状態遷移の理解に使われる。

📌 このページのポイント
入力を読んで、状態を移る NFAの例(ε遷移なし) q0 q1 q2 開始 a b b a 受理状態 bが0回以上 → aが1回以上 → 最後にb 例:bbaaab は受理、aba は受理しない 入力末尾で二重丸に着けば受理
文字の付いた矢印は、その文字を読んだときの状態遷移です。このNFAでは線のない入力で進めず、途中で二重丸に着くだけでは受理になりません。
ひよこ ひよこ
オートマトンって何のための理論なの?
ペンギン先生 ペンギン先生
計算を数学的に表して、何を判定できるかを考えるためのモデルだよ。自動販売機のお金やボタンに応じた動きを、状態とその変化で表すイメージ。有限オートマトンでは、有限個の状態と入力記号に応じた規則を使うんだ。
ひよこ ひよこ
図の丸と矢印は、どう読むの?
ペンギン先生 ペンギン先生
丸が状態、文字の付いた矢印がその文字を読んだときの移動だよ。開始の矢印から進み、入力を全部読んだところで二重丸の受理状態にいれば受理する。図はNFAの例で、線がない入力では進めない。たとえばbbaaabは受理されるけれど、abの後にさらにaを足すと進めなくなるんだ。
ひよこ ひよこ
DFAとNFAって何が違うの?
ペンギン先生 ペンギン先生
DFAは各状態と入力記号の組み合わせに対して、次の状態が一つに決まる。NFAは進める先がゼロ・一つ・複数の場合があり、入力を読まないε遷移も使えるよ。どれか一つの経路で入力を全部読んで受理状態に着けば受理する。両者が認識できる言語の範囲は同じなんだ。
ひよこ ひよこ
正規表現エンジンも、全部これと同じ仕組み?
ペンギン先生 ペンギン先生
理論上の正規表現と有限オートマトンは、表せる言語の範囲が同じだよ。ただし実装の正規表現には後方参照などの拡張がある。たとえばPCRE2には、前に一致した文字列を参照する機能があるので、実際のエンジンをすべて単純な有限オートマトンと考えないようにしよう。
ひよこ ひよこ
有限オートマトンより広い構造を扱うモデルもある?
ペンギン先生 ペンギン先生
スタックを追加したプッシュダウンオートマトンは、括弧の入れ子のような構造を扱えるよ。チューリングマシンは、読み書きして左右へ動けるヘッドと、長さに上限のないテープを持つモデル。ただしそれでも判定できない問題がある。計算の能力だけでなく限界も考えるのが、この理論の役割なんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「オートマトン」って出てきたら「入力と規則で状態が変わる計算モデル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Automaton」 = 自動装置・自動機械
💬 ラテン語を経て、ギリシャ語のautómatonに由来する語。そのもとになるautómatosは「自ら動く」を表すよ。自動販売機のように、入力に応じて動く装置を想像するとつかみやすいね。

参考資料

← 用語集にもどる