空のスタックを受け入れるプッシュダウンオートマトンへの入力の全長は、数状態とスタックシンボルの上限です。
-
29-09-2020 - |
質問
私はJeffrey Ullman、John Hopcroft、Rajeev Motwani によって、古典的なテキスト「オートマトン理論、言語、計算」(3RD版)を通過していました。空のスタックを受け入れるプッシュダウンオートマトン(PDA)は、次のようにします。
1。 $ n $ 、入力の全長は確かに状態の数とスタックシンボルの数の上限です。
2。 1つの規則はスタックにほぼnシンボルを配置することができます。
CFLSの決定プロパティについての注意事項について説明している間に以下の記述が行われた(コンテキスト無料言語)
今ここには、私が正しいことを証明するのではなく、主張に矛盾する可能性があるいくつかの点があります。
-
$ n $ が入力の全長ですが、PDAの設計に従って入力を受け入れることができるようになる可能性があります。文字列PDAのすべての状態が含まれていないため、 $ n $ は、PDAが持っている状態の数の上限です。
-
PDAは空のスタックを受け入れますが、遷移関数がスタックの上部にある $ n $ 要素を追加することが起こる可能性があります。しかし、 $ n $ を消費する際には、特定の状態にとどまることができ、epsilonの遷移を使用して同じ状態に残り、それらの要素をポップします。空になるまでスタック。そのため、 $ n $ は、スタック上の数要素の上限ですか?私たちは矛盾しています...
私は私が間違いを犯しているのか理解していません、それを2番目の版から行われることなく同じステートメントが書かれていないので、ステートメントが正しいことを可能にします。
解決
そのセクションは解析について話していません。参照されているアルゴリズムは、異なるタイプのCFGとPDAを変換するためのアルゴリズムです。問題は、通常通り、「アルゴリズムの計算複雑さとは何ですか」、および応答は通常どおりであり、入力に対する入力 - への入力の大きさに関して表現されています。
PDAをCFGに変換するアルゴリズムへの入力、およびアルゴリズムの複雑さのメトリックスティックのサイズは* PDAのサイズです。それが著者が意図しているものです。 n である。
PDAのサイズをどのように測定しますか?単純:PDAの定義言語の文字列としてPDA OUTを書き、説明のシンボルをカウントします。 PDA上の変換アルゴリズムを呼び出すためには、完全に公正な手順です。コンバータをPDAを表す入力を与える必要があります。
その定義を考えると、クレームはまったく驚くべきことではありません。すべての状態とすべてのアルファベット記号は、PDA記述で少なくとも1回存在する必要がありますので、その説明が上限である場合はサイズです。同様に、PDAの記述のほとんどが単一の規則の説明であり、これはほぼn
シンボルをプッシュすることができます。