Transformació d’expressions regulars
Diem que dues expressions regulars p,q són equivalents (p\equiv q) si els llenguatges associats a p i a q (resp. L(p) i L(q)) són iguals. Per comprovar si dues expressions regulars p,q són equivalents, sempre podríem construir els DFAs associats i comprovar si accepten el mateix llenguatge. Això és car computacionalment.1
Aquest exercici tracta sobre l’equivalència d’expressions regulars basada en manipulacions algebraiques senzilles. Demostreu que per a qualssevol expressions regulars p, q i r:
- (p+q)^* \equiv p^*(qp^*)^*.
- p(qp)^* \equiv (pq)^*p.
- (p+q^*)^* \equiv (p+q)^*.
- Si p\equiv q, llavors pr \equiv qr i rp \equiv rq.
- Si L(q) \subseteq L(p), llavors p^*q^* \equiv q^*p^* \equiv p^*.
- p^* \equiv (\lambda + p)^* \equiv (\lambda + p)(p^*pp)^*.
- p^*pp + \lambda \equiv (p^*pp)^* \equiv (pp+ppp)^*.
- p^*(q+rp^*)^* \equiv (p+q^*r)^*q^*.
- (qq+qp+p)^*qpp^* \equiv p^*q(pp^*q+qp^*q)^*pp^*.
- (\lambda + b)a^*(b + bba^*)^* \equiv b^*(a + bb + bbb)^*b^*.
Per demostrar alguns apartats (especialment, els tres darrers), és útil aplicar equivalències prèvies.
Notes a peu de pàgina
Decidir si dues expressions regulars són equivalents és PSPACE-complet, és a dir, informalment, és entre els problemes decisionals més difícils que requereixen una quantitat polinòmica de memòria, però sense limitacions sobre el temps de càlcul.↩︎