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


11

甲定期expresssion递归定义

  1. a对某些a∈Σ是正则表达式,
  2. ε是一个正则表达式,
  3. ∅是一个正则表达式,
  4. (R1∪R2),其中R1和R2是正则表达式是一个正则表达式,
  5. (R1∘R2),其中R1和R2是正则表达式是一个正则表达式,
  6. (R1)∗其中R1是正则表达式是正则表达式。

该定义摘自第64页的

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

现在,我有以下问题。

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

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 )∘∗∩x∗x∈XL(a∘b)={ab}L={a,b}L=L(R)对于某些表达与改性第四项,则如果(因此一个≠ b) { 一个,b } ⊆ 大号⇒ 一个b ∈ 大号。 通过对表达式 R的归纳来证明。对于基本情况,它保持真空状态,现在假设它适用于 L (R 1),L (R 2)。如果大号= 大号([R 1 ∩- [R 2)= 大号([R 1)∩ 大号({ 一个,b } ⊆ 大号([R 1 ∘ - [R 2X={a,b}a≠b

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

备注:一个常用的结论:如果,则u = a或w = 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}∗=(a∗∘b∗)∗
— rici

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

10

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

这个问题可能会出现给读者,为什么我们选择特定的三种操作E∨F,EF和E∗F?

(不久之后,我们注意到E∗比E∗F更方便算子,并且具有同等的功率。因此,如今,我们改用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.