![](/img/trans.png)
[英]Is L = {a^n a^n b^m |m, n ≥ 0} a regular or irregular language?
[英]pda to accept the language L={a^n b^m | n<m}
我知道如何解決 m<n,但我很難理解 m>n 的邏輯。
在 m<n 中,我們將所有 a 壓入堆棧,當我們得到 b 時,我們彈出一個 a,當輸入以包含 mn a 的堆棧結束時,機器應該進入最終的 state
我該怎么辦 m>n....
初始配置是一樣的。 但是你有兩個不同的狀態來讀取'b':
State B1:我正在彈出“b”,但堆棧不是空的。
State B2:我正在彈出'b',堆棧是空的。
如果您在 state B2 中,您閱讀的 b 比 a 多。
由給定語言生成的字符串如下 -
L={a,abb,aabbbb,aaabbbbbb,….}
這里沒有。 的一個小於沒有。 b的
每當'a'到來時,壓入'a',當'b'到來時,每次從堆棧中彈出一個'a'。 對於進一步的輸入'b'離開這樣。 最后在字符串的末尾,如果堆棧中沒有任何內容,那么我們可以聲明該語言在 PDA 中被接受。
該問題的 PDA 如下 - 轉換函數 轉換函數如下 -
第 1 步:δ(q0, a, Z) = (q0, aZ)
第 2 步:δ(q0, a, a) = (q0, aa)
第三步:δ(q0, b, a) = (q1, ε)
第 4 步:δ(q1, b, a) = (q1, ε)
第 5 步:δ(q1, b, Z) = (qf, Z)
解釋步驟 1 - 考慮輸入字符串:滿足給定條件的“abb”。
Step 2 - 從左到右掃描字符串。
第 3 步 - 對於輸入“a”和堆棧字母 Z,然后將“a”推入堆棧。
Step 4 - 對於輸入'b'和堆棧字母'a',然后
從堆棧中彈出一個“a”:(b,a/ε) 和 state 將是 q1。
第 5 步 - 對於任何沒有。 輸入“b”和堆棧頂部 Z 和 state q1,然后移動到最終的 state qf。
第 6 步 - 我們到達字符串的末尾,輸入 ε 和 STACK 字母 Z,
Go 到最終狀態(qf):(ε,Z/Z)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.