2011-10-19 5 views
1

PDAが認識する言語を推測する方法を見つけようとしています。たとえば、次のPDAを取る。私は私のデルタ(遷移)が何であるかを理解するための遷移図を作ることができますが、そこから失われています。これは宿題ではなく、本の例です。相続人は、問題と遷移表:私が正しく表記を読んでいる場合PDAが認識する言語を理解する方法

enter image description here

enter image description here

+0

遷移表記の意味は... b、c - > eはどういう意味ですか?私は別の表記に慣れています。 – Patrick87

答えて

0

、それはLが、一度ループを行うことによって得る言語であることののL *、のように見えますのみ。ループを回るには、 "c"、いくつかの "a"、同じ数の "b"、別の "c"が表示されます。したがって、L = ca^nb^ncであり、このPDAの言語は(ca^nb^nc)*です。

もちろん、これをチェックして、私が間違っているかどうか教えてください。私はこれを理解しようと思っていたので、私が踏み込んだプロセスをより良く説明することもできます。

EDIT:どこから^ nb^nが得られるかを説明します。

スタックはスタック最下部のシンボルZで始まります。したがって最初は、スタックZ - (1、Z)の状態1にあります。次に、cを見て、状態2に遷移し、$をスタックにプッシュします。私たちは(2、$ Z)に入っています。それで、行の中のn個のインスタンスを見てみましょう。毎回新しいcをスタックに追加して状態2に戻ります。したがって、ここでは設定(2、c^n $ Z)です。たとえば、bのインスタンスを見てみましょう。状態3に遷移し、スタックからcを取り除く。私たちの構成は(3、c ^(n-1)$ Zです)。スタックの上に$を戻すまで、bのインスタンスを参照する必要があります。したがって、状態3では、(n-1)個のbのインスタンスを見ることができ、それぞれのインスタンスがスタックからポップされることになります。 bのこれらのインスタンスを見た後、構成(3、$ Z)になります。最後に、cと$の別のインスタンスがスタックの上にあることがわかります。最初のコンフィグレーションでは(1、Z)、スタックをポップして状態1に戻ります。

(a^n)(b^n)は、状態2の 'a'と同じくらい多くのcのインスタンスをスタックに配置し、状態2と3のスタックから削除します。 bのインスタンスを見ると、スタックからcのインスタンスが3個多くなる。長さを表すためのnの選択は完全に任意です...スタックの最上部にある$を確認してから戻ることができれば、aとbのインスタンスの数が同じでなければならないことを示すためにのみ使用されます受け入れ状態。

+0

yup!それは正解です。私はcを読んだ後、ある数のaを、次にbの数を、次にcを読んだのですが、なぜそれはa^nとb^nですか? – jfisk

関連する問題