Você está na página 1de 22

LINGUAGENS FORMAIS E

AUTÔMATOS
--- LINGUAGENS NÃO
REGULARES ---
Princípio da Casa dos Pombos
Motivação
A forma de provar que uma linguagem é regular é através da
simples geração de um AFDs/AFNs/ERs. Mas e quando não
conseguimos gerar AFDs/AFNs/ERs?
Algumas linguagens são facilmente identificadas como regulares,
como por exemplo:
! = 0$ ∶ & ≥ 1
) = 1$ ∶ & ≥ 1
!) = 0$ 1* : &, - ≥ 1
Motivação

As linguagens abaixo não são regulares. Em princípio, a razão é


que os AF não sabem contar e armazenar essa contagem
! = 0$ 1$ : ' ≥ 1
) = * ∈ 0,1 ∗ ∶ * = *
/ 0

Entretanto, a linguagem abaixo é regular e existe uma contagem


1 = {* ∈ 0,1 ∗ ∶ * tem número igual de ocorrências de 01 e 10}
Se for só ficar no aspecto contagem, então você diria que não é
regular, mas ela é sim. Faça um AFD, AFN ou ER para ela.
Motivação

Considere o seguinte AFD

Note que a linguagem consiste cadeias de tamanho 2 ou 3 (finita)


Certamente a linguagem acima é regular porque é finita
Motivação

Considere o seguinte AFD

Note que a linguagem consiste cadeias de tamanho 2 ou 3 (finita)


Certamente a linguagem acima é regular porque é finita
Focaremos em linguagens infinitas
Princípio da Casa dos Pombos

Se ! pombos devem ser postos em " casas e ! > ", então pelo
menos uma casa irá conter mais de um pombo
Princípio da Casa dos Pombos

Se ! pombos devem ser postos em " casas e ! > ", então pelo
menos uma casa irá conter mais de um pombo
Princípio da Casa dos Pombos

Se ! pombos devem ser postos em " casas e ! > ", então pelo
menos uma casa irá conter mais de um pombo
Princípio da Casa dos Pombos

Se ! pombos devem ser postos em " casas e ! > ", então pelo
menos uma casa irá conter mais de um pombo

Os pombos correspondem à cadeia de entrada e as casinhas


correspondem aos estados do autômato

Mas o que isso tem a ver com provar se uma linguagem é regular?
Motivação

Considere o seguinte AFD

Algumas cadeias (não todas)


!" = 100
!& = 0011001000
!' = 0011001001001000
!( = 0011000
Motivação

!" = 100
" ) )
!" = &" → &( → &* → &+
Este é o número mínimo de estados até o estado de aceitação
Motivação

!" = 100
" ) )
!" = &" → &( → &* → &+
!( = 0011001000
) ) " " ) ) " ) ) )
!( = &" → &" → &" → &( → &( → &* → ,- → &( → &* → ,- → ,-
Motivação

!" = 100
" ) )
!" = &" → &( → &* → &+
!( = 0011001000
) ) " " ) ) " ) ) )
!( = &" → &" → &" → &( → &( → &* → &+ → &( → &* → &+ → &+
!* = 0011001001001000
) ) " " ) ) " ) ) "
!* = &" → &" → &" → &( → &( → &* → ,- → &( → &* → ,- → &(
) ) " ) ) )
→ &* → ,- → &( → &* → ,- → ,-
Motivação

!" = 100
" ) )
!" = &" → &( → &* → &+
!( = 0011001000
) ) " " ) ) " ) ) )
!( = &" → &" → &" → &( → &( → &* → &+ → &( → &* → &+ → &+
!* = 0011001001001000
) ) " " ) ) " ) ) "
!* = &" → &" → &" → &( → &( → &* → &+ → &( → &* → &+ → &(
) ) " ) ) )
→ &* → &+ → &( → &* → &+ → &+

!+ = 0011000
) ) " " ) ) )
!+ = &" → &" → &" → &( → &( → &* → ,- → ,-
Motivação
É possível dividir as cadeias em )*+, sendo que ) e + podem
ocorrer 0 ou 1 vez

!" = 100 = ) , *" + ,

!& = 0011001000 = )*"+

!' = 0011001001001000 = )*'+

!( = 0011000 = )*,+

E se tiver uma cadeia -./0 1 ela vai ou não pertencer a linguagem?


Poderia ser dividido de outras formas? Sim
Motivação

É possível representar uma linguagem com infinitas


cadeias usando um autômato de estados finitos sem
ciclos?
R: NÃO! Se a linguagem é infinita, certamente tem
ciclos, e existe uma cadeia que é repetida
ciclicamente
Motivação
yj

... ... ...


x1 x2 xi-1 xi y1 y2 yj-1 z1 z2 zk-1 zk

w1 = x1 x2 ... xi-1 xi y1 y2 ... yj-1 z1 z2 ... zk


Motivação
yj

... ... ...


x1 x2 xi-1 xi y1 y2 yj-1 z1 z2 zk-1 zk

w1 = x1 x2 ... xi-1 xi y1 y2 ... yj-1 z1 z2 ... zk


w2 = x1 x2 ... xi-1 xi y1 y2 ... yj-1 y1 y2 ... yj-1 yj z1 z2 ... zk

Implica que eu posso repetir esse ciclo ! vezes


Motivação

Há um ciclo que se repete


!" = 0011001001001000
) ) ' ' ) )
!" = &' → &' → &' → &* → &* → &" → &+
' ) )
→ &* → &" → ,-
' ) )
→ &* → &" → ,-
' ) )
→ &* → &" → ,-
)
→ &+

Vai de &+ e retorna ao &+


Motivação
A ideia é que se eu saí de um estado ! e sigo outros estados e
chego no mesmo estado !, isto indica que o trecho pode ser
repetido inúmeras vezes
! ⋯⋯⋯!⋯⋯⋯!⋯
Motivação
A ideia é que se eu saí de um estado ! e sigo outros estados e
chego no mesmo estado !, isto indica que o trecho pode ser
repetido inúmeras vezes
! ⋯⋯⋯!⋯⋯⋯!⋯

Os pombos correspondem à cadeia de entrada e as casinhas


correspondem aos estados do autômato

Você também pode gostar