回答:
効率的な定義方法に応じて、2つの答えがあります。
少ないリソースでより多くを伝える:NFAはより効率的です。
DFAからNFAへの変換は簡単で、表現のサイズは増加しません。
ただし、最小のDFAが最小のNFAよりも指数関数的に大きい標準言語があります。典型的な例は、のための固定します。 k
高速で実行:DFAの方が効率的です。
現在使用しているコンピューターは、本質的に決定論的です。それは彼らを非決定論への対処が苦手にします。NFAを決定論的に扱うには、一般的に2つの方法があります。片側のバックトラッキング(かなりコストがかかる)、またはアクティブな状態の追跡、つまり各遷移が最大倍(はNFAのサイズ) 。N
パワーに関しては、あなたが言ったように同等であり、NFAを同等のDFAに変換するアルゴリズム(サブセット構築)があります。アルゴリズムの名前からわかるように、NFAの状態のサブセットを構築します。NFAに状態がある場合、アルゴリズムは2 n個の状態を持つDFAを出力する場合がありますが、これは上限です。状態の数がまったく変化しないか、さらには減少する場合があります。したがって、実際には、どちらを使用するかは重要ではありません。
DFAマッチングは、入力文字列のサイズが線形です。NFAマッチングにはバックトラッキングが含まれるため、NFAはより多くの作業を行います。したがって、DFAはより効率的です。
Automata、つまり人力なしで、または人の直接参加なしでアクションを実行できるマシンについて知っています。例:洗濯機。有限オートマトンとは、1回押すと2回押すとオフになるように機械でタスクを実行する状態を知っているため、有限オートマトンと呼ばれる状態が2つしかないことを意味します。次に、DFA、つまり決定論的有限オートマトンに来てください。正式には、あいまいさのない状態を簡単に判断できることを意味し、非公式には1つのシンボルで許可される遷移が1つだけ必要です。NFA:非決定性有限オートマトン。実際の状態を計算するのにより多くの時間が必要であり、あいまいさがあり、1つのシンボルに複数の許可された遷移があると非公式に述べられています。宛先NFAに到達するまでに時間がかかる場合、DFAよりも時間がかかりますが、NFAはDFAよりも多くのデータをロードできます。* DFAとNFAには、文字列を認識する同じ力があります。ありがとう。.ディーパリ・カウシク