Math 平衡圆括号和方括号语言的下推自动机

Math 平衡圆括号和方括号语言的下推自动机,math,Math,我需要找出一个下推自动机来构造平衡圆括号和方括号语言的字符串,比如((([())])()[]。对于一种类型的括号来说,这似乎很容易做到;你的堆栈由你看到的(当你看到它们时,你推它们,然后你为每一个弹出一个)组成。然而,对于这两种类型的括号,我很难理解它。有人有什么建议吗?谢谢。您遇到了麻烦,因为您所描述的语言不是上下文无关的(尝试编写上下文无关的语法,这是不可能的),因为它不适用 直观地说,PDA在任何时候都只能“记住”一个数字,而您的语言要求“记住”前面看到的(和[的数字 您的语言中有一个子

我需要找出一个下推自动机来构造平衡圆括号和方括号语言的字符串,比如((([())])()[]。对于一种类型的括号来说,这似乎很容易做到;你的堆栈由你看到的(当你看到它们时,你推它们,然后你为每一个弹出一个)组成。然而,对于这两种类型的括号,我很难理解它。有人有什么建议吗?谢谢。

您遇到了麻烦,因为您所描述的语言不是上下文无关的(尝试编写上下文无关的语法,这是不可能的),因为它不适用

直观地说,PDA在任何时候都只能“记住”一个数字,而您的语言要求“记住”前面看到的
[
的数字


您的语言中有一个子集是CF,即嵌套和平衡括号和圆括号的语言

CF语法:

S->B|p|ε

B->[B]|[p]|ε

p->(B)|(p)|ε

以及相关的PDA:

当它看到
[
时,按下
b

当它看到
)时,按下
p

当它看到
时,如果
p
位于堆栈的顶部,它将弹出它,否则它将拒绝该单词


当它看到
]
时,如果
b
位于堆栈顶部,它将弹出它,否则它将拒绝单词您遇到了问题,因为您描述的语言不是上下文无关的(尝试编写它的上下文无关语法,这是不可能的),因为它不支持它

直观地说,PDA在任何时候都只能“记住”一个数字,而您的语言要求“记住”前面看到的
[
的数字


您的语言中有一个子集是CF,即嵌套和平衡括号和圆括号的语言

CF语法:

S->B|p|ε

B->[B]|[p]|ε

p->(B)|(p)|ε

以及相关的PDA:

当它看到
[
时,按下
b

当它看到
)时,按下
p

当它看到
时,如果
p
位于堆栈的顶部,它将弹出它,否则它将拒绝该单词


当它看到
]
时,如果
b
在堆栈的顶部,它会弹出它,否则它会拒绝这个词

我投票将这个问题作为离题题关闭,因为这最适合计算机科学SE!我投票将这个问题作为离题关闭,因为这最适合计算机科学SE!