問題文 :
してみましょう(潜在的に非決定性)プッシュダウンオートマトンこととしましょうAがその入力アルファベットなります。単語があるのw ∈ A * STは| w | ≤ Kで受け入れられているM?
この問題はNP完全ですか?それは研究されましたか?そのような単語を見つけることを可能にするアルゴリズムはありますか?
問題文 :
してみましょう(潜在的に非決定性)プッシュダウンオートマトンこととしましょうAがその入力アルファベットなります。単語があるのw ∈ A * STは| w | ≤ Kで受け入れられているM?
この問題はNP完全ですか?それは研究されましたか?そのような単語を見つけることを可能にするアルゴリズムはありますか?
回答:
CFG言語と通常の言語の共通部分計算します(これは、状態の数にkを乗算し、「行き止まり」の状態を追加することを意味します)。次に、結果が空かどうかを確認します。文法に変換し(結果は多項式サイズになると思います)、イプシロンプロダクションから「バックトラック」します。
編集:Kavehはこれが多項式であることを述べたので、kが入力として与えられた場合、アルゴリズムは次のように指数関数になります。k | 。しかし、カヴェはそれを修正する方法を見つけました。元のオートマトンをCFGに変換し、すべての端子を固定端子に置き換えます。次のように、反復アルゴリズムを使用して、各非終端記号によって生成される単語の最小サイズを見つけます。
すべての長さをで初期化し、明白な方法ですべての長さを繰り返し更新します。生産A → a t ∏ B i(順序は関係ありません)が与えられた場合、f (A )= min (f (A )、t + ∑ f (。主張:これは O (n )反復に収束します。ここで、 n非端末の数です。その理由は、最小長の単語を生成するツリーでは、非終端記号が2回使用されないためです。各「エッジ」の処理には最大で1回の反復が必要です(一部のエッジは並行して「更新」できます)。
すべてのアルファベット文字を1つの特定の文字に変更します。これで、1つの文字に対してPDAが定義されました。その言語は文脈自由文法です。ただし、1つの文字に対する文脈自由文法は規則的です。したがって、CFGを通常の言語に変換し、長さkの単語が含まれているかどうかを確認します。
現在、これらの変換はすべて指数関数的な時間を必要とする傾向がありますが、問題がNP完全であるとは思えないようです。特に多項式時間を許可する場合。
私は間違っているかもしれません、そして私の最初の簡潔な答えをお詫び申し上げます...
ところで、1文字のCFGが規則的であるという事実は、Parikhの定理に従います。直接証明は難しいことではありませんが。Parikhの定理の詳細については、リンクを参照してください。これは美しい結果です... http://www8.cs.umu.se/kurser/TDBC92/VT06/final/3.pdf
編集:上記はNFAでのみ機能します!申し訳ありません。