导出有限自动机识别的语言的常规语法

时间:2017-10-30 04:49:03

标签: context-free-grammar regular-language automata finite-automata computation-theory

我无法找到有限自动机识别的语言的常规语法。我面临的关键问题是常规语法和无上下文语法之间的混淆。我似乎无法区分它们之间的差异,我发现它们在某些方面非常相似,例如歧义。

有人可以解释如何为FA识别的语言推导出常规语法吗?

2 个答案:

答案 0 :(得分:2)

当我们谈到常规语法时,我们可能会谈论(严格)常规语法(扩展)常规语法。这些不同的概念或多或少精确地对应于DFA和具有空转移的广义NFA。

此外,常规语法是右 - 常规左 - 常规。我发现正确的常规语法更容易思考,但你的里程可能会有所不同。

鉴于DFA,可以按如下方式生成(严格)正确的常规语法:

  1. N = Q;语法的非终结符集是DFA的状态集。
  2. S = q0;语法的起始符号是DFA的初始状态。
  3. P将包含生产X:= aY表示非终结符号X和Y以及字母表符号a当且仅当DFA在输入a处从状态X到状态Y的转换时。
  4. P将包含生产X:= a表示非终结符号X和字母符号a当且仅当DFA从状态X转换到输入a处的某个接受状态时。
  5. 当且仅当状态q0在DFA中接受时,P将包含生产q0:= e。
  6. 上述结构试图避免添加不必要的空制作。如果我们不介意有很多空制作,另一种方法是省略步骤4,在步骤5中,添加过渡X:= e当且仅当X是接受状态时。这具有相同的效果。

    给定具有空转换的广义NFA,可以按如下方式生成(扩展的)右对齐语法:

    1. N = Q;语法的非终结符集是gNFA-e的状态集。
    2. S = q0;语法的起始符号是gNFA-e的初始状态。
    3. P将包含非终结符X和Y的生成X:= wY以及字母表中的字符串w,当且仅当gNFA-e从输入w的状态X到状态Y转换时。
    4. P将包含生产X:= e当且仅当状态X在gNFA-e中接受时。
    5. 基本上,正如在rici的链接答案中,常规语法只是有限自动机中存在的相同基础信息的替代符号。这与正则表达式根本不同,正则表达式是表示常规语言的根本不同(但却等效)的表示法。

答案 1 :(得分:-1)

我理解的方式是CFL是以有限的方式描述无限集的好方法,也是描述语言语法的好方法。

CFL和常规语言...... 所有常规语言都没有上下文,但反之亦然。为什么?

我们可以通过使用抽取引理来证明这一点,并且使用{a ^ n b ^ n |描述的上下文自由语言。 n≥0}表示不规则,但它是CFL ,因为它是由语法G =(V,Σ,R,Start)生成的,其中:

  • V:一组有限的变量或非终结符E.g V = {S}
  • Σ:与V不相交的有限集,称为字母或终端E.gΣ= {a,b}
  • R:是一套生产规则,每条规则E.g R = {S→aSb,S→ε}
  • S:起始变量E.g Start = {S}

请注意,字符串w在无上下文语法 G 中是歧义,如果它有两个或更多不同的最左边推导即可。语法 G 如果它模糊地生成一些字符串是不明确的,有时,当我们有一个模糊的语法时,我们可以找到一个生成相同语言的明确语法。请注意,某些无上下文语言只能由 生成

此外,任何无上下文的语言都是由 Chomsky Normal Form 中的无上下文语法生成的。要检查字符串是否是CFL的一部分,我们可以使用 Cocke-Younger-Kasami算法

好读是 Sipser,M。(2006)。计算理论导论(第2卷)。波士顿:汤姆森球场技术。