为什么用联合,串联和星号运算定义正则表达式?


11

定期expresssion递归定义

  1. a对某些aΣ是正则表达式,
  2. ε是一个正则表达式,
  3. 是一个正则表达式,
  4. (R1R2),其中R1R2是正则表达式是一个正则表达式,
  5. (R1R2),其中R1R2是正则表达式是一个正则表达式,
  6. (R1)其中R1是正则表达式是正则表达式。

该定义摘自第64页的

西普瑟,迈克尔。计算理论导论,第三版。参与学习,2012年。

现在,我有以下问题。

  • 为什么不定义包含intersectioncomplement或者reverse操作?
  • 如果我们改变了第4项,我们得到一个等价定义,即,对于每个普通的语言,有修改的正则表达式,反之亦然?R1R2
  • 我知道此定义是完整且定义明确的,但是为什么它比其他等效的,定义良好且完整的定义更可取呢?

2
请限制每个帖子一个问题。
拉斐尔

Answers:


16

1)如果我们也允许相交和补码,那么所得的表达式有时称为扩展正则表达式; 由于常规语言是在布尔操作下关闭的,因此它们无法获得任何收益。它只是语法糖。对于反向操作也有类似的结论。首先不提及所有其他运算的部分原因是为了使定义尽可能简单,从而使(归纳)证明不必在许多情况下得到照顾。另一个原因可能是,如果我们允许某些操作,但不允许其他操作,则在某些情况下会导致截然不同的(次正则)语言类,例如,如果我们考虑不使用star运算符的扩展正则表达式,则将获得正则子类的适当子类。 ,即所谓的无星级或非周期性语言,请参阅Wikipedia:无星级语言

2)如果保留第1.-6.项,而只是更改第4.项,则使用交集而不是并集,我们将获得适当的常规语言子类。例如,我们不再描述语言,因为它将涉及{ a }{ b }的并集(请参见下面的证明)。如果我们允许互补,那么随着我们根据DeMorgan的法律回归,情况会发生变化。L={a,b}{a}{b}

3)这在1)中得到了我的部分回答,但是当您说首选此定义时,您的意思是什么?我知道在哪里2.省略(因为我们有通过6.定义),或3中省略(因为我们有= 大号¯ X * )),或两者都省略; 因此,这不是一个最小的可能定义(它还为我们提供了一些语法糖,因为我们有多余的符号来描述{ ε })。L()={ε}=L(X¯{ε}

编辑:在2我第一个提到的评论)是错误的,在根据感应关闭语言*不neccessarily是子集X *对于一些X X,例如考虑大号b = { b }。然而,我们有这样的表达式无法描述L = { a b }。我将给出一个证明,即如果L = L R xxXL(ab)={ab}L={a,b}L=L(R)对于某些表达与改性第四项,则如果(因此一个b { 一个b } 大号一个b 大号 通过对表达式 R的归纳来证明。对于基本情况,它保持真空状态,现在假设它适用于 L R 1L R 2。如果大号= 大号[R 1- [R 2= 大号[R 1大号{ 一个b } 大号[R 1- [R 2X={a,b}ab

{a,b}LabL.
RL(R1),L(R2) { 一个b } 大号,然后 { 一个b } 大号ř = 1 2,因此由感应假设我们有一个b 大号[R 1大号- [R 2。如果L=L(R1R2)=L(R1)L(R2){a,b}L{a,b}L(Ri),i=1,2abL(R1)L(R2)然后作为一个= 一个·&ε = ε ·&一个我们必须有一个大号[R 1 ε 大号R 2,反之亦然。假设第一种情况。如果 b 大号{a,b}L(R1R2)=L(R1)L(R2)a=aε=εaaL(R1)εL(R2),然后一个b 大号[R 1通过感应假设,因此一个b = 一个b ·&ε 大号[R 1大号- [R 2。现在假定 b 大号- [R 2,那么我们有一个b 大号- [R 2大号- [R 2通过的定义bL(R1)abL(R1)ab=abεL(R1)L(R2)bL(R2)abL(R2)L(R2)。最后,如果一个b 大号[R * 1,然后一个大号[R 1 ñ b 大号- [R 2 一段 Ñ > 0。如果 Ñ = = 1,我们发现一个b 大号řL(R1)L(R2)a,bL(R1)aL(R1)nbL(R2)mn,m>0n=m=1通过感应假设,所以假设 Ñ > 1,但是这给一个大号[R 1,类似于任一= 1> 1给出 b 大号[R 1和感应的假设给出一个b 大号[R 1大号[R * 1abL(R1)n>1aL(R1)m=1m>1bL(R1)abL(R1)L(R1)

备注:一个常用的结论:如果,则u = aw = a。如下1 = | 一个| = | ü w ^ | = | ü | + | w | ,因此| ü | = 0| w | = 1| ü | = 1| w | =a=uwu=aw=a1=|a|=|uw|=|u|+|w||u|=0|w|=1|u|=1。在第一种情况下,我们有 u = ε,因此有a = w|w|=0u=εa=w


2
事实上是不在集合中的“subregular”语言,但{ 一个b } *是因为{ 一个b } * = 一个*b **{a,b}{a,b}{a,b}=(ab)
rici

是的,有时候看到星号和其他星体的巧妙组合可以表达什么,而不是表达什么,这有点棘手。
StefanH '16

10

引入了正则语言,正则表达式和有限自动机的技术报告在第70页上询问您的问题:

这个问题可能会出现给读者,为什么我们选择特定的三种操作EFEFEF

(不久之后,我们注意到EEF更方便算子,并且具有同等的功率。因此,如今,我们改用E。)

答案占几页。首先,要指出的是,必须寻找答案,即所得的语言是否构成一个有趣的类,以及它们如何与其他方式描述的语言进行比较。在第72页上,注意到否定和合取是多余的:它们不增加任何表达能力。在第80页上,进一步证明了常规语言正是有限状态机识别的语言。

换句话说:Stefan的答案可以肯定地认为是结论性的,因为在首次介绍这些概念的报告中已经给出了答案。


感谢您的链接。我总是向学生解释,这些操作是从选择(如if-then-else)序列(彼此遵循的指令)和迭代(如while-do)的自然抽象。但是显然克莱恩没有提到吗?
亨德里克

我只是一个看着Kleene的文章的人,惊讶于我回答中的所有内容已经在那里。我什么都不知道 因此,我想答案是阅读这篇文章,或者寻找Kleene之前在此上写的任何内容。
reinierpost

4

通过选择这种运算符(联合,串联和星号),可以构造一个NFA,其大小与表达式的大小成线性关系。另一方面,如果添加交集和补码,则等效自动机的大小可能会非基本爆炸,这通常是不希望的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.