Upload
internet
View
109
Download
3
Embed Size (px)
Citation preview
Revisão AutômatosRevisão Autômatos
Teoria da ComputaçãoTeoria da ComputaçãoPós-graduação em Ciência da Pós-graduação em Ciência da
Computação – UFUComputação – UFUProfa. Sandra de AmoProfa. Sandra de Amo
Como detectar se uma Como detectar se uma linguagem não é regular ?linguagem não é regular ?
Seja L uma linguagem regular
q0
qf
qs
q1
q2 qi qj
Existe autômato A tal que L(A) = L
A = ({q0,…,qn-1}, S, δ, q0,F)
w = a1 a2 a3 a4 … ak palavra de L
a1
a2
a3 a4
ak
Como detectar se uma Como detectar se uma linguagem não é regular ?linguagem não é regular ?
q0
qf
qs
q1
q2 qi qj
a1
a2
a3 a4
ak
Qual o comprimento máximo de w para que todos os estados percorridos sejam distintos ?
O caminho percorrido tem no máximo n estados
Logo w tem no máximo comprimento n-1
Como detectar se uma Como detectar se uma linguagem não é regular ?linguagem não é regular ?
q0
q1
q2 qi
a1
a2
a3
a4
qf
qs
ak
E se comprimento de w for maior ou igual a n ?
O caminho percorrido terá estados repetidos
q2q2
Seja q2 o primeiro estado que se repete futuramente e tal que não existem estados repetidos entre as duas ocorrências de q2
sem estados intermediários repetidos
Como detectar se uma Como detectar se uma linguagem não é regular ?linguagem não é regular ?
q0
q1
q2 qi
a1
a2
a3
a4
qf
qs
ak
E se comprimento de w for maior ou igual a n ?
O caminho percorrido terá estados repetidos
w = a1a2a3a4…ak
a1a2 … ak
a1a2 a3a4 a3a4…ak
a1a2 a3a4 a3a4 a3a4…ak
w =
y z
ak
x
a3 a4 … aka1a2
q0
q1
q2 qi
a1
a2
a3
a4
qf
qs
ak
w =
y z
ak
x
a3 a4 … aka1a2
|x y| ≤ n
e |y| > 0
O caminho percorrido pela palavraxy tem no máximo um estado repetido (q2)
Logo, total de estados percorridos pela palavra é no máximo n+1.Portanto a palavra xy tem comprimento máximo n
|y| = comprimento do caminhopercorrido no laço (q2... qi ... q2)O número mínimo de estados dentrodo laço é zero, o que produziria |y| = 1Logo |y| > 0
Como detectar se uma Como detectar se uma linguagem não é regular ?linguagem não é regular ?
• Se L é regular e w pertence a L eSe L é regular e w pertence a L e
|w| ≥ n, então:|w| ≥ n, então:– w = w = xx yy zz – |x y| ≤ n |x y| ≤ n – | y | > 0| y | > 0– xx yykk zz pertence a L para todo k ≥ 0 pertence a L para todo k ≥ 0
Como detectar se uma Como detectar se uma linguagem não é regular ?linguagem não é regular ?Se L é regularSe L é regular entãoentão
• ExisteExiste n > 0 (n = número de estados do automato minimal n > 0 (n = número de estados do automato minimal que aceita L) tal que:que aceita L) tal que:
• Para todaPara toda palavra w de L com |w| ≥ n palavra w de L com |w| ≥ n
• ExisteExiste uma maneira de dividir w em 3 partes uma maneira de dividir w em 3 partes w = w = xx yy zz
| | xx y y || ≤ n, |y| > 0≤ n, |y| > 0• Para todoPara todo k ≥ 0 k ≥ 0
xx yykk z z pertence a Lpertence a L
Como detectar se uma Como detectar se uma linguagem não é regular ?linguagem não é regular ?Se a expressão abaixo nao se verificaSe a expressão abaixo nao se verifica • ExisteExiste n > 0 (n = número de estados do automato minimal que n > 0 (n = número de estados do automato minimal que
aceita L) tal que:aceita L) tal que:
• Para todaPara toda palavra w de L com |w| ≥ n palavra w de L com |w| ≥ n
• ExisteExiste uma maneira de dividir w em 3 partes uma maneira de dividir w em 3 partes w = w = xx yy zz
| | xx y y || ≤ n, |y| > 0≤ n, |y| > 0• Para todoPara todo k ≥ 0 k ≥ 0
xx yykk z z pertence a Lpertence a L
entãoentão L não é regular L não é regular
Para mostrar que L não é regular basta Para mostrar que L não é regular basta mostrar que a expressao abaixo é mostrar que a expressao abaixo é falsa !falsa !• ExisteExiste n > 0 (n = número de estados do automato minimal n > 0 (n = número de estados do automato minimal
que aceita L) tal que:que aceita L) tal que:
• Para todaPara toda palavra w de L com palavra w de L com |w| ≥ n|w| ≥ n
• ExisteExiste uma maneira de dividir w em 3 partes uma maneira de dividir w em 3 partes w = w = xx yy zz
| | xx y y || ≤ n, |y| > 0≤ n, |y| > 0
• Para todoPara todo k ≥ 0 k ≥ 0 xx yykk z z pertence a Lpertence a L
Para mostrar que L não é regular basta Para mostrar que L não é regular basta mostrar que a expressao abaixo é mostrar que a expressao abaixo é falsa !falsa !
• Para todoPara todo n > 0 n > 0
• ExisteExiste palavra w de L com palavra w de L com |w| ≥ n|w| ≥ n
• Para todaPara toda maneira de dividir w em 3 partes maneira de dividir w em 3 partes w = w = xx yy zz
| | xx y y || ≤ n, |y| > 0≤ n, |y| > 0
• ExisteExiste k ≥ 0 k ≥ 0 xx yykk z z nãonão pertence a Lpertence a L
ExemploExemploL = {0L = {0kk 1 1kk | k ≥ 0} nao é regular | k ≥ 0} nao é regular
Para todoPara todo n > 0 n > 0Tenho de exibir umaTenho de exibir uma palavra w de L com palavra w de L com |w| ≥ n|w| ≥ nTal que Tal que para toda maneirapara toda maneira de dividir w em 3 partes de dividir w em 3 partes
w = w =
com a parte com a parte | | xx y y || ≤ n, |y| > 0≤ n, |y| > 0
ExisteExiste um k tal que x y um k tal que x ykk z não está em L. z não está em L.
X y z
ExemploExemplo
0 0 0 0 11 1
n vezes n vezes
0 0 1 1 110
0
n vezesm vezes, m > n
… …
……
Não está em L
10
0
0 0
x y z
x y y z