答案 0 :(得分:0)
我认为这个问题更适合cs.stackexchange.com,但无论如何我都会添加我的解决方案。
它实际上比它看起来更容易,让我们考虑一个例子,我们的出现有以下值:
n = 2
m = 3
p = 1
这应该允许我们形成以下字符串:
一个 2 B'SUP> 3 C 1 一个 1 + 3 B'SUP> 2 = aabbbcaaaabb
由此我们需要确定我们需要跟踪的符号。
n
次n,m ≥ 1
次,所以我们需要在这里跟踪n
,我们要求它至少> 强>一次。q = p+m
和m
也会出现至少,所以我们需要跟踪m
的出现次数。 q = p+m
我们还需要保留p
,但请注意 p
也可以 ,因为它声明p ≥ 0
。我们让PDA P 成为以下PDA:
P =(Q,Σ,Γ,τ,q 0 ,Z,q 6 )
其中:
#
因此,我们可以形成以下自动机(在JFLAP中):
所以在这里,我们只是跟踪上面提到的符号,但需要注意的一点是q3
,其中c
的转换是 0或更多过渡。
我们还使用符号#
作为堆栈符号。
如果我们使用上面指定的输入(aabbbcaaaabb
)模拟此PDA,我们会得到以下结果: