構造一個接受L = {anb(2n) | n>=1} ∪ {anbn | n>=1} 的下推自動機 (PDA)


下推自動機 (PDA) 可以形式化地描述為七元組

(Q, Σ,S, δ,q0,I,F)

其中:

  • Q 是有限數量的狀態
  • Σ 是輸入字母表
  • S 是棧符號
  • Δ 是轉移函式: QX(Σ∪{e})XSXQ
  • q0 是初始狀態 (q0屬於Q)
  • I 是初始棧頂符號
  • F 是一組接受狀態

問題

構造 PDA 用於 L = {anb(2n) | n>=1} ∪ {anbn | n>=1}

解答

L = {anb(2n) | n>=1}

{anbn | n>=1}

構造 PDA 用於 L= L1 U L2

因此,由給定語言 L1 生成的字串如下:

L1={abb,aabbbb,aaabbbbbb,….} 和

L2= {ab,aabb,aaabbb,….}

L= L1 U L2 = { abb,aabbbb,aaabbbbbb,….} U {ab,aabb,aaabbb,….}

對於語言 L1

在該語言中,a 後面跟著兩倍數量的 b。

每當出現 ‘a’ 時,在棧中壓入兩個 ‘a’;如果再次出現 ‘a’,則重複此操作。

當出現 ‘b’ 時,每次從棧中彈出 一個 ‘a’。注意 b 出現在 ‘a’ 之後。

最終,如果字串結束時棧為空,則可以宣告 PDA 接受該語言。

對於語言 L2

對於語言 L2,我們必須計算相等數量的 a 和 b。

這可以透過在棧中壓入 a,然後在出現 "b" 時彈出 a 來實現。

最終,如果字串結束時棧為空,則可以宣告 PDA 接受該語言。

該問題的 PDA 如下:

轉移函式

轉移函式如下:

步驟 1: δ(q0, a, Z) = (q1, aZ)

步驟 2: δ(q0, a, a) = (q3, aaz)

步驟 3: δ(q1, a, a) = (q1, aa)

步驟 4: δ(q1, b, a) = (q2, ε)

步驟 5: δ(q2, b, a) = (q2, ε)

步驟 6: δ(q2, ε, Z) = (qf1, Z)

步驟 7: δ(q3, a, a) = (q3, aaa)

步驟 8: δ(q3, b, a) = (q4, ε)

步驟 9: δ(q4, b, a) = (q4, ε)

步驟 10: δ(q4, ε, Z) = (qf2, Z)

更新於:2021年6月15日

2K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告