オートマトンは、デジタルコンピューターの抽象的なモデルです。デジタルコンピューターは完全に決定論的です。それらの状態はいつでも入力と初期状態から一意に予測可能です。
実際のシステムをモデル化しようとしているとき、なぜオートマタ理論に非決定性を含めるのですか?
オートマトンは、デジタルコンピューターの抽象的なモデルです。デジタルコンピューターは完全に決定論的です。それらの状態はいつでも入力と初期状態から一意に予測可能です。
実際のシステムをモデル化しようとしているとき、なぜオートマタ理論に非決定性を含めるのですか?
回答:
はい、あなたは正しいコンピューターであることが決定論的な自動化です。非決定論的モデルは理論的な目的にとってより有用であり、決定論的解法は定義(または問題文など)に対してそれほど明白ではないため、解法を見つけるのが困難です。次に、1つのアプローチは、最初に設計が比較的簡単な非決定性モデルを設計し、それを決定性モデルに変換することです。以下に、私が例で意味することを実証しようとしました。正規表現を検討してください:
(01)*01(0 + 1)*
ここで、上記のREによって生成された言語のDFAを描画するように求められたとします。
FAの設計に関する私の知識により、(1)*
正規表現の存在がFAに対応するループを必要とすることを示した とき、(2)のような操作を連結a.b
することを知っています。(q0)─a→(q1)─b→(q2)
だから、私の最初の試みで、私は次のようなNFAを描くでしょう:
これは決定論的な解決策ではないが、与えられた正規表現を使用して簡単に設計できる非常に単純なFAに見えます。上記の正規表現とNFAの類似性を示す私の類推は以下のとおりです。
(01)*
01
(後(01)*
)与える(q0)─0→(q1)─1→(q2)
(0 + 1)*
ラベル0、1の 状態q 2で自己ループを生成します私の類推によれば、私が上で描いたFAは、与えられたREから描くのは比較的簡単だと思います。幸いなことに、有限オートマトンのクラスでは、すべての非決定的モデルを同等の決定的モデルに変換できます。NFAをDFAに変換するアルゴリズム方式があります。したがって、上記のNFAをDFAに簡単に変換できます。
他の部分は、残念ながら、これは例えば自動化ダウン確定的プッシュのためのクラスは、「チェック確定的なプッシュダウン自動化のクラスのサブセットであり、確定的なものに非決定論的モデルを変換することは常に可能ではありませんベン図を」とあなたは常に変換することはできませんNPDAからPDAへ。
通常、非決定論的ソリューションを決定論的ソリューションに変換できない場合、非決定論的ソリューションを使用して、完全なドメインではなくサブドメイン(または部分ドメイン)で決定論的ソリューションを定義します。または、他の方法(貪欲なアプローチなど)でソリューションを定義します。これは、当然のことながら、最適なソリューションを提供できない場合があります。
非決定論は、複雑な問題/解決策を正確かつ効果的に記述するための効果的なメカニズムである場合があります。たとえば、非決定論的なマシンは、検索とバックトラックアルゴリズムのモデルとして機能します)。反対に決定論的なモデルは、効率的で最小化された冗長性の低いソリューションをよりよく表します。
ここで、ウィキペディアの非決定的アルゴリズムの使用からも引用したいと思います。
アルゴリズム設計では、アルゴリズムによって解決された問題が本質的に複数の結果を許可する場合(または結果が発見される複数のパスを持つ単一の結果があり、それぞれが同等に望ましい場合)、非決定性アルゴリズムがよく使用されます。重要なのは、実行中にアルゴリズムがどの選択を行うかに関係なく、非決定的アルゴリズムが生成する結果はすべて有効です。
コンピューティング理論で最も有名な未解決の問題であるP対NPを含む、多数の問題を非決定的アルゴリズムによって概念化できます。
以下のよう@keshlamまた彼に言及したコメント:「非決定性」は、実際にあるために使用されるいくつかのプロセスの結果ではいずれの予測不可能性を参照してください。たとえば、同時プログラムは非決定的な動作を示します。同じ入力で同じプログラムを2回実行すると、異なる結果が生成される可能性があります(同時実行制御メカニズムが適用されない場合)。詳細については、「非決定性の有用性」を参照してください。
また、次のリンクを読むことをお勧めします
。1. 非決定性とランダム性の違いは何ですか?
2. 9.2.2非決定的モデルと確率的モデル:(a)。非決定論的:私は自然が何をするかわからない。(b)。確率的:自然を観察し、統計を収集しています。
3. 非決定的プログラミング
それはもっと別の方法です:数学的モデルとして、オートマトンが最初に発生しました。また、非決定論は非常に自然であり、多くの場合、自分の前にいくつかのパスが開いています。すべてのパスを何らかの順序で最後までたどり、おそらく無限の分岐で行き詰まる必要があることを指定する面倒な方法の代わりに、...ただ非決定論を使用します。
また、非決定論的なプログラミング言語は主流ではありませんが、おそらくダイクストラのGCLから始まる、輝かしい歴史があります。マシンがますます多くのコア(独立したプロセッサ)を使用するにつれて、何らかの形式の非決定論がすべてのプログラミングに浸透しています。
NFAは実際に使用される可能性があります。stackexchangeでこの回答を確認してください。理由は、いわば、パワーセットの構築をオンザフライでシミュレートできるからです。決定論的コンピューターでNFAをシミュレートするには、NFAが発生する可能性のある状態を追跡するだけです。通常、この数は小さいため、シミュレーションは高速になります。これは、実際のpowerset構造を実行するよりもはるかに実用的です。実際にはほとんどのセットに到達することはほとんどありませんが、結果のオートマトンは非常に大きくなる可能性があります。
非決定性は計算の複雑さにとっても重要であり、クラスNPの定義に使用されます。(クラスNPには、他の同等の定義もあります。たとえば、目撃者を使用します。)
(これは他の回答の一部の言い換えですが、とにかく投稿します:)
あなたは書く:オートマトンは、デジタルコンピュータの抽象モデルです。
同意しません!オートマトンは、コンピューターが実行する方法だけでなく、人間が計算を指定する方法をモデル化します。非決定性はまさに違いです。多くの場合、仕様は非決定的です。
たとえば、マージソートを使用します。マージソートは、ソートするアイテムをほぼ同じサイズの2つの半分に分割し、マージソートを使用して各半分をソートし、ソートした結果をマージすることでソートします。これはマージソートのアイデアを完全に指定しますが、決定論的ではありません:半分をソートする順序を指定しません(私たちが気にするすべてのために、それは同時に行われるかもしれません)、または正確な方法を指定しません分割を決定します。これらの詳細は、シングルスレッドコンピュータープログラムで実装できるマージソートの決定的な順次バージョンに到達するために入力する必要がありますが、マージソートを行う特定の方法の一部であり、マージソート自体のアイデア。
同じことは、一般的なアルゴリズムにも当てはまります-たとえば、料理のレシピ。アルゴリズムを決定論的であると定義する人もいます。その場合、これはより一般的で、私の考えでは「アルゴリズム」のより自然な概念には別の名前が必要です。
非決定的仕様を扱うという考え方は、プログラムが満たすべき前提条件と事後条件のみを与える仕様から始まり、それらから決定論的で命令的なプログラムを体系的に開発する、ダイクストラのプログラミング方法によって形式化されました。ダイクストラはおそらく次のように言ったでしょう:ソートは問題であり、私たちが確立しようとしている事前条件と事後条件の関係です。マージソート問題の仕様と決定論的解決策の中間のどこかに、それを行うためのアプローチです。特定の決定論的マージソートアルゴリズムは、具体的な決定論的ソリューションです。しかし、同じ一般的なアプローチを並行プログラムの開発に使用することができますが、最終的なプログラムは依然として非決定的です。このようなプログラムは、たとえば分散コンピューティング環境で実行できます。
あなたは正しい、非決定的なマシンを構築することはできません。したがって、目的はより良いマシンを構築するためのコンセプトを使用することではありません。むしろ、計算を理解しようとするとき、非決定論は有用な概念です。たとえば、計算可能性の観点から、非決定性は決定性よりも強力なものではないことがわかりました。つまり、非決定性マシンを使用して非決定性マシンをシミュレートできます。ただし、複雑さの観点から、非決定性により、たとえば、問題の効率的な解決策を見つけるのが難しいことと、解決策を検証するのが難しいこと(有名なP対NP問題)の関係を推論して理解しようとすることができます。等々。したがって、非決定論を研究する主な理由は理論的です。
チューリング機械の発明は1936年にチューリングによって発明されました。FSMは、同じようなモデルによって導入されたマカロックとピッツスタンフォードのCSから1943年における神経生物学的活動のモデルとして、2個の神経生理学履歴ページ:
有限オートマトンがコンピュータサイエンスの分野になったというエキサイティングな歴史は、その幅広いアプリケーションを示しています。有限状態マシンの概念を最初に検討した人々には、生物学者、心理学者、数学者、エンジニア、および最初のコンピューター科学者のチームが含まれていました。彼らは皆、共通の関心事を共有しました。それは、人間の思考プロセスをモデル化することです。脳内であろうとコンピューター内であろうと。2人の神経生理学者であるWarren McCullochとWalter Pittsは、1943年に初めて有限オートマトンの説明を発表しました。オートマトン、計算とサイバネティックスの理論。その後、2人のコンピューター科学者、GH MealyとEF Mooreが、1955-56年に発行された別の論文で、理論をはるかに強力なマシンに一般化しました。有限状態マシンであるMealyマシンとMooreマシンは、それらの作業を認識して名前が付けられています。
CSの歴史家ではありませんが、形式的/理論的概念の自然な一般化/抽象化において、McCulloch-Pittsモデルには非決定性が含まれておらず、Mealy - Mooreモデルには含まれていなかったと思われます。DFAとNFAの表現力は同じであるため、実際のシステムをモデル化する場合は、どちらかを選択できます。基本的な違いの1つは、NFAが同等のDFA よりもはるかに小さい場合があることです(たとえば、データ/情報圧縮の自然な要素があります)。NFAの研究には、並列性の自然な側面/アナログもあります。
まず、質問に答えたすべての人に感謝したいと思います。すべての答えは重要であり、いくつかの有用な情報を追加します。しかし、初心者にとっては難しい質問であり、それを十分に理解するには十分な時間が必要です。私はすべての答えといくつかの本から得たものを要約しようとします:
実際、私は非決定論的モデルのメカニズムに関する混乱を抱えていました。非決定的マシンは、実世界には存在しない非機械的なマシンであるため、私はいつも疑問に思っていました。私は常にオートマタと、本質的に完全に決定論的な今日のコンピューターとを比較しましたが、実際には、非決定論的なモデルを適切に理解していませんでした。今、私は非決定論的モデルを非常によく理解していると思います:非決定論的マシンは、文字列の受け入れにつながる実行パスを常に辿るマシンです(バックトラッキングなしで)しかし、これは実際の生活でどのように可能ですか?:現在のコンピューターが未来を予測するほどインテリジェントになることは絶対に不可能です。では、なぜ非決定論なのでしょうか?この質問の答えは非常に難しいです。質問について私が結論付けたのは、オートマトン理論は、コンピュータが存在しなかったときに存在していました(最初の理論が実用的)。それは純粋に理論的な主題であり、非決定性の概念は直感的に来ました。主題「オートマタ理論」の動機は、実用的なコンピュータを扱うことではありませんでした。しかし、実際にコンピューターがオートマタ理論を使用するようになると、実際のコンピューターを正確に定義することができます:現代のコンピューターの限界は何ですか?アルゴリズムの問題はコンピューターにとって非常に複雑であり、実際的ではありませんPとNPの2つの複雑さのクラスを区別できます。比較的高速に実行できるこれらの非実用的な問題の解決策は何ですか。これは非決定性の有用性です。それは純粋に理論的な主題であり、非決定性の概念は直感的に来ました。主題「オートマタ理論」の動機は、実用的なコンピュータを扱うことではありませんでした。しかし、実際にコンピューターがオートマタ理論を使用するようになると、実際のコンピューターを正確に定義することができます:現代のコンピューターの限界は何ですか?アルゴリズムの問題はコンピューターにとって非常に複雑であり、実際的ではありませんPとNPの2つの複雑さのクラスを区別できます。比較的高速に実行できるこれらの非実用的な問題の解決策は何ですか。これは非決定性の有用性です。それは純粋に理論的な主題であり、非決定性の概念は直感的に来ました。主題「オートマタ理論」の動機は、実用的なコンピュータを扱うことではありませんでした。しかし、実際にコンピューターがオートマタ理論を使用するようになると、実際のコンピューターを正確に定義することができます:現代のコンピューターの限界は何ですか?アルゴリズムの問題はコンピューターにとって非常に複雑であり、実際的ではありませんPとNPの2つの複雑度クラスを区別できます。比較的高速に実行できるこれらの非実用的な問題の解決策は何ですか。これは非決定性の有用性です。しかし、実際にコンピューターがオートマタ理論を使用するようになると、実際のコンピューターを正確に定義することができます:現代のコンピューターの限界は何ですか?アルゴリズムの問題はコンピューターにとって非常に複雑であり、実際的ではありませんPとNPの2つの複雑度クラスを区別できます。比較的高速に実行できるこれらの非実用的な問題の解決策は何ですか。これは非決定性の有用性です。しかし、実際にコンピューターがオートマタ理論を使用するようになると、実際のコンピューターを正確に定義することができます:現代のコンピューターの限界は何ですか?アルゴリズムの問題はコンピューターにとって非常に複雑であり、実際的ではありませんPとNPの2つの複雑度クラスを区別できます。比較的高速に実行できるこれらの非実用的な問題の解決策は何ですか。これは非決定性の有用性です。比較的速く実行できるこれらの非実用的な問題の解決策は何ですか。これは非決定性の有用性です。比較的速く実行できるこれらの非実用的な問題の解決策は何ですか。これは非決定性の有用性です。
何か問題がある場合は修正してください。
非決定性は、決定性を理解するのに役立ちますが、その逆ではないため便利です。非決定論がより大きなアイデアであると言えます。確定的チューリングマシンは、非確定的チューリングマシンの特殊なケースです。-非決定性は、今日のプラットフォームでは、特定の問題を特定するのが難しい理由を理解するのに役立ちます。決定論的コンピューティングプラットフォームでは効率的なソリューションを持たない計算上の問題が数多くありますが、非決定論的なコンピューティングプラットフォームでは効率的なソリューションが存在する可能性があることを理解しています。...状態、エンコーディング、非決定性これらはすべてリンクされていますhttp://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf
決定論的チューリングマシンでは、ルールのセットは、特定の状況で実行されるアクションを最大1つ規定します。対照的に、非決定的チューリングマシン(NTM)には、特定の状況に対して複数のアクションを規定する一連のルールがあります。 http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine 複数のアクションを処理できるように状態遷移を管理できるソフトウェアボックスを構築できる場合、決定論的なマシンを超えるパフォーマンスを得ることができます。
非決定論が有用な概念である理由
決定論には、対称性を破る強い傾向があります。この傾向は、逐次決定論の場合はさらに強くなりますが、非循環有向グラフの概念とそのようなグラフのトポロジカル順序により、決定論と逐次決定論の違いを無視できます。非決定性は決定性のスーパーセットであり、より多くの対称性を保持できます。問題の解決策を設計するとき、非決定論的解決策から始めると、有用な対称性を維持でき、解決策の記述を小さくコンパクトに保つことができます。対称性の破れは、非決定的ソリューションを決定的ソリューションに変換しながら、実装中に後の段階に委任できます。
多くの場合、非決定論とは、部分関数の概念が関係の概念に置き換えられることを意味します。その場合、非決定的マシンは時間的に順方向と逆方向の両方で実行できますが、これは一般的に決定的マシンでは不可能です。代わりに、決定論のための総関数と非決定シムのための多値総関数を使用する場合、対称性はもはや良くありませんが、それでも機能させることができます。