繁体   English   中英

是否有任何使用“真实”语言抽吸引理的例子?

[英]Are there any examples of pumping lemmas with “real” languages?

抽取引理常规语言和无上下文 语言的属性。 但我见过的所有例子都是这样的:

L = {0 n 1 n 2 n :n≥0}

(顺便说一句,这不是一种无上下文的语言)。

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

L = {0 n 1 n :n≥0}是无上下文的语言。

表达式中的括号匹配可以被认为是类似的形式,即

L = {( nn :n≥0}

这个python程序是有效的:

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

以及右侧等量(左侧和右侧)所有其他等效语句。

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

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

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

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

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

人力资源管理。 什么是实际应用? 你明智地标记了你的问题“计算机科学”。 所以我想你的问题是要问,“计算机科学是否实用?

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

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

大多数计算机科学专业学生(我的同学)似乎都非常希望避免使用的计算机科学的很大一部分是计算理论,这是一种抽取引理明显属于的分类。

有希望的显而易见的事实是,计算理论,无论喜欢与否,都是计算机科学的基础。 不了解不同复杂性类别的想法(big-O本身并没有削减它)不会拼写计算机科学家的死亡,但它会隐藏相当一部分的领域,从他或她的角度来看。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM