大学生

【情報系大学生がプッシュダウンオートマトンをわかりやすく解説】形式言語とオートマトン

こんにちはの方もこんばんはの方もようこそ、イカスミです。

大学生、特に情報系学生の皆さん、形式言語の授業で、プッシュダウンオートマトンって何?となった経験はありませんか?

この記事では、そんな方に向けて、情報系大学生の僕がプッシュダウンオートマトンについて解説したいと思います。

この記事で解決できる悩み

  • プッシュダウンオートマトンがわからない
  • プッシュダウンオートマトンの問題が解けない

 

この記事では、こちらの参考書を基準としていますので、余裕がある方は手にとってみてください。

 

 

 

プッシュダウンオートマトンとは

プッシュダウンオートマトンは、有限オートマトンにスタックと呼ばれる記憶装置を付け加えたものです。

 

有限オートマトンについては、こちらの記事で解説しているので、参考にしてみてください。

【現役大学生が決定性有限オートマトンをわかりやすく解説します】形式言語とオートマトン

こんにちはの方もこんばんはの方もようこそ、イカスミです。 大学生、特に情報系学生の皆さん、形式言語の授業で、決定性有限オートマトンって何?となった経験はありませんか? この記事では、そんな方に向けて、 ...

続きを見る

【現役大学生が非決定性有限オートマトンをわかりやすく解説します】形式言語とオートマトン

こんにちはの方もこんばんはの方もようこそ、イカスミです。 大学生、特に情報系学生の皆さん、決定性有限オートマトンはわかるけど、非決定性有限オートマトンって何?となった経験はありませんか? この記事では ...

続きを見る

 

スタックとは、「先入れ後出し」の記憶装置です。

データをスタックに入れ、最後に格納したデータから取出します。

 

 

有限オートマトンとの違い

プッシュダウンオートマトンは、スタックを用いて入力を記憶できるので、有限オートマトンよりも多くの言語を表現できます

また、状態遷移図も異なります。

有限オートマトンはこのような状態遷移図でしたが、

プッシュダウンオートマトンの状態遷移図はこのようになります。

記述する記号が増えていますね。ここでは、λはεを表します。

 

例えば、0, 0:λ という遷移関数は、入力が0、スタックの先頭記号が0の場合、スタックの先頭記号を取り除くことを表します。

0, 1:01は、入力が0、スタックの先頭記号が1の場合、スタックに1を加えることを表します。

大体の場合、受理状態への遷移は、スタックが空の場合にε遷移で行われます。

 

このように、プッシュダウンオートマトンの状態遷移図は、スタック記号の記憶・削除を上手く用いることが重要となります。

 

 

例題

例題を用いて、プッシュダウンオートマトンをわかりやすく解説します。

例題:長さが偶数の回分を受理するプッシュダウンオートマトンの状態遷移図を示せ。

 

長さが偶数なので、入力を半分に分けて考えます。

前半の入力はスタックへの記憶、後半の入力はスタックの記号を削除するために用います。

そのためには、次の3つの状態が必要となります。

  • q0:前半の入力をスタックに記憶する状態
  • q1:後半の入力を用いて、q1で記憶したスタック記号を削除する状態
  • q2:受理状態

q1では入力をスタックに記憶するので、遷移は自分自身に向かいます。

q2ではスタック記号と入力が一致した場合、スタック記号を削除します。

この操作を状態遷移図にすると、このようになります。

 

次に、各状態をつなぎ合わせます。

q1からq2への遷移は、ε遷移で行います。

何故かというと、q1で入力の前半、q2で入力の後半を使うので、もし入力を使用してしまうと、q2で使用する入力が足りなくなってしまうからです。

q3は受理状態なので、q2からq3への遷移は、スタックが空の場合にε遷移を行います。

最終的な状態遷移図は、このようになります。

q0で前半の入力を記憶し、ε遷移によりq1に遷移します。

q1で後半の入力を用いてスタック記号を削除します。

入力が全て消費され( = 入力がない)、かつスタック記号が空の場合に、q2に遷移し、入力が受理されます。

 

 

まとめ

この記事では、プッシュダウンオートマトンについて解説しました。まとめると、

  • プッシュダウンオートマトンは、有限オートマトンにスタックを付け加えたもの
  • 状態遷移図は、スタック記号の追加・削除を利用する

この記事が、皆さんの学習の参考になれば幸いです。

最後まで読んで頂き、ありがとうございました。

-大学生
-