[英]Design a Push Down Automata to count the number of characters
字母:a,b,c我正在嘗試定義一個可以接受的PDA
a^n b^m c^p : n + p = 2k for some integer k, m = k, and n, m, p, k >= 0
我認為一些可以接受的字符串是:#abc#; #為aabbcc#; #aaabbbccc#; #abbccc#; #aaabbc#等a,b和c的數目不一定相等。
在最右邊的黑色空間啟動下推自動機的頭部。
通常,我在列中編寫我的PDA:
State: Symbol Read: Next State: Head Instruction:
s # r1 Left
r1 c r2 #
等等...
我認為您描述的語言不是上下文無關的,因此無法用PDA識別。 問題在於,您需要強制執行一個跨越任意長子串的約束(n + p = 2m),但不允許“抽取”(當嘗試使用無上下文語言的抽取引理構造證明時)。
M=(K, E, q0, F, delta, stack_alphabet)
K={q0,q1,q2}
E={a,b,c,z}
F={q2}
stack_alphabet={a,b,z}
delta=
{
*pop* *push*
(q0, e, e)(q1, z)
(q1, a, e)(q1, a)
(q1, b, a)(q1, e)
(q1, b, z)(q1, bz)
(q1, c, b)(q2, e)
(q2, c, b)(q2, e)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.