【问题标题】:Are there any examples of pumping lemmas with "real" languages?有没有用“真实”语言抽取引理的例子?
【发布时间】:2011-01-09 08:52:03
【问题描述】:

pumping lemmaregular languagescontext-free languages 的属性。但我见过的所有例子都是这样的:

L = {0n1n2n : n ≥ 0}

(顺便说一下,它不是上下文无关语言)。

但我感兴趣的是:是否有任何将其与任何远程真实或有用的语言一起使用的示例?我一直找不到。这是其中之一还是纯粹的理论价值,绝对没有实际应用?

【问题讨论】:

  • 是否能够证明一种语言是否具有实用性?
  • @Anon:是的,因为对于解析器生成器来说,是否可以用上下文无关文法来描述一种语言是很有价值的。
  • 我花了一段时间才弄清楚为什么 L 不是上下文无关语言。我认为思考答案的一个好方法是:如果你想写 n 个 0,通过在堆栈中添加 n 次来跟踪它。然后打印 n 1s,通过删除堆栈上的所有项目来跟踪。但是,现在无法记住打印 n 2 的 n 是什么。

标签: computer-science


【解决方案1】:

L = {0n1n : n ≥ 0} 是一种上下文无关语言。

表达式中的括号匹配可以被认为具有相似的形式,即

L = { (n )n : n ≥ 0}

【讨论】:

  • 呃……这些都不是我所说的“真正的”语言。我知道它是如何应用于这些人为例子的。我想要的是至少一个将其应用于编程语言或任何远程“现实世界”的示例。
  • 如何匹配括号(或大括号、引号)不是真实世界?
【解决方案2】:

这个python程序是有效的:

print ((((((((((((((((((((((((1))))))))))))))))))))))))

以及所有其他等价的语句,左侧为(,右侧为)

您无法构建正则表达式来验证这一点,因此您必须使用解析器。

这根本不是理论上的。这就是为什么您不能使用正则表达式来解析 HTML 的原因。

【讨论】:

    【解决方案3】:

    一个实际用途是每个人都可以停止尝试构造一个有限自动机来识别 C# 或 Fortran 的语法。

    另一个实际用途是,每个人都可以停止尝试构建下推自动机来识别 C# 或 Fortran 的语义。 (即使在 Fortran 中,如果您拼错变量名,您会免费获得一个新变量,但新变量可能无法与您在打算命名已声明变量之一时编写的运算符一起使用。)

    【讨论】:

    • 我不是在描述它为什么有用,而是在描述它是如何应用于真实语言而不是 abc 或 012 的序列的。
    • @cletus 设计编译器发生在现实世界之外,使用非真实语言?
    【解决方案4】:

    “这是其中之一还是纯粹的理论价值,绝对没有实际应用?”

    嗯。什么是实际应用?您明智地将您的问题标记为“计算机科学”。所以我想你的问题是要问,“它对计算机科学实用吗?

    在这种情况下,答案是……

    当然是!它被教授为分类不同语言复杂性类别的第一种方法,而不仅仅是“big-O(whateverthehell)”。 它表明存在超出运行时计算的问题,在这种情况下,某些模型根本无法计算某些函数。* 这是关于自动机理论的形式证明的相当低级的介绍。

    大多数计算机科学专业的学生(我的同龄人)似乎热衷于避免的计算机科学的很大一部分是计算理论,这是一个明显属于泵引理的分类。

    希望显而易见的事实是,无论喜欢与否,计算理论都是计算机科学的基础。不掌握不同复杂性类别的概念(big-O 本身并不能削减它)不会意味着计算机科学家的死亡,但它会在他或她的视野中隐藏相当大的一部分领域。

    *是的,通常会首先显示停机问题,但他们从来没有第一次得到它。

    至于对你的问题的更愤世嫉俗的解释,你的意思是“任何软件真的使用这个吗?”,我的回答当然不是。它是计算基础的一部分,而不是其应用。这听起来并不是对它的应用不屑一顾,一点也不。两者具有同等的崇高价值。

    【讨论】:

    • 这是一个可爱的演讲,但它并没有回答这个问题:我在寻找它使用的真实世界的例子。
    • 也许你只见树木不见森林。 教育。或者你最好澄清一下“现实世界”是什么意思? :P
    猜你喜欢
    • 2013-01-20
    • 2017-12-19
    • 2012-11-04
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2012-08-03
    • 1970-01-01
    相关资源
    最近更新 更多