L= {w ∈ {a,b}* 的 NPDA:a 的数量是 b 的两倍}
NPDA for L= {w ∈ {a,b}*: number of a's is twice the number of b's}
我一直在尝试为这种语言寻找一个 NPDA,但我想不出任何可以接受该语言中所有单词的东西。我确实尝试将其接受条件设置为空堆栈并使用堆栈字母表 {$ a b} 但也许我应该尝试其他方法?
也许您正在寻找给定 Regular Expression
的等效 Grammar
。
如果是这样的话,也许这个有以下作品:
S->AAb | SAAb | ASAb | AASb | AAbS
A->a
一些测试:
aab : S->AAb->aAb->aab
aaaabb : S-> AASb -> AA(AAb)b -> aaaabb
也可以检查其他示例,看看是否适合所有情况。
如果没事总要上
Result = (2*count_of_b) for a, count_b
找了两遍,A->a
可以去掉只有:
S->aab|Saab|aSab|aaSb|aabS
测试:
aaaabb : aaSb(S_4)->aaaabb(S_1), etc.
我一直在尝试为这种语言寻找一个 NPDA,但我想不出任何可以接受该语言中所有单词的东西。我确实尝试将其接受条件设置为空堆栈并使用堆栈字母表 {$ a b} 但也许我应该尝试其他方法?
也许您正在寻找给定 Regular Expression
的等效 Grammar
。
如果是这样的话,也许这个有以下作品:
S->AAb | SAAb | ASAb | AASb | AAbS
A->a
一些测试:
aab : S->AAb->aAb->aab
aaaabb : S-> AASb -> AA(AAb)b -> aaaabb
也可以检查其他示例,看看是否适合所有情况。
如果没事总要上Result = (2*count_of_b) for a, count_b
找了两遍,A->a
可以去掉只有:
S->aab|Saab|aSab|aaSb|aabS
测试:
aaaabb : aaSb(S_4)->aaaabb(S_1), etc.