どの学術論文を読んだかはわかりませんが、有限状態マシンの実装方法を理解することはそれほど難しくありません。いくつかの興味深い数学がありますが、アイデアを理解するのは実際には非常に簡単です。FSM を理解する最も簡単な方法は、入力と出力を使用することです (実際、これは正式な定義のほとんどを構成するため、ここでは説明しません)。「状態」とは、本質的には、発生した、および特定の時点から発生する可能性のある一連の入力と出力を記述するだけです。
有限ステート マシンは、図で理解するのが最も簡単です。例えば:
代替テキスト http://img6.imageshack.us/img6/7571/mathfinitestatemachinedco3.gif
これが言っているのは、ある状態 q0 (横に開始記号がある状態) から開始すると、他の状態に移動できるということです。各状態は円です。各矢印は、入力または出力を表します (見方によって異なります)。有限状態マシンを考える別の方法は、「有効な」または「許容可能な」入力の観点からです。特定の有限状態マシンでは不可能な特定の出力文字列があります。これにより、式を「一致」させることができます。
ここで、q0 から開始するとします。ここで、0 を入力すると、状態 q1 に移動します。ただし、1 を入力すると、状態 q2 に移動します。これは、入出力矢印の上にある記号で確認できます。
q0 から開始して、この入力を取得するとします。
0、1、0、1、1、1
これは、状態を通過したことを意味します (q0 の入力はなく、そこから開始します)。
q0 -> q1 -> q0 -> q1 -> q0 -> q2 -> q3 -> q3
意味がわからない場合は、指で絵をなぞってください。q3 は、入力 0 と 1 の両方で自分自身に戻ることに注意してください。
これをすべて別の言い方で言うと、「状態 q0 にいて、0 が表示された場合は q1 に進みますが、1 が表示された場合は q2 に進みます。」各状態に対してこれらの条件を作成すると、状態マシンの定義がほぼ完了します。あなたがしなければならないのは、状態変数と、入力を送り込む方法を用意することだけです。それが基本的にそこにあるものです。
では、ジョエルの発言に関して、これがなぜ重要なのですか? さて、「すべてを支配する 1 つの真の正規表現」を構築することは非常に困難であり、変更を維持することや、他の人が戻ってきて理解することさえも難しい場合があります。また、場合によってはより効率的です。
もちろん、ステート マシンには他にも多くの用途があります。これが少しでも役立つことを願っています。あえて理論には触れませんでしたが、FSM に関する興味深い証拠がいくつかあります。