有限オートマトンを研究した後に達成することになっている啓発とは何ですか?


247

私は計算理論を楽しみのために改訂してきましたが、この質問はしばらくの間私に悩まされてきました(学部生でオートマタ理論を学んだとき、それを考えたことはありませんでした)。それでは、「なぜ」決定論的および非決定論的有限オートマトン(DFA / NFA)を正確に研究するのでしょうか?だから、独り言の後、私が思いついたいくつかの答えがありますが、それでも「aha」の瞬間への全体的な貢献を見ることはできません:

  1. 彼らが何であるかを研究するために、すなわち制限
    • どうして?
  2. それらは理論計算の基本モデルであり、他のより有能な計算モデルの基礎を築くためです。
    • それらを「基本」にするものは何ですか?ストレージと状態の遷移が1ビットしかないのですか?
  3. さて、それで何?このすべてが計算可能性の質問に答えるためにどのように貢献しますか?チューリングマシンはこれを非常によく理解しているようで、PDA、DFA / NFA /正規表現などの計算の「より少ない」モデルがあります。しかし、FAがわからない場合は、FAに何が欠けているのでしょうか。

だから私はある程度「わかった」が、この質問に自分で答えることはできないのだろうか?「なぜD / N-FAを勉強するのか」をどのように説明しますか?彼らが答えようとしている質問は何ですか?それはどのように役立ち、なぜオートマタ理論で最初に教えられるのですか?

PS:さまざまな辞書式アプリケーションと、そのように実装できるパターンマッチャーを知っています。ただし、実際に何に使用できるかを知りたくはありませんが、計算理論の研究の頂点にある使用/発明/設計の理由は何でしたか。歴史的に言えば、これで何が始まったのか、そして「aha」の理解は何につながるのでしょうか?オートマタ理論の勉強を始めたばかりのCS学生に彼らの重要性を説明する場合、どうしましたか?


10
だから、これはTCSの研究レベルの質問ですか?
ヘンドリック

13
トピックに関する全体像の観点を求めるほど、研究上の問題ではありません。ここにはそのような質問がいくつかあります。コメントで議論を始めるのではなく、そのような質問の適切性についてさらに議論したい場合は、メタに関する質問を投稿することをお勧めします。
スレシュVenkatさん

6
PhD:あなたの質問は非常に良い答えを与えてくれたので、ありがとうございます。あなたはあなたの声明に正直であり、あなたやあなたの質問を失格にするつもりはありませんでした。実際、それは私のコメントが示唆するものとは別の方法です。よくある質問からこの引用を使用して簡単に却下された他の質問を見ました。あなたは正しいSureshです。ここは議論を始める場所ではありません。ごめんなさい。
ヘンドリック

1
@HendrikJan-心配しないで!テキストはトーンを隠します。私はそのようなことを決して意味しませんでした。これが私の側の研究質問であるかどうか私に尋ねていると思いました。
PhD

16
私は公開フォーラムでめったに出会わない礼儀正しさの博士号とヘンドリックを称賛します。
ルーカス

回答:


342

私は個人的にいくつかのアハを楽しんできました基本的なオートマトン理論の勉強からの瞬間。NFAとDFAは、全体として理論的なコンピューターサイエンスの縮図を形成します。

  1. 非決定論は効率につながりますか?言語の最小決定オートマトンが最小非決定オートマトンより指数関数的に大きい標準的な例があります。チューリングマシンのこの違いを理解することは、(理論上の)コンピューターサイエンスの中核です。NFAとDFAは、決定論と非決定論の厳密なギャップを明示的に確認できる最も単純な例を提供します。
  2. 計算可能性!=複雑さ。NFAとDFAはどちらも通常の言語を表し、計算するものは同等です。計算方法が異なります。
  3. 機械は言語を洗練します。これは、計算するものと計算する方法についての別の見解です。計算可能な言語(および関数)は、オートマトンの等価クラスを定義していると考えることができます。これはTCSの根本的な視点の変更であり、計算の方法だけでなく、アルゴリズムの設計時に複雑なクラスを研究する際のさまざまな方法のスペースを理解する際に正しい「方法」を選択することに焦点を当てています。
  4. カノニカル表現の価値。DFAは、正規表現を許可するデータ構造の典型的な例です。すべての標準言語には、固有の最小限のDFAがあります。これは、最小限のDFAが与えられると、言語の組み込み、補完、単語の受け入れの確認などの重要な操作が簡単になることを意味します。正規表現を考案して活用することは、アルゴリズムを開発するときに役立つトリックです。
  5. カノニカル表現の欠如。正規表現やNFAの正規の正規表現はありません。したがって、上記のポイントにもかかわらず、正規表現は常に存在するとは限りません。この点は、コンピューターサイエンスのさまざまな分野で見られます。(たとえば、命題論理式にも正規表現はありませんが、ROBDDにはあります)。
  6. 正規表現のコスト。NFAとDFAの違いは、アルゴリズムによるノーフリーランチ定理としても理解できます。NFA間の言語の包含を確認するか、NFAを補完する場合は、NFAを決定して最小化し、そこから続行できます。ただし、この「削減」操作にはコストがかかります。コンピューターサイエンスの他のいくつかの分野で、正準化の例が犠牲になります。
  7. 無限!=決定不能。一般的な誤解は、無限の性質の問題は本質的に決定不能であるということです。通常の言語には無限に多くの文字列が含まれていますが、いくつかの決定可能なプロパティがあります。通常の言語の理論は、無限大だけが決定不能の原因ではないことを示しています。
  8. あなたのオートマトンの手のひらで無限大を保持します。有限オートマトンは、純粋に無限集合を表現するためのデータ構造として見ることができます。ROBDDは、ブール関数を表すためのデータ構造であり、有限集合を表すと理解できます。有限オートマトンは、ROBDDの自然で無限の拡張です。
  9. 謙虚なプロセッサ。最新のプロセッサには多くのものがありますが、有限オートマトンとして理解できます。この実現により、コンピュータアーキテクチャとプロセッサの設計が私にとってそれほど怖くなくなりました。また、実際には、状態を慎重に構成および操作すると、有限オートマトンで非常に遠くまで到達できることも示しています。
  10. 代数的視点。通常の言語は構文モノイドを形成し、その観点から研究することができます。より一般的には、後の研究で、ある計算問題に対応する正しい代数構造は何かを尋ねることもできます。
  11. コンビナトリアルパースペクティブ。有限オートマトンはラベル付きグラフです。単語が受け入れられるかどうかを確認すると、ラベル付きグラフでパスを見つけることになります。オートマトンアルゴリズムは、グラフ変換に相当します。通常言語のさまざまなサブファミリーのオートマトンの構造を理解することは、活発な研究分野です。
  12. 代数-言語-組み合わせ論は三角関係が大好きです。Myhill-Nerodeの定理により、言語から始めてオートマトンまたは構文モノイドを生成できます。数学的には、非常に異なるタイプの数学オブジェクト間の変換を取得します。このような翻訳を念頭に置いて、コンピューターサイエンスの他の分野でそれらを探し、アプリケーションに応じてそれらの間を移動すると便利です。
  13. 数学は大きな絵の言語です。正規言語は、NFA(グラフ)、正規表現(形式文法)、読み取り専用チューリングマシン(機械)、構文モノイド(代数)、Kleene代数(代数)、モナド2次論理などによって特徴付けられます。現象は、重要で永続的な概念には多くの異なる数学的特性があり、それぞれがアイデアの理解に異なるフレーバーをもたらすということです。
  14. 働く数学者のための補題。Pumping Lemmaは、さまざまな問題を解決するために活用できる理論ツールの優れた例です。Lemmasを使用することは、既存の結果に基づいて作成することをお勧めします。
  15. 必要!=十分。Myhill-Nerodeの定理は、言語が規則的であるために必要かつ十分な条件を提供します。Pumping Lemmaは必要な条件を提供します。2つを比較し、異なる状況で使用することで、数学の実践で必要な条件と十分な条件の違いを理解するのに役立ちました。また、再利用可能な必要十分条件が贅沢であることも学びました。
  16. プログラミング言語の視点。正規表現は、プログラミング言語のシンプルで美しい例です。連結では、連続構成の類似物があり、Kleene starでは、反復の類似物があります。正規表現の構文とセマンティクスを定義する際に、帰納的定義と構成セマンティクスを見ることにより、プログラミング言語理論の方向への一歩を踏み出します。
  17. コンパイラの視点。正規表現から有限オートマトンへの変換も、単純で理論的なコンパイラです。正規表現の読み取り、オートマトンの生成、オートマトンの最小化/決定の違いにより、解析、中間コード生成、コンパイラ最適化の違いを確認できます。
  18. 反復の力。ループのある有限オートマトンとループのない有限オートマトンで何ができるかを見ると、反復の力を理解できます。これは、回路とマシンの違い、または古典的なロジックと固定小数点ロジックの違いを理解するのに役立ちます。
  19. 代数とCoalgebra。通常の言語は、代数構造である構文モノイドを形成します。有限オートマトンは、カテゴリー理論の言語で「合代数」と呼ばれるものを形成します。決定性オートマトンの場合、代数表現と代数表現の間を簡単に移動できますが、NFAの場合、これはそれほど簡単ではありません。
  20. 算術パースペクティブ。計算と数論の間には深いつながりがあります。これを数論の力や計算の普遍性についての声明として理解することを選択できます。通常、有限オートマトンは偶数個のシンボルを認識でき、括弧と一致するのに十分な数をカウントできないことを知っています。しかし、どのくらいの算術演算が可能ですか?有限オートマトンはプレスブルガー算術式を決定できます。私がPresburger算術について知っている最も単純な決定手順は、式をオートマトンに還元します。これは、ヒルベルトの10番目の問題に進むことができる一見であり、ディオファンタス方程式とチューリングマシン間の接続の発見につながった解決策です。
  21. 論理的な視点。計算は、純粋に論理的な観点から理解できます。有限オートマトンは、有限語上の弱い単項二次論理によって特徴付けられます。これは、計算デバイスの論理的特性化の私のお気に入りの、重要な例です。記述的複雑性理論は、多くの複雑性クラスも純粋に論理的な特性を持つことを示しています。
  22. 有限オートマトンは、想像もしなかった場所に隠れています。 (コーディング理論との関係に関するMartin Bergerのコメントへのヒント)2011年のノーベル化学賞は、準結晶の発見に与えられました。準結晶の背後にある数学は、非周期的なタイリングに関連しています。飛行機の特定の非周期的なタイル張りは、カートホイールタイル張りと呼ばれ、kitの形と蝶ネクタイの形で構成されます。これらの形状を0と1でエンコードし、パターンのシーケンスをコーディングするこれらのシーケンスのプロパティを調べることができます。実際、0から01および1から0をマッピングし、このマップを数字0に繰り返し適用すると、0、01、010、01001などが得られます。これらの文字列の長さはフィボナッチ数列に従うことに注意してください。この方法で生成された単語は、フィボナッチ語と呼ばれます。ペンローズのタイルで観察される特定の形状シーケンスは、フィボナッチ語としてコーディングできます。このような単語は自動理論の観点から研究されており、有限オートマトンによって受け入れられる単語のファミリーを推測し、ホップクロフトの最小化アルゴリズムなどの標準アルゴリズムの最悪の場合の動作の例を提供します。めまいがあると教えてください。

(そして続きます)*私は頭の後ろにオートマトンを置いて、時々それらを思い出して、新しい概念を理解したり、高レベルの数学的アイデアについての直観を得たりするのに役立ちます。上記のすべてが、コースの最初の数回の講義で、または最初のコースでも伝達できるとは思いません。これらは、オートマトン理論コースの最初の講義で行われた最初の投資に基づいた長期的な報酬です。

あなたの称号に取り組むために:私は常に悟りを求めているわけではありませんが、そうするとき、私は有限オートマトンを好みます。のどが渇いて、私の友人。


27
美しいリスト。このオートマトンは、Schuetzenbergerによって開拓されたコーディング理論に関する興味深い視点を提供します。さらに、現代の並行性理論とプロセス理論は、オートマトンを並行して構成し、それらの動作を同期させることができるオートマトン理論の一般化です。
マーティンバーガー

6
ワオ。(最後の文は+ 0.5。:-)
LarsH

6
これを+1するためだけにTCS.SEに参加しました。
タイナム

5
このリストのほとんどすべてを知っているにもかかわらず、私はそれを読んだことに対して何とか啓発されていると感じています。(また、(そして)。*私は笑いました。)
CAマッキャン

2
正直なところ、私はこのようなことのほとんど(および私が聞いたことがない定理のいくつか)について考えたことはなかったので、計算理論のコースを取りました。これらの啓示を指摘するには、特に優れた教師またはカリキュラムが必要ですか?
ケンブルーム14年

33

N / DFAを研究する多くの正当な理論的理由があります。すぐに思い浮かぶのは次の2つです。

  1. チューリングマシン(と思う)は、計算可能なすべてをキャプチャします。しかし、私たちは尋ねることができます:チューリングマシンのどの部分が「必須」ですか?チューリングマシンをさまざまな方法で制限するとどうなりますか?DFAは非常に厳しい自然な制限です(メモリを奪います)。PDAはそれほど厳しくない制限などです。理論的には、メモリが何を提供し、それを使用しないと何が起こるかを見るのは興味深いです。それは私にとって非常に自然で基本的な質問のようです。

  2. チューリングマシンには無限のテープが必要です。私たちの宇宙は有限であるため、ある意味ですべてのコンピューティングデバイスはDFAです。勉強する上で重要な、また自然なトピックのようです。

DFAを研究する理由を尋ねるのは、本当に興味深いのが不完全性定理であるときに、ゲーデルの完全性定理を学ぶべき理由を尋ねることに似ています。

それらがオートマトン理論の最初のトピックである理由は、それほど複雑でないモードからより複雑なモードまで構築するのが自然だからです。


2
#1は理にかなっており、その理由がわかると思います。しかし、FAから「今後」の理由をどのように説明しますか?ToCについて何かを知っている人は、振り返って振り返り、それについて熟考することができます。オートマトン理論を学び始め、FAのみを知っている学生に「なぜ」を説明するのが最善ですか?基本的なものなので、1ビットのマシンから始めているとだけ言っていますか?「なぜ」と答えるのが最善ですか?ToCの全初心者向けにこの質問に回答する際に、いくらかの光をいただければ幸いです。
PhD

2
「フォワード」引数は、ステートマシンがおそらく最も基本的なコンピューティングデバイスであるという事実(Sarielが述べたように)から来ています。あなたはある状態にあります。何かが起こった後、新しい状態に移行します。マルコフチェーン(機械学習で非常に重要)は、単なる確率的なFSMであることに注意してください。
スレシュヴェンカト

31

残りの答えにもう1つの視点を追加するには、チューリングマシンとは対照的に、有限オートマトンで実際に何かを行うことができるからです。

チューリングマシンの興味深い特性はほとんど決定できません。それどころか、有限オートマトンでは、ほぼすべて決定可能です。言語の平等、包含、空虚、普遍性はすべて決定可能です。その有限オートマトンは、考えられるほぼすべての操作の下で閉じられ、これらの操作は計算可能であるため、有限オートマトンでやりたいことはほとんど何でもできます。

これは、有限オートマトンを使用して何かをキャプチャできる場合、それを分析するための多くのツールを自動的に取得することを意味します。たとえば、ソフトウェアテストでは、システムとその仕様を有限オートマトンとしてモデル化できます。その後、システムが仕様を正しく実装しているかどうかを自動的にテストできます。

そのため、チューリングマシンと有限オートマトンは、人々に興味深く、どこにでもあるコントラストを教えます。有限オートマトンは多くを記述することはできませんが、少なくともそれらについてはできます。


2
「...チューリングマシンとは対照的に、有限オートマトンで実際に作業を行うことができます。」PTを理解し、しかし、皮肉やdoesntが聞こえる引用は、文脈から取り出した...あまり意味が
vzn

27

状態。(特定の問題に対して)世界を有限状態空間としてモデル化できること、そしてこの設定で計算について考えることができることを学ぶ必要があります。これは簡単な洞察ですが、プログラミングを行う場合に非常に役立ちます。何度も何度も状態に遭遇し、FAはそれらについて考える方法を提供します。これは完全なクラスを教えるのに十分な言い訳だと思います。もちろん、状態は確定的または非確定的です。したがって、DFAとNFAが、それらの間で変換できます。

2番目に学ぶことは、ホールティング定理です。これは、ゲーデルの不完全性定理に関連しています。(すべてを計算できるマシンを構築することはできません。また、証明も反証もできない数学的な主張があります。したがって、公理と見なされる必要があります。つまり、私たちは有限の説明や現実のない世界に住んでいますオラクル-私たちのためにいや!)

今、私は数学の学部をやったので、あなたはあなたが何を学んでいるのかわからないものを学ぶという考えに慣れます(グループ理論、測定理論、集合論、ヒルベルト空間などなど[すべて良いもの) 、ところで])。学習方法を学ぶことについて言わなければならないことがあります-奇妙な数学を次に学ばなければならないとき(実際の世界で何かをするためにそれを使用する必要があるため)、あなたは大股で非常に奇妙に見えます。具体的には、3番目に学ぶことは数学的な成熟度です-物事について慎重に議論し、証明が正しいかどうかを知り、証明を書き留めることができます。すでに持っている場合、このコースは簡単です。なぜあなたがそれを学んでいるのか。

これらを除いて、コースは他のすべてと同様にあなたの時間の完全な無駄です。具体的には、このことを知らなくても幸せな生活を送ることができます。しかし、これは文字通りすべての知識に当てはまります。多かれ少なかれ。私にとって、大学でのコースは、それを学んだ後に世界を違った見方をするなら、その時間の価値があります。これは間違いなく、私の世界に対する考え方を変えたコースの1つです。他に何ができますか?


21

実際にそれらが最初に研究された理由ではありませんが、有限オートマトンと彼らが認識する通常の言語は十分に扱いやすく、より複雑な数学的理論の構成要素として使用されています。この文脈では、特に自動グループ(通常の言語の文字列で要素を表すことができ、グループジェネレーターによる要素の積を有限状態トランスデューサーで計算できるグループ)とソフサブシフト(シフトスペースのサブシフト禁止された言葉は通常の言語を形成します)。したがって、コンピューターサイエンスではなく純粋な数学に興味がある場合でも、それらを研究する理由があります。

有限オートマトンは、他の種類のオブジェクトのアルゴリズムの設計にも使用されています。たとえば、1次元セルオートマトンが可逆的かどうかをテストするためのCulikのアルゴリズムには、特定のNFAのプロパティの構築、変更、およびテストが含まれます。そして、1986年のNatarajanによるFOCSの論文は、機械組立ラインの設計における特定の問題を、有限オートマトンに関する計算に還元することにより解決する方法を示しました。


18

(少なくとも)2つの異なる質問をしている:(a)最近、理論のどの部分が有限オートマトンに基づいているか?(b)有限オートマトンが最初に開発されたのはなぜですか?後者に対処する最良の方法は、次のような古い論文を調べることだと思います。

最初の2つの段落は次のとおりです。

チューリングマシンは、デジタルコンピューターの抽象的なプロトタイプであると広く考えられています。しかし、現場の労働者は、チューリングマシンの概念が実際のコンピューターの正確なモデルとして機能するには一般的すぎるとますます感じています。単純な計算であっても、チューリングマシンが計算に必要とするテープの量にアプリオリな上限を与えることは不可能であることはよく知られています。チューリングの概念を非現実的にするのはまさにこの機能です。

過去数年間で、有限オートマトンのアイデアが文献に登場しました。これらは、メモリと計算に使用できる内部状態の数が限られているマシンです。有限性の制限は、物理マシンのアイデアにより近い近似を与えるように見えます。もちろん、そのようなマシンはチューリングマシンほどの能力はありませんが、実際のアプリケーションではこれらの関数がほとんど出ないため、任意の一般的な再帰関数を計算できるという利点は疑問です。

要するに、それらは有限のリソースを持つ実際のコンピューターのモデルとして開発されました。


16

もう1つの理由は、それらが比較的実用理論モデルであることです。無限テープの不可能性を除けば、チューリングマシンは、コンピューターをプログラミングするのに似たようなものにやや不自然に合います(これは、最初から良いアナロジーではないことに注意してください!)。ただし、PDAとDFAは、PDA / DFA設計を簡単に実際のプログラムに簡単に変換できるという意味で、実際のプログラムのモデルになりやすいです。たとえば、コンパイラの設計では、これらを広範囲に使用しています。したがって、理論と実践の間のこの種の接続ポイントでは、すべてがどのように結び付いているのか、何ができて何ができないのかを把握します。


10

ここでは、「リビング2進加算器」のゲームをチェックアウト:http://courstltc.blogspot.com/2012/12/living-binary-adder-game.html 私は、DFAについての早期の章で私の学生にこのゲームを提示するために使用/ NFA。オートマトン理論の2つの重要なことを示しています。

  1. 精神的なプロセスを単純な機械的なプロセスに変換する方法
  2. 抽象化が本当に意味するもの。上記のC状態とZ状態のように、コンピューターのトランジスター、油圧機構、または2人の人間のプレイヤーの2つの状態になります。

これは、時々生徒に「あは」の瞬間をもたらします。


9

DFAの概念は、多くのタイプの問題に対する効率的なソリューションを設計するのに非常に役立ちます。1つの例はネットワーキングです。すべてのプロトコルは、ステートマシンとして実装できます。この方法でソリューションを実装すると、コードが単純になり、欠陥率が低くなります。また、コードの変更が簡単で影響が少なく、欠陥率も低くなります。

ネットワークプロトコルをステートマシンと見なすのは難しいと感じる人もいますが、ジャンプをすることができる人は、努力に対する見返りという点で非常にやりがいがあると感じています。


非常に摂取しているように聞こえますが、もう少し説明できますか?あるステートマシンとしてネットワークプロトコルを想像するのは難しいです。ありがとうございました。
hkoosha

3

実際、私の学生は、学期の大部分を有限オートマトンに費やし、最終的にチューリング機械に到着した後に、これを正確に尋ねることがあります。より強力な形式が利用できるのに、なぜより弱い形式に多くの時間を費やすのですか そこで、表現力と分析の複雑さの本質的なトレードオフについて説明します。通常、より豊富なモデルは分析がより困難です。DFAとTMの二分法は極端です。メンバーシップの問題は一方では些細で、もう一方では計算不可能です。それほど極端ではない例は、DFA対PDAです。後者のメンバーシップの問題は効率的に解決できることが判明しましたが、解決策は決して些細なものではありません。数学と科学の多くの分野でこの発生が見られます。可能な限り完全な理解を得るために単純なモデルを研究します。これは通常、より複雑なモデルへの洞察にもつながります。


-4

FMがチューリングマシンよりも「少ない」と言う答えがいくつかあります。

私が取った卒業後のクラスの主な焦点は、区別ではなく、同等性にありました。調査したすべてのFSMモデルについて、チューリングマシンと同等であることを証明する必要がありました。これは、FSMにチューリングマシンを実装することによって行われます。IIRCでは、TMを実装していない他のコンピューティングモデルもいくつか調査しましたが、それらが何であったかは忘れています。ポイントは、TMを実装できる場合、実行中の問題に対して十分な大きさのテープアナログがあれば、モデル上でTMプログラムを実行できることです。

質問への答えの推力は次のとおりでした。TMは基本的な計算可能モデルですが、有用なマシンの構築に関してはあまり実用的ではありません。したがって、FSMモデル。

これは、ほぼ同時期(1984年)にFORTH言語を発見したときに、私に内臓されました。実行エンジンは、デュアルスタックPDAの純粋な実現に基づいて構築されています。さらに深くなると、この同じエンジンが式コンパイラの下で好きになる

私にとって、FSMの本当の影響は、18歳のときにTrakhtenbrotとKorzynski(?)の本「有限オートマトンの理論」を発見したことでした。


1
ただし、非決定性有限オートマトンとチューリングマシンの等価性を証明しなかったと思います。それはOPが尋ねたこの特定のオブジェクトであり、私たちの残りは「より少ない」と呼んでいます。
ビジェイD

2
また、FAはFSMと同じではありません。
スレシュヴェンカト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.