无限的语言不能规律吗?什么是有限语言?

时间:2013-07-01 19:54:37

标签: regular-language finite-automata formal-languages computability kleene-star

我在一本关于可计算性的书中读到了这个:

  

(Kleene定理)一种语言是正常的,当且仅当它是可以的   通过应用三个运算联盟从有限语言获得,   连接,重复次数有限。

我正在努力学习“有限语言”。

请考虑以下语言:L = a*

它不是有限的。它是集合{0, a, aa, aaa, ...},它显然是一个无限集(0 =空字符串)。

所以这是一种无限的语言,对吗?也就是说,“无限集”意味着“无限语言”,对吧?

显然,a*是一种常用语言。它是一种无限的语言。因此,通过Kleene的定理,它不能成为常规语言。矛盾。

我很困惑。我想我不知道“有限语言”是什么意思。

4 个答案:

答案 0 :(得分:3)

你走在正确的轨道上,它可能更清晰。 Kleen定理表达了三个陈述的等价性

语言是常规的==语言可以用正则表达式表示==语言可以用有限自动机表示。

你的例子确实是一种常用语言。有限的语言是你所期望的,一种可以在有限的时间内列出的语言。

当他们谈论重复时,他们正在讨论Kleen Star操作,这正是a*代表的集合{empty, a, aa, aaa, aaaa, ...}

编辑:

我发现this link: Kleenes Theorem有很多帮助。它通过'重复'来表示Kleen Star,那么原始陈述是有道理的。 a*Kleen_Star(a)

答案 1 :(得分:3)

很快,你的发言就说:

  

当且仅当有正则表达式时,语言才是正常的。


“可以通过应用三个运算联合,连接,重复有限次数从有限语言中获得”部分基本上是正则表达式的快速语言定义。通常,从以下基本情况开始正式定义正则表达式(RE):

  • ∅(空集)是RE
  • ε(空字符串)是RE
  • a 是RE,其中 a 在字母表中

这些都是有限语言。然后我们通过应用以下三个递归规则来获取其他RE 有限次数

  • A | B 是一个RE,其中 A B 都是RE
  • AB 是一个RE,其中 A B 都是RE
  • A * 是RE,其中 A 是RE

最后,您可以使用有限描述(正则表达式)创建无限语言。

答案 2 :(得分:2)

有限语言是一种包含有限数量单词的语言。最简单的情况是那些根本不包含任何单词的情况,空字符串和由单个符号组成的单个字符串(例如,在您的示例中为a)。

我认为你的混淆来自于误读了你所引用的规则(就像那些评论这个问题的人一样)。

  

(Kleene定理)当且仅当它可以通过应用三个运算联合,连接,重复有限次数从有限语言获得时,语言是常规的。

该段落并未讨论在一种语言中创建所有字符串所需的字符串操作数,而是关于定义所定义语言所需的更简单语言的操作数。您提到的语言是通过以有限语言(集合{“a”})开始并应用重复运算符一次构建的。

一种不同且不那么直接的方式,不是语言和语言操作,而是表达语言的表达式和组合它们的更复杂的表达:当且仅当它可以用常规表示时,语言是常规的表达式包含有限数量的运算符。

采用类似a的表达式,表示只包含单个单词“a”的有限语言。我们可以向该表达式添加一个重复运算符,我们得到a*,这是一种无限语言,包含来自第一语言的零个或多个单词的每个串联。每个有限表达式 E 我们可以通过从表示有限语言的表达式开始并通过使用模式组合一个或两个较小的表达式 F G 来构建< em> E = F | G E = FG E = F * 将表示常规语言。当表达式用规则表达规则时,表达有限语言(具有有限数量的单词的语言)的表达是基本情况;有限的语言是直接用语言表达规则的基本情况,没有任何偏离表达 - 土地。

如果我们允许联合,连接和重复无限次地应用(或者等效地,如果我们允许使用常规表达式的规则的无限表达式),则不能保证生成的语言是正常的。这是观察的常规语言层面的类比,无限大的无上下文语法可以定义非上下文语言,如van Wijngaarden语法所示。

答案 3 :(得分:0)

无限语言是指具有无限等价类的集合。然而,a *语言只有一个等价类,因此它成为一种有限的语言。