簡體   English   中英

pda 接受語言 L={a^nb^m | n <m}< div><div id="text_translate"><p> 我知道如何解決 m&lt;n,但我很難理解 m&gt;n 的邏輯。</p><p> 在 m&lt;n 中,我們將所有 a 壓入堆棧,當我們得到 b 時,我們彈出一個 a,當輸入以包含 mn a 的堆棧結束時,機器應該進入最終的 state</p><p> 我該怎么辦 m&gt;n.... </p></div></m}<>

[英]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”,但堆棧不是空的。

    • 如果堆棧的頂部是“a”並且您讀取了“b”:留在那個 state
    • 如果堆棧為空並且您讀取了“b”:go 到 state B2
  • State B2:我正在彈出'b',堆棧是空的。

    • 如果堆棧的頂部是空的並且您讀取了“b”,請留在那個 state
    • 否則失敗。

如果您在 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.

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