有限オートマトン
有限オートマトン(ゆうげん-、finite automaton、FA)または有限状態機械(ゆうげんじょうたいきかい、finite state machine、FSM)とは、有限個の状態と遷移と動作の組み合わせからなる数学的に抽象化された「ふるまいのモデル」である。デジタル回路やプログラムの設計で使われることがあり、ある一連の状態をとったときどのように論理が流れるかを調べることができる。有限な記憶領域を持ち、一連の記号列を入力として一度に1つずつ読み込み、後戻りはしない。出力は、そのモデルが実装されれば何らかのユーザインタフェースの形でなされることもある。有限オートマトンは「初期状態」として1つの状態をとり、入力の値に従って異なる状態へと遷移していき、いずれかの状態で終了する。特定の状態群のいずれかで終わっていれば、成功(受容状態)となる。
有限オートマトンは様々な問題に応用でき、半導体設計の自動化、通信プロトコル設計、構文解析などの工学面での応用がある。生物学や人工知能研究では状態機械(群)を使って神経系をモデル化し、言語学では自然言語の文法をモデル化したりする。
目次 |
[編集] 概念と用語
状態(state)とは過去に関する情報を格納するものであり、システムが開始してから現在までの入力を反映するものである。遷移(transition)とは状態変化を示すものであり、遷移を実現するのに必要な条件とともに示される。動作(action)とは活動の説明であり、与えられた時点で実行しなければならないことを示している。動作にはいくつかの型がある。
- 開始(Entry)動作
- その状態に入るときに行う動作
- 終了(Exit)動作
- その状態から出るときに行う動作
- 入力(Input)動作
- 現在状態と入力条件に依存して行う動作
- 遷移(Transition)動作
- ある遷移を行うときに実行される動作
有限オートマトンは図1のように状態遷移図で表すことができる。それと共にある種の状態遷移表が使用される。最も一般的な形式を下に示す。現在の状態(B)と条件(Y)の交差するところに次の状態(C)が示される。完全な動作についての情報は脚注の形で追記される。 完全な動作についての情報を持つ有限オートマトンの定義は、仮想有限状態機械の状態表を使えば可能である。
| 状態A | 状態B | 状態C | |
|---|---|---|---|
| 条件 X | ... | ... | ... |
| 条件 Y | ... | 状態 C | ... |
| 条件 Z | ... | ... | ... |
ここで示しているような反応性システムの設計だけでなく、有限オートマトンは言語学、情報工学、哲学、生物学、数学、論理学など様々な領域で利用される。 ここでそれらの領域の使用方法を全て述べることはできない。有限オートマトンはオートマトン理論や計算理論で研究される一種のオートマトンである。 情報工学では、アプリケーションの動作のモデリング、ハードウェアの設計、ソフトウェア工学、コンパイラ、計算と言語に関する研究などで幅広く活用されている。
[編集] 分類
有限オートマトンは二種類に分類される。アクセプタ/リコグナイザとトランスデューサである。
[編集] アクセプタ/リコグナイザ
このタイプの有限オートマトンは入力を受容(accept)したり、理解(recognize)して、外界に結果を知らせるために状態(state)を使用する。つまり、最終的に受容状態になったかどうかで「はい」または「いいえ」のいずれかを出力として返す。FSMの全状態は受容状態かそうでないかのいずれかである。全入力を処理したとき状態が受容状態なら、その入力は受容されたことになり、さもなくば拒絶/却下されたことになる。基本的に入力は記号(または文字)であり、動作(action)は使用されない。図2 に示した例は "nice" という単語を受容する有限オートマトンを示している。この場合、6番だけが受容状態である。
この機械は言語を定義するものとして説明することもできる。その言語とは、その機械が受容する全ての単語から構成され、それ以外の単語を全く含まないもので、そのような言語をその機械が「受容/受理」すると称する。定義から、FSM が受理する言語は正規言語であり、逆にある言語を受理する FSM が存在する場合、その言語を正規言語と称する。
[編集] 初期状態/開始状態
初期状態は、一般にどこからも矢印で指されていない状態である[1]。
[編集] 受容状態/受理状態
受容状態は、その機械が手続きを成功裡に完了させた状態である。通常、二重丸で表現される。
図3の有限オートマトンは二進法の入力が偶数個の 0 を含むときに受容することを示している。S1 は初期状態でもあり、受容状態でもある。この機械は入力数列に"0"が偶数個含まれるときのみ正しく終了したと判定され、0個も偶数なので"0"が全く含まれない数字列も受容される。
[編集] トランスデューサ
トランスデューサ(変換機、transducer)は、与えられた入力と動作を伴う状態(両方または一方)に基づいて出力を生成する。 このタイプの有限オートマトンはアプリケーション(実際の応用例)の制御に使われる。 また、トランスデューサは二種類に分類される。
- ムーア・マシン
- この有限オートマトンは開始動作のみを使用する。すなわち、出力は状態にのみ依存する。ムーア・モデルの利点はふるまいを単純化できることである。図4の例はエレベーターの扉についてのムーア・マシンを示している。この有限オートマトンは「開放命令」と「閉鎖命令」というふたつの命令を理解し、それによって状態が変化する。「開放途中」状態にある開始動作(E:)は扉の開くところを監視し始めることを示し、「閉鎖途中」状態にある開始動作(E:)は扉の閉じるところを監視し始めることを意味する。「開放」と「閉鎖」状態は動作を伴わないが、これらは外界(つまり他のオートマトン)に扉が開いているとか閉まっているといった状況を知らせる意味を持つ。
- ミーリ・マシン
- この有限オートマトンは入力動作のみを使用する。すなわち、出力は入力と状態に依存する。ミーリ・モデルは状態の数を減らす作用がある。図5の例はムーア・マシンの例と同じものをミーリ・マシンで実装したものを示している(実装された有限オートマトンのふるまいは実行モデルに依存する。例えば仮想有限オートマトンでは動作するが、イベント駆動有限オートマトンでは動作しない)。これは二つの入力動作を持つ。「閉鎖命令が来たら扉を閉めるためにモーターを起動する」という入力動作と「開放命令が来たら扉を開けるためにモーターを起動する」という入力動作である。
実際には、これらを混合したモデルがよく使用される。
ムーア・モデルとミーリ・モデルの違いの詳細は、実施例も含めて外部サイトの"Moore or Mealy model?"にある(ただし英語)。
[編集] 決定性
さらなる分類方法として、決定性有限オートマトン(DFA)と非決定性有限オートマトン(NDFA)がある。決定性有限オートマトンでは、各状態の考えられる全ての入力について一意に次の状態が決定される。非決定性有限オートマトンでは、ある状態にある入力があったとき遷移がどうなるかが決定されない(遷移がないかもしれないし、複数の遷移が対応しているかもしれない)。このような区別は実用的だが理論的なものではない。実際、任意のNDFAをより複雑なDFAに(機能に影響を与えずに)変換するアルゴリズムが存在する。
ひとつしか状態を持たない有限オートマトンは結合有限オートマトンと呼ばれ、入力動作のみを持つ。これは複数の有限オートマトンが協調動作する場合に便利であり、結合有限オートマトンとして表せる部分を抽出して設計に活用する。
[編集] UMLの状態機械
統一モデリング言語(UML)には状態機械を記述するための豊富な意味論と記法がある。UMLの状態機械は従来の有限オートマトンの主な利点を踏襲しつつ、その欠点を克服している。大きな拡張としては、状態の階層化や直交状態の導入があり、動作の記法も拡張されている。ミーリ・マシンもムーア・マシンも記述できる。動作は状態だけでなく、イベントをきっかけとして起動するようにも書ける。
[編集] FSM 論理
有限オートマトン(有限状態機械=FSM)の次の状態と出力は入力と現在の状態によって決定される。FSM論理を図6に示す。
[編集] 数学モデル
タイプによって、いくつかの定義が存在する。 アクセプタ有限オートマトンは<Σ, S, s0, δ, F>の5要素から構成される。
- Σ は入力文字セット(有限だが空ではないシンボルの集合)
- S は有限であって空でない状態の集合
- s0 は Sの要素でもある初期状態
- δ は状態遷移関数: δ: S x Σ → S (非決定性有限オートマトンの場合、δは状態の集合を返すので
となる) - F は終了状態の集合であり、 Sの部分集合(空もありうる)
決定性FSMでも非決定性FSMでも δ は部分関数でもよく、δ(q,x) としたとき、
と
のあらゆる組合せについて定義する必要はない。有限オートマトン M が q という状態で次の入力記号が x のとき、δ(q,x) が未定義なら M はエラーを返す(すなわち、入力は拒絶・却下される)。
トランスデューサ有限オートマトンは<Σ, Γ, S, s0, δ, ω>の6要素から構成される。
- Σ は入力文字セット(有限だが空ではないシンボルの集合)
- Γ は出力文字セット(有限だが空ではないシンボルの集合)
- S は有限であって空でない状態の集合
- s0 は Sの要素でもある初期状態(非決定性有限オートマトンの場合は初期状態の集合)
- δ は状態遷移関数: δ: S x Σ → S
- ω は出力関数
出力関数が状態と入力文字の関数(ω: S x Σ → Γ )ならば、その定義はミーリ・モデルであり、ミーリ・マシンとしてモデル化できる。出力関数が状態のみに依存する(ω: S → Γ )ならば、その定義はムーア・モデルであり、ムーア・マシンとしてモデル化できる。出力機能のない有限オートマトンは状態遷移系などと呼ばれる。
[編集] 最適化
有限オートマトンの最適化とは、同じ機能を実現するのに必要とされる状態の数をいかに減らすかを意味する。既知の最速のアルゴリズムとして Hopcroft minimization algorithm がある[2][3]。他にも Implication table や Moore reduction procedure といった手法が使われる。
[編集] 実装
[編集] ハードウェアへの適用例
デジタル回路では、プログラマブルロジックデバイス、プログラマブルロジックコントローラ、論理ゲート、フリップフロップ、リレーなどを使って有限オートマトンが構成される。もっと具体的に言えば、状態を格納するレジスタを持ち、状態遷移を決定する論理回路と出力を決定する論理回路を持つハードウェアが有限オートマトンであると言える。初期のハードウェア実装法として Richards controller がある。
フリップフロップと出力の間には伝播遅延が存在するため、ミーリ・マシンやムーア・マシンからは非同期出力の論理回路が生成される。このため動作周波数が遅くなってしまう。ミーリ・マシンやムーア・マシンはフリップフロップから直接出力する形に変換でき、そうすることで動作周波数を高めることができる。このように変換した有限状態機械を Medvedev FSM と呼ぶことがある[4]。その最も単純な例としてカウンタ回路がある。
[編集] ソフトウェアへの適用例
有限オートマトンを使ったソフトウェアアプリケーションを作るのに以下のコンセプトが一般に使われる。
[編集] 脚注・出典
- ^ Sipser 2006, p. 34
- ^ Hopcroft, John E (1971). An n log n algorithm for minimizing states in a finite automaton
- ^ Almeida, Marco; Moreira, Nelma; Reis, Rogerio (2007). On the performance of automata minimization algorithms
- ^ “FSM: Medvedev”. 2010年7月10日閲覧。
[編集] 参考文献
[編集] 一般
- Wagner, F., "Modeling Software with Finite State Machines: A Practical Approach", Auerbach Publications, 2006, ISBN 0-8493-8086-3.
- Samek, M., Practical Statecharts in C/C++, CMP Books, 2002, ISBN 1-57820-110-1.
- Samek, M., Practical UML Statecharts in C/C++, 2nd Edition, Newnes, 2008, ISBN 0-7506-8706-1.
- Gardner, T., Advanced State Management, 2007
- Cassandras, C., Lafortune, S., "Introduction to Discrete Event Systems". Kluwer, 1999, ISBN 0-7923-8609-4.
- Timothy Kam, Synthesis of Finite State Machines: Functional Optimization. Kluwer Academic Publishers, Boston 1997, ISBN 0-7923-9842-4
- Tiziano Villa, Synthesis of Finite State Machines: Logic Optimization. Kluwer Academic Publishers, Boston 1997, ISBN 0-7923-9892-0
- Carroll, J., Long, D. , Theory of Finite Automata with an Introduction to Formal Languages. Prentice Hall, Englewood Cliffs, 1989.
- Kohavi, Z., Switching and Finite Automata Theory. McGraw-Hill, 1978.
- Gill, A., Introduction to the Theory of Finite-state Machines. McGraw-Hill, 1962.
- Ginsburg, S., An Introduction to Mathematical Machine Theory. Addison-Wesley, 1962.
[編集] 理論計算機科学
- Arbib, Michael A. (1969年). Theories of Abstract Automata (1st ed. ed.). Englewood Cliffs, N.J.: Prentice-Hall, Inc..
- Bobrow, Leonard S.; Michael A. Arbib (1974年). Discrete Mathematics: Applied Algebra for Computer and Information Science (1st ed. ed.). Philadelphia: W. B. Saunders Company, Inc..
- Booth, Taylor L. (1967年). Sequential Machines and Automata Theory (1st ed.). New York: John Wiley and Sons, Inc.. Library of Congress Card Catalog Number 67-25924.
- Boolos, George; Richard Jeffrey (1989年, 1999年). Computability and Logic (3rd ed. ed.). Cambridge, England: Cambridge University Press. ISBN 0-521-20402-X.
- Brookshear, J. Glenn (1989年). Theory of Computation: Formal Languages, Automata, and Complexity. Redwood City, California: Benjamin/Cummings Publish Company, Inc.. ISBN 0-8053-0143-7.
- Davis, Martin; Ron Sigal, Elaine J. Weyuker (1994年). Second Edition: Computability, Complexity, and Languages and Logic: Fundamentals of Theoretical Computer Science (2nd ed. ed.). San Diego: Academic Press, Harcourt, Brace & Company.
- Hopcroft, John; Jeffrey Ullman (1979年). Introduction to Automata Theory, Languages and Computation (1st ed. ed.). Reading Mass: Addison-Wesley. ISBN 0-201-02988-X.
- Hopcroft, John E.; Rajeev Motwani, Jeffrey D. Ullman (2001年). Introduction to Automata Theory, Languages, and Computation (2nd ed. ed.). Reading Mass: Addison-Wesley.
- Hopkin, David; Barbara Moss (1976年). Automata. New York: Elsevier North-Holland. ISBN 0-444-00249-9.
- Kozen, Dexter C. (1997). Automata and Computability (1st ed. ed.). New York: Springer-Verlag. ISBN 0-387-94907-0.
- Lewis, Harry R.; Christos H. Papadimitriou (1998年). Elements of the Theory of Computation (2nd ed.). Upper Saddle River, New Jersey: Prentice-Hall. ISBN 0-13-262478-8.
- Linz, Peter (2006). Formal Languages and Automata (4th ed.). Sudbury, MA: Jones and Bartlett. ISBN-13: 978-0-7637-3798-6.
- Minsky, Marvin (1967年). Computation: Finite and Infinite Machines (1st ed.). New Jersey: Prentice-Hall.
- Christos Papadimitriou (1993年). Computational Complexity (1st edition ed.). Addison Wesley. ISBN 0-201-53082-1.
- Pippenger, Nicholas (1997年). Theories of Computability (1st ed.). Cambridge, England: Cambridge University Press. 0-521-55380-6 (hc).
- Rodger, Susan; Thomas Finley (2006年). JFLAP: An Interactive Formal Languages and Automata Package (1st ed.). Sudbury, MA: Jones and Bartlett. ISBN-10: 0763738344.
- Sipser, Michael (2006年), Introduction to the Theory of Computation, Second Edition (2nd ed.), Boston Mass: Thomson Course Technology, ISBN-10: 0-534-95097-3
- Wood, Derick (1987年). Theory of Computation (1st ed.). New York: Harper & Row, Publishers, Inc.. ISBN-10: 0-06-047208-1.
- Yuri Gurevich (2000), Sequential Abstract State Machines Capture Sequential Algorithms, ACM Transactions on Computational Logic, vl. 1, no. 1 (July 2000), pages 77-111. http://research.microsoft.com/~gurevich/Opera/141.pdf
[編集] 機械学習
- Mitchell, Tom M. (1997年). Machine Learning (1st ed.). New York: WCB/McGraw-Hill Corporation. ISBN 0-07-042807-7.
[編集] 回路合成などハードウェアへの応用
- Booth, Taylor L. (1967年). Sequential Machines and Automata Theory (1st ed.). New York: John Wiley and Sons, Inc.. Library of Congress Card Catalog Number 67-25924.
- Booth, Taylor L. (1971年). Digital Networks and Computer Systems (1st ed.). New York: John Wiley and Sons, Inc.. ISBN 0-471-08840-4.
- McCluskey, E. J. (1965年). Introduction to the Theory of Switching Circuits (1st ed.). New York: McGraw-Hill Book Company,Inc.. Library of Congress Card Catalog Number 65-17394.
- Hill, Fredrick J.; Gerald R. Peterson (1965年). Introduction to the Theory of Switching Circuits (1st ed.). New York: McGraw-Hill Book Company. Library of Congress Card Catalog Number 65-17394.
[編集] 有限マルコフ連鎖プロセス
- Booth, Taylor L. (1967年). Sequential Machines and Automata Theory (1st ed.). New York: John Wiley and Sons, Inc.. Library of Congress Card Catalog Number 67-25924.
- Kemeny, John G.; Hazleton Mirkil, J. Laurie Snell, Gerald L. Thompson (1959年). Finite Mathematical Structures (1st ed.). Englewood Cliffs, N.J.: Prentice-Hall, Inc.. Library of Congress Card Catalog Number 59-12841.
[編集] 関連項目
- 正規言語 - 有限オートマトンによって表現できる言語のクラス
- 状態遷移系
- オートマトン
- ペトリネット
- シミュレーション
- マービン・ミンスキー
- 状態遷移図
- 隠れマルコフモデル
- 制御システム
- OpenGL
- 人工知能
[編集] 外部リンク
- Description from the Free On-Line Dictionary of Computing
- NIST Dictionary of Algorithms and Data Structures entry
- Hierarchical State Machines
- Round-trip Engineering State Machines
- SourceForge 状態機械に関するオープンソースのプロジェクト一覧
- A registry of finite-state technology at the IT Center for Science, Finland.
となる)