NFAが別のNFAのサブセットを受け入れるかどうかの効率的なテストはありますか?


12

したがって、正規言語が正規言語サブセットであるかどうかのテストは決定可能です。両方をDFAに変換し、計算してから、この言語が空かどうかをテストできるからです。RSRS¯

ただし、これにはDFAへの変換が必要であるため、DFA、ひいてはテストアルゴリズムが、入力NFAの状態の数に関して指数関数的になる可能性があります。

多項式時間でこれを行う既知の方法はありますか?一般に、この問題はCo-NPが完全であることが証明されていますか?

では受け入れられるがでは受け入れられない単語は多項式証明者になるため、問題はCo-NPにあることに注意してください。RSRS

編集:これは、そのような単語が状態の数で多項式になるという保証がないため、正しくありません。


1
これは理論的な質問ですか、それとも実際にですか?実際に遭遇する入力の特定の「分布」に対して、Pspace完全問題がP時間で「実行可能」になる場合があります。
vzn

理論的には理想的ですが、私が取り組んでいる証拠はコンピューターテストによって大きく左右されます。つまり、高速なアルゴリズムは間違いなく有用です。
-jmite

そのため、2台のマシンのそれぞれの遷移を並行して追跡し、結果の状態セットを追跡することで動作する、かなりまっすぐなアルゴリズムがあります(std決定アルゴリズムのように)。それがどこかの文献にあるか、それがそうであると推測するほど単純かどうかは知らない。すでに何らかのアルゴリズムを使用していますか?引用すれば役立つでしょう。また、入力の種類に関する詳細情報も役立ちます。また、2つのNFAの交差点が空であるかどうかを判断したいようです。交差点の言語が必要ですか、それとも空でない場合はY / Nのみですか?
vzn

空であるかどうかを探していますかどうかをテストするために探しています。パラレルトランジションアルゴリズムは機能します。難しいのはNFAの賛辞を取ることだと思います。最初にDFAに変換する必要があります。私が現在使用しているアルゴリズムは、ブルートフォースに過ぎません。なぜなら、私は有限言語しか扱っていないからです。RS={}RS
jmite

DFA 1stに変換せずに2つのNFAをトラバースする方法があり、1つの補数も見つけられると信じています。しかし、参考文献でそれを見ていません。
vzn

回答:


15

NFAでの言語の包含を決定する問題は、です。これを証明するために、NFAの汎用性の問題から簡単に減らすことができます(かどうかをテストします。PSPACEL(A)=Σ

co-NPについてのあなたの観察は間違っています(しかし素晴らしい)。そのような証人は、実際に多項式時間で確認することができる証人が、最短証人自体は、入力の長さが指数関数的であってもよいです。以来、、その後、非封じ込めを決定することもあるP S P A C Eの -complete。PSPACE=coPSPACEPSPACE

状態のものに、より慎重に決めるかであり、P S P A C Eの大きさB(唯一のでBのニーズを補完する)、及びN L O G S P A C EAのサイズ。L(A)L(B)PSPACEBBNLOGSPACEA


あなたは絶対に正しい。私が言ったことが当てはまる特定のクラスのNFAを扱ってきましたが、一般的な無限のNFAでは絶対にそうではないかもしれません。ありがとう!
jmite

PSPACEが完全であることを証明する論文や教科書への言及はありませんか?
jmite

1
それはあまり詳細な証拠ではありませんが、そうなると思います:wisdom.weizmann.ac.il/~vardi/av/notes/lec4.ps
Shaull


3

オンラインで利用可能な、最も徹底的かつ最先端の高度に最適化された最高の無料FSMライブラリの1つは、AT&T FSMライブラリです。説明どおりに「fsmdifference」を実装するため、イプシロンを含まない決定済みのFSMが違いを生じさせる必要があります。1つのアイデアは、違いを実行する前にFSMの一方または両方を最小化することです。これは、場合によっては役立ちます。(つまり、決定は最小化とは異なります。)このパッケージには、完全な最小化よりも高速になるように設計された「近似」または「貪欲な」最小化もあります。

ただし、同様の問題を研究すると、文献に記載されていないFSMの一般化または構築があり、決定ステップを回避することでこの問題を解決できると考えられます。つまり、基本的に追加の決定されたFSMを作成せずにNFAを反転します。アイデアは、NFAエッジを「並行して」トラバースし、標準の決定アルゴリズムと同様に、現在の「スーパーステート」(ステートのセット)の一部であるノードのセットを追跡することです。次に、NFA補数は、現在のスーパーステートノードのセットが「すべて非受け入れ」である場合にのみ受け入れます(「任意の受け入れ」の場合に受け入れる決定構造とは対照的です)。

しかし、私はこれをこれまでに書いたことがなく、簡単なオンライン検索でそれを見ません。NFAを補完する唯一の方法は、NFAを決定することであることを示唆または示唆する多くの参考文献があります。

以下に、いくつかのアイデアに役立つ2つの「近くの」参照を示します。「もっと近い」人の話を聞きたいです。あなたはプログラムの検証に取り組んでいると言いますが、それは問題についてより直接的な研究がある分野かもしれません。

[1] Z表記を使用した非決定性有限オートマトンの交差点の構築 Nazir Ahmad Zafar、Nabeel Sabir、Amir Ali

[2] 無限語上の非決定的オートマトンの補完構成 Orna KupfermanおよびMoshe Vardi

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