簡體   English   中英

我可以將兩個符號推入下推自動機的堆棧嗎?

[英]can i push two symbols to the stack of a pushdown automata?

我想知道對於給定的下推自動機,初始符號或 Z0 是 y,當我在轉換期間從字符串鏈中讀取“a”時,是否可以堆疊兩個 X?

假設我有一個過渡 function,如下所示:(s1,a,y)->(s2,e,xxy)。 這樣的過渡有效嗎? 這是一個油漆圖像,可以更好地理解,以防它仍然不清楚。

在此處輸入圖像描述

其中 Z0 = Y

這實際上是您如何定義 PDA 的問題——您選擇使用什么約定。 通常,我認為慣例是一個過渡推動一個符號。 但是,允許推送任意字符串不會增加 PDA model 的功率(盡管它可以減少所需狀態的數量)。 要了解這一點,請使用任何將長度大於 1 的字符串壓入堆棧的 PDA。 通過引入具有空/lambda/epsilon 轉換的附加狀態以一次推送一個符號,可以將此 PDA 轉換為將長度最多為一個的字符串推送到堆棧上的 PDA。 這甚至不會將 DPDA 轉變為 NPDA,因為如果在轉換之前是這種情況,那么在任何給定時間,在新 PDA 中最多只能進行一次轉換。

事實上,用於顯示 PDA 可以接受 CFG 語言的結構明確依賴於能夠在一次轉換中推送任意長度的字符串。 該構造通過推動開始符號然后不確定地推動非終結符的產生來工作。 由於產生的 RHS 通常比一個符號長,如果生成的 PDA 必須為每個產生具有單獨的狀態路徑,則結構會更加丑陋。 通過允許推送任意長度的字符串,該構造為任何 CFG 生成一個兩態 NPDA。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM