次の言語を認識するPDAを作成します:bよりも多くのaを含む文字列の言語
私はこの質問に数日間苦労してきました、私は完全な精神的ブロックにぶつかったようです。この問題をどのように解決できるかについて、誰かがガイダンスや指示を提供できるでしょうか?
次の言語を認識するPDAを作成します:bよりも多くのaを含む文字列の言語
私はこの質問に数日間苦労してきました、私は完全な精神的ブロックにぶつかったようです。この問題をどのように解決できるかについて、誰かがガイダンスや指示を提供できるでしょうか?
「b よりも a の方が多い」という問題は、PDA で解決できます。
あなたがしなければならないことは次のとおりです。
入力がa
あり、スタックが空であるかa
、上部に がある場合、スタックをプッシュa
します。pop b
、b
がトップの場合。
入力がb
あり、スタックが空であるかb
、上部に がある場合、スタックをプッシュb
します。pop a
、a
上にある場合。
最後に、文字列が終了したらa
、スタックの一番上にある場合は null 入力で最終状態に移動します。a
それ以外の場合は、 よりも多くのはありませんb
。
>という形式a^nb^m
の文字列を意味していると思います。n
m
アイデアは比較的簡単a
です。スタックに (ループで) プッシュしb
、別のループに切り替えてa
スタックからポップします。スタックが空になると、FAIL であきらめます。最初のループで または 以外のものが得られた場合a
、b
または 2 番目のループで 以外のものb
が得られた場合、FAIL であきらめます。
最後に別のものをポップしようとしa
、スタックが空の場合は FAIL であきらめます (つまり、スタックに少なくとも と同じ数b
、a
おそらくそれ以上の がありました)。そうでない場合は、成功です。
編集:補足として、これがこの質問に適したサイトであるとは確信していません。プログラマーの方が良いかもしれません。よくわからないので、投票しないでください。