União de duas linguagens regulares

Fonte: testwiki
Revisão em 00h56min de 28 de março de 2013 por imported>KLBot2 (Bot: A migrar 1 interwikis, agora providenciados por Wikidata em d:Q7886764)
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Saltar para a navegação Saltar para a pesquisa

Na teoria das linguagens formais, e em particular na teoria dos autômatos finitos não determinísticos, é conhecido que a união de duas linguagens regulares é uma linguagem regular. Este artigo fornece uma prova desta afirmação.

Teorema

Para quaisquer linguagens regulares L1 e L2, a linguagem L1L2 é regular.

Prova

Uma vez que L1 e L2 são regulares, existem AFNs N1, N2 que reconhecem L1 e L2.

Seja

N1=(Q1, Σ, T1, q1, A1)
N2=(Q2, Σ, T2, q2, A2)

Vamos construir

N=(Q, Σ, T, q0, A1A2)

onde

Q=Q1Q2{q0}
T(q,x)={T1(q,x)seqQ1T2(q,x)seqQ2{q1,q2}seq=q0 e x=ϵseq=q0 e xϵ

Em seguida, vamos usar px,Tq para denotar qE(T(p,x))

Seja w uma string de L1L2. Sem perda de generalidade, assumimos wL1.

Seja w=x1x2xm onde m0,xiΣ

Uma vez que N1 aceita x1x2xm, existem r0,r1,rmQ1 tais que

q1ϵ,T1r0x1,T1r1x2,T1r2rm1xm,T1rm,rmA1

Desde que T1(q,x)=T(q,x) qQ1xΣ

r0E(T1(q1,ϵ))r0E(T(q1,ϵ))
r1E(T1(r0,x1))r1E(T(r0,x1))
rmE(T1(rm1,xm))rmE(T(rm1,xm))


Nós podemos, portanto, substituir T por T1 e rescrever o caminho acima como:


q1ϵ,Tr0x1,Tr1x2,Tr2rm1xm,Trm,rmA1A2,r0,r1,rmQ


Além disso,

T(q0,ϵ)={q1,q2}q1T(q0,ϵ)q1E(T(q0,ϵ))q0ϵ,Tq1

e

q0ϵ,Tq1ϵ,Tr0q0ϵ,Tr0


O caminho acima pode ser reescrito como:


q0ϵ,Tr0x1,Tr1x2,Tr2rm1xm,Trm,rmA1A2,r0,r1,rmQ


Portanto, N aceita x1x2xm e a prova está concluída.


Nota: A ideia extraída desta prova matemática para construção de uma máquina para reconhecer L1L2 é criar um estado inicial e conectá-lo aos estados iniciais de L1 e L2 usando transições vazias (ϵ).

Referências

  • Michael Sipser, Introduction to the Theory of Computation ISBN 0-534-94728-X. (Teorema 1.22, seção 1.2, pg. 59.)