NFAのDFAが指数関数的な状態を持つことができることを証明するにはどうすればよいですか?


20

すべての非決定性有限オートマトンは、同等の決定性有限オートマトンに変換できます。ただし、確定的有限オートマトンでは、状態からポイントするシンボルごとに1つの矢印しか使用できません。したがって、その状態はNFAの状態のパワーセットのメンバーである必要があります。これは、DFAの状態の数がNFAの状態の数に関して指数関数的にスケーリングできることを示しているようです。しかし、私は実際にこれをどのように証明するのか疑問に思っていました。


7
それは合理的な質問であり、構成は完全には明らかではありませんが、それでも宿題の質問かもしれません。だから、あなたが知りたい理由を聞くことは助けになるでしょう。

ここにはいくつかの構造がありますが、どこかの論文にあるべきです。refを知らない。また、NFAがそのアクティブ状態でバイナリでカウントし、約遷移後にのみ受け入れるような構造があると思います...?2n
— vzn

回答:


15

NFAを別のNFAに変換するが、DFAの変換を行わない1つの操作は反転です(逆方向にすべての矢印を指し、初期状態を受け入れ状態に交換します)。形質転換されたオートマトンによって認識される言語は逆言語である。LR={un−1…u0∣u0…un−1∈L}

したがって、1つのアイデアは、非対称構造を持つ言語を探すことです。今後、この言語は、n + O (1 )状態のみを必要とする最初のシンボルを検査することで認識されるはずです。後方に戻ると、最後のn個の状態のメモリを保持する必要があります。これには、A n + O (1 )状態が必要です(Aはアルファベットサイズ)。nn+O(1)nAn+O(1)A

形式の言語を探しています。ここでM nは長さnの単語から成り、Sはアルファベットの重要なサブセットであり、M ′はそれ以上の制約を提供しません。同様に、最も単純なアルファベットA = { a 、b }(シングルトンアルファベットでは対応できず、小さいNFAを取得しない)とM ′ = A ∗を選択することもできます。自明でないSはS = { a }を意味します。はどうかと言うとMnSM′MnnSM′A={a,b}M′=A∗SS={a}、 Sと相関しないことを要求します(逆言語のDFAが Sのメモリを保持する必要があるように): M n = A nを使用します。MnSSMn=An

したがって、ます。n + 2状態の単純なDFAによって認識されます。Ln=(a|b)na(a|b)∗n+2

dfa

逆にすると、を認識するNFAが生成されます。LnR=(a|b)∗a(a|b)n

NFA

最小DFA認識 少なくとも有し、2つのn + 1の状態を。これは、長さ2 n + 1のすべての単語がDFAで異なる状態に到達する必要があるためです。(換言すれば、それらは別個に属するMyhill-Nerodeさんの同値類。)この2つの異なる単語を取ることを証明するためにUを、V ∈ A N + 1およびlet kは、それらが(異なる位置であるUはkは ≠ Vのkは)。一般性を失うことなく、u kを仮定しましょうLnR2n+12n+1u,v∈An+1kuk≠vkとのV K = B。次いで、 U B 、K ∈ LのR N及び V B K ∉ L R N( Bのkはのための特徴的な拡張であり、 Uおよび V)。場合、Uおよび Vは、 DFA認識に同じ状態につながった L個のR nはそのように希望 uがB 、K及び VのBのKuk=avk=bubk∈LnRvbk∉LnRbkuvuvLnRubkvbk、一方は受け入れ状態になり、もう一方は受け入れ状態にならないため、不可能です。

謝辞:この例は、説明なしでウィキペディアで引用されました。この記事は、私が読んだことのない、より
きびしい記事への参照を提供します。Leiss、Ernst(1981)、「ブールオートマトンによる正規言語の簡潔な表現」、Theoretical Computer Science 13(3):323–330、doi:10.1016 / S0304-3975(81)80005-9。


論理的な答え:DFAの状態はメモリ(オン/オフファンスイッチなどの情報を格納するため)として使用されるため、DFAの単一の状態で表現できるものは、同等のNFAの状態の組み合わせを使用して表現できます。これが、同等のDFAと比較してNFAの状態が少ない理由です。あなたが持っている場合今セットでの状態をQ、その後のすべての可能な組み合わせのセットQである パワーセットで2 のn我々はのNFA逆のであれば、n個の等価DFAに状態を、その後、DFAはせいぜいから構成されます 2 n個状態。–それは理にかなっていますか?nQQ2nn2n
— グリジェシュショーハン14

1
@GrijeshChauhanこれは質問が尋ねたものではありません。はい、状態を持つすべてのNFAに、最大2 n個の状態を持つDFAがあることは簡単にわかります。しかし、ここで我々はすべてのためにということ、すなわち、束縛が到達していることを確認したいn個ありnは最小の同等のDFAが持っている-state NFAは、少なくとも2つのn個の状態(またはそれに近いが、ここで私はバインドされた証明2 のnを- 1)。n2nnn 2n2n−1
— ジル 'SO-悪であるのをやめる' 14

うーん...あなたの答えを2回読んだ後、コメントから「しかし、ここでは限界に達したことを確認したい」と理解できました。ありがとう。
— グリジェシュショーハン14

8

言語の次の家族考える: Ln={x1,x2,…,xk#xk+1:∃i∈{1,…,k} with xi=xk+1}

Ln{#,1,…,n}

O(n)Lnnii3

Ln2O(n){1,…,n}

Sipserの本にはこの例があると確信しています。


Siperの本の構造は、正確に2 ^ n状態のDFAを生成します。NFAの状態セットがQの場合、DFAの状態セットはPow(Q)であり、NFAが移行する可能性のあるすべての「並列」状態をシミュレートします。標準テキストでこれに使用される構造は、指数状態の可能性を明確に示していますが、これは研究レベルではないようです。ただし、参照リクエストとして適している場合があります。
— ローガンメイフィールド

8

nn2n

また、この例は、補完の下でNFAが指数関数的に爆発する可能性があることを示しています。実際、アルファベットのすべての記号を含むすべての単語の言語のNFA(または文脈自由文法)には、指数関数的な状態数が必要であることが知られています。


1
⋃σ∈Σ(Σ∖σ)∗

ΣnO(n2)2n⋅2n

この例のポイントは、爆発がパワーセットの構造と正確に一致することです。同じ爆発を伴うバイナリの例もありますが、より複雑です。
— ユヴァルフィルマス

うん、いい例です。
— 6005

1
O(nlog⁡n)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.