設計一個下推自動機用於識別語言 L = {wwR | w ∈ {a, b}+}?
下推自動機用於實現上下文無關文法,就像我們使用某種技術為正則文法設計確定性有限自動機一樣。DFA 使用有限的資訊量工作,而 PDA 使用無限的資訊量工作。
通常,下推自動機是:
"有限狀態機" + "一個棧"
下推自動機包含三個組成部分:
一個輸入帶;
一個控制單元;以及
一個無限大小的棧。
現在考慮一個問題:如何為給定的語言設計下推自動機?
問題
設計一個識別偶數長度迴文串的下推自動機,用於語言 **L = {wwR | w ∈ {a, b}+}**。
解答
讀取字串並將其儲存到棧中。
在每一步中,考慮您可能已到達中間點的可能性。
一旦到達中點,就開始反向工作,如果匹配已儲存的內容,則從棧中移除內容。
在每一步,我們都需要測試我們是否位於字串的中間。

以下是字串 **aabbaa** 的逐步瞬時描述:
開始 → (0, aabbaa, $)
載入棧 → (0, abbaa, X$)
載入棧 → (0, bbaa, XX$)
載入棧 → (0, baa, YXX$)
嘗試,這是中間點嗎? → (1, baa, YXX$)
彈出棧 → (1, aa, XX$)
彈出棧 → (1, a, X$)
彈出棧 → (1, ∧, $)
完成! → (2, ∧, $)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP