NFAが非決定的と呼ばれるのはなぜですか?


14

この[おかしい]質問を念頭に置いています。入力の遷移を定義するときに、決定的有限オートマトン非決定的と呼ばれるのはなぜですか。まあ、複数のイプシロン遷移がありますが、それらは定義されています。つまり、マシンはそれらの遷移に対して決定論的です。つまり、決定論的です。


12
理論的なコンピューターサイエンスで使用される非決定的は、ランダムとは異なります。
adrianN

10
非決定的であるのは、遷移間の選択です。
reinierpost

NFAとは何ですか?(私たちの間で無知のために)
DarcyThomas

@DarcyThomas、最初に紹介したのはswtch.com/~rsc/regexp/regexp1.htmlでした。これは良い読み物です。NFAを紹介することはこの記事の目的ではありませんが、正規表現の議論でそれを行うのは良い仕事です。
ワイルドカード

回答:


22

「確定的」とは、「システムを同じ状況に2回設定すると、同じ選択を2回行うことが保証される」ことを意味します。

「非決定的」とは、「非決定的」、つまり「システムを同じ状況に2回設定すると、両方とも同じ選択を行う場合としない場合」を意味します。

非決定性有限オートマトン(NFA)は、状態からの複数の遷移を持つことができます。これは、その状況でできることについて複数のオプションがあることを意味します。常に同じものを選択する必要はありません。1つの入力で最初の遷移を選択し、別の入力で同じ遷移を選択する場合があります。

ここでは、「状況」を「入力から次に読み取られる記号と一緒に、NFAの状態」と考えることができます。これらの両方が同じ場合でも、NFAには、その状態から取り出すことができる複数の一致する遷移が存在する可能性があり、どちらを選択するかを任意に選択できます。対照的に、DFAにはその状況で実行できる一致する遷移が1つしかないため、選択の余地はありません。その状況にあるときは常に同じ遷移に従います。


「どちらを取るかを任意に選択できます。」それは基本的に確率的な性質を持っていますか?
トライラリオン

@Trilarion、いいえ、それは受け入れ状態につながるかどうかに依存します。実際、確率的FAはNFAの一般化です。
rus9384

「非決定的」とは、「非決定的」、つまり「システムを同じ状況に2回設定すると、両方とも同じ選択を行う場合としない場合」を意味します。これは、マシンが2つの異なるケースで同じ文字列を受け入れ、拒否できることを意味しますか。
Madhusoodan P

3
@MadhusoodanPあなたの直感はここに書かれたものから正しいので、この答えに欠けているものに私たちを導きます:NFAを分析するとき、私たちは常にすべての可能な実行経路を考慮ます。そのマシンのいずれかのパスが受け入れ状態になっている限り、入力は受け入れられたと見なされます。したがって、それは確率に関するものではなく、単に受け入れ状態に到達できるかどうかに関するものです。NFAがDFAにどのように還元されるかを考えると、この直感がより明確になります。NFAの実行をすべてシミュレートする必要があり、これが構築の指数関数的な爆発につながります。
ComicSansMS

3
それを視覚化する方法は、複数のトランジションを選択できる場合、NFAがすべてのトランジションを取ると仮定することです。入力文字列が到達するすべての状態のツリー状の構造を作成し、ブランチのいずれかが受け入れ状態で終了する場合、文字列は受け入れられます。言い換えれば、DFAで、あなたが求めている「ある状態私の入力が到達したが、AN状態?受け入れる」NFAとのに対し、あなたが求めている「で、どんな状態私の入力によって到達AN状態を受け入れるだろうか?」。
ハリソンペイン

8

たとえば、このオートマトンはNFAであり、文字列受け入れます。より面白くするために、10で終わる文字列を受け入れます。011010

オートマトンの例、ソース:/cs/61159/what-is-the-difference-between-following-two-finite-automata/61208

確認するには、受け入れ状態に到達するかどうかを確認するだけです。

q01q00q11q20

今、赤い線で別の可能性は、第二の読んでいるときに、そこにいた私はとどまることができるのq 0、その後に滞在qは0最後の読み取り時に0を。Automataにはメモリがないため、状態を「保存」して、文字列が10で終わるかどうかを後で確認する方法はありません。これは、このNFAのように、文字列が許容可能な状態に分岐する前に10で終わるかどうかを推測しています ここでの非決定性は、多くの選択を行い、常に正しい選択をすることです。1q0q001010

DFAを構築するよりもNFAを構築する方が簡単です。良い点は、両方が同等であることです。


はい、NFAの理論部分を知っています。しかし、私が求めていたのは、単一の入力文字に複数の遷移がある場合でも、マシンはすべての状態に到達できるかどうかについて決定的です(たとえば、スレッドを作成することによって)。したがって、文字通りDFAです。[それとも、私がの意味を誤解しています思います決定論 ]
Madhusoodan P

1
同じ目的のDFAはNFAと同じ数の状態を使用し、特に複雑ではないため、この例は少し複雑なNFAで改善される可能性があります。対照的に、より複雑な正規表現のマッチングには、複雑で煩雑なDFAが必要になる場合がありますが、NFAでは簡単です。
supercat

@supercat、少なくとも遷移を見るのが良いでしょう。ε
rus9384

1
@Aristuお気に入りのプログラミング言語でNFAを実装している場合、スレッドは恐ろしい選択です。むしろ、入力の各文字が読み取られた後、オートマトンが「入る可能性がある」状態のセットを追跡する必要があります。結果のコードは、DFAの実装とほぼ同じ速度になります。
デビッドリチャービー

1
ϵ

5

NFAの遷移関数は、任意の時点で許可される遷移を指定します。複数のオプションが存在する可能性があり、NFAは最終的に受け入れ状態に到達することを目的として、非決定的に遷移を選択します。

おそらく、非決定的チューリングマシンについて学ぶまで待つ必要があります。非決定論は、両方の場合で同じことを意味します。


「非決定的に遷移」を強調してください。また、私の答えを確認してください
Madhusoodan P

あなたの直感は健全ですが、私たちの答えはどちらもあまり良いものではないと思います。
ユヴァルフィルマス

3

有限オートマトンから始めます。状態と受け入れ状態および遷移があります。

ここで、各状態の複数の遷移規則を指定し、入力文字列が与えられて受け入れ状態に至るという事実の後に選択された遷移規則のセットが存在する場合、それを受け入れると言います。

入力文字列を取得すると、その文字列を受け入れるために(一度に1つずつ)通過する具体的な遷移と状態の固定セットがあります。しかし、選択する遷移は、文字列の最後でのみ選択されます。文字列が読み取られている間、どのパスを取るかは決定されません。

非決定的です。入力を読み取るときではなく、問題全体をグラフに渡した後、グラフ内のパスを選択します。


さて、私たちはこれをこの思考実験とは異なる方法で定式化しますが、これはなぜそれがその名前を得たのかという動機を与えます。

これは、そもそも名前の由来を説明しています。はい、完全に決定的な方法でNDFAをモデル化できますが、名前はスティッキーです。ボブに電話をかけたら、アリスと呼んだときにあなたが話していることを誰も知らないので、それを他の名前に変更するには通信コストがかかります。


はい!NFAについてのあなたの説明に同意します。しかし、私の質問は、それは状態の集合は、単一の入力のために定義されているにもかかわらず、非決定論的である理由についてです
Madhusoodan P

@MadhusoodanPそれはそれがどのように発明/想像されたかから非決定的と呼ばれます。また、マルチプルを完全に決定論的な方法でモデル化する方法を定義した後でも、名前はスティッキーです。
Yakk

1

ウィキペディア、これについて考えるための最良の方法は、決定性有限状態機械(DFA)を開始することです。DFAの場合、各遷移は現在の状態と処理される入力シンボルによって一意に決定されます。非決定性有限状態マシン(NFA)は、この決定性ルールを緩和して遷移を一意に定義できないようにするときに得られるものです。これは、DFAから決定的ルールを削除したときに得られるものです。


非決定性も特定の受け入れ条件であるため、少し複雑です。
ユヴァルフィルマス

1

NFAとDFAは、特定の文字列を認識するために使用されます。

非決定論的有限オートマトンは、その決定に影響を与えたように機能します。パスをたどるか、たどらないかを「選択」できます。

NFAの例

上の画像で、文字列 "00111"を処理しているとき、最初の "1"に遭遇したとき、2つの可能な方法があることに注意してください。「p」のままにするか、「q」に移動できます。オートマトンが "q"に移動する場合、文字列は受け入れられません( "q"から出てくるエッジがないため)。しかし、このオートマトンは、最後の1だけで "q"に移動し、他のすべての "p"にとどまることで文字列を受け入れることができます(そしてそれが起こっています)。

NFAは、それがオートマトンのように見え、先にあるものを「認識」し、それに応じて選択します。

もちろんそうではありません。DFAとNFAは消費電力の点では同等です(NFAをDFAに削減し、NFAを使用して(おそらく)シンプルにすることができます)が、NFAは便利です。短くて読みやすい。

そこにランダムなものは何もありません。非決定論的な部分は、「選択」が必要であるという事実に重点を置いていますが、真実は、オートマトンが決定を行わないことです。


0

ここに、本[Peter Linz 4Eによる形式言語とオートマトンの紹介]と私の理解からのいくつかのコンテンツのミックスがあります。

マシンが次の動き(三目並べなど)を決定する必要があるゲームプログラムを考えてみましょう。複数の移動が可能なため、各移動を決定的に選択し、移動を評価して最適な移動を選択します。選択プロセスは決定論的であり、多くの可能な動きがありましたが、行われた最終的な動きは単一のものであり、試行されたすべての移動計算を敵から隠しながら最良の動きとして選択されました。[ここでは、可能性のある各移動の評価プロセスが敵から隠されていると仮定しています]。

したがって、選択は1つだけで、相手には動きが非決定的であるような錯覚が与えられます。

最良の動きがいくつかの決定論的計算の積であるとまだ確信していない場合は、完全にランダムな動きをするマシンを検討する必要があります(マシンが緩んでいるかもしれませんが、NFAです)。


1
これを置く別の方法:相手に、あなたの選択は非決定的でした。対戦相手の視点からシステムをモデリングする場合、対戦相手がその背後で決定論的なプロセスを把握していない限り、あなたの動きは非決定的な選択です。
reinierpost

@reinierpost私が伝えたかったことを正確に
Madhusoodan P

より興味深い例としては、情報が限られたムービングピースゲーム(「警官と強盗」スタイルなど)があります。1人のプレイヤーは強盗を迷路の周りに移動させ、もう1人のプレイヤーは警官を移動させます。警官が強盗を見ることができるときはいつでも、強盗の状態はその場所になりますが、どの警官も強盗を見ることができないときはいつでも、強盗はその位置に隣接し、警官ができる正方形に移行することができますその瞬間は見えません。
supercat

ニース1 @supercatが、作られた移行が常に単一の状態であり、そしてあなたが最良の移動の計算を非表示にした場合、それは非決定的と思われる
Madhusoodan P
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.