UNIVERSIDADE FEDERAL DE
UBERLÂNDIA
Faculdade de Ciência da Computação
Disciplina : Linguagens Formais e Autômatos - 20 Semestre 2002
Professora : Sandra Aparecida de Amo
Material Suplementar sobre Autômatos
Como garantir que um autômato proposto reconhece uma linguagem dada
Considere a linguagem L = conjunto dos strings com um número par de zeros e um um
número ı́mpar de uns.
Vimos em sala de aula que um autômato candidato para reconhecer esta linguagem é o
seguinte :
0
q0
1
1
1
q1
0
1
0
q2
q3
0
Para termos certeza absoluta de que este autômato A realmente reconhece exatamente a
linguagem L, precisamos provar que :
L(A) = L
Para isto, precisamos mostrar duas coisas : L(A) ⊆ L e L ⊆ L(A).
1. Provemos que L(A) ⊆ L, isto é :
1
P1
Sempre que uma palavra w é reconhecida
pelo autômato A, isto é, sempre que leio uma
palavra w partindo de q0 e chegando em q0 ,
esta palavra necessariamente está em L, isto
é, tem um número par de zeros e um número
par de uns.
Vamos provar P1 por indução sobre o comprimento de w. Infelizmente, uma indução
simples não vai funcionar. Precisamos utilizar uma técnica, chamada de indução mútua.
Antes de continuar, é recomendado ao leitor estudar a seção 1.4.4, páginas 28,
29 e 30 do livro texto.
Esta técnica consiste em provar algo mais forte do que o queremos provar, isto é, algo que
inclui o que queremos provar. No nosso caso, vamos provar P1 ∧ P2 ∧ P3 ∧ P4 onde P1 é a
asserção acima especificada (a que realmente nos interessa) e P2 , P3 e P4 são as asserções
dadas abaixo. Tais asserções são secundárias mas são necessárias para a indução poder
funcionar.
P2
Sempre que leio uma palavra w partindo de
q0 e chegando em q1 , esta palavra tem um
número ı́mpar de zeros e um número par de
uns.
P3
Sempre que leio uma palavra w partindo de
q0 e chegando em q2 , esta palavra tem um
número ı́mpar de zeros e um número ı́mpar
de uns.
P4
Sempre que leio uma palavra w partindo de
q0 e chegando em q3 , esta palavra tem um
número par de zeros e um número ı́mpar de
uns.
2
Provemos, portanto, que P1 ∧ P2 ∧ P3 ∧ P4 é verdade, por indução sobre o comprimento
da palavra w.
Base da indução :
– comprimento de w = 0
Neste caso, w é a palavra vazia e a única possibilidade de ler w partindo de q0 é
chegando em q0 . Ora, é claro que w tem um número par (=0) de zeros e um número
ı́mpar (=0) de uns. Portanto, P1 se verifica e as outras Pi se verificam pois suas
hipóteses são falsas.
– comprimento de w = 1 e w = 0
Neste caso, a única possibilidade de ler w partindo de q0 é chegando em q1 . Ora,
é claro que w tem um número ı́mpar (=1) de zeros e um número par (=0) de uns.
Portanto, P2 se verifica e as outras Pi se verificam pois suas hipóteses são falsas.
– comprimento de w = 1 e w = 1
Neste caso, a única possibilidade de ler w partindo de q0 é chegando em q3 . Ora,
é claro que w tem um número par (=0) de zeros e um número ı́mpar (=1) de uns.
Portanto, P4 se verifica e as outras Pi se verificam pois suas hipóteses são falsas.
Hipótese de Indução : Seja n > 1 e suponhamos que P1 ∧ P2 ∧ P3 ∧ P4 se verifica para
palavras de comprimento < n.
Mostremos que P1 ∧ P2 ∧ P3 ∧ P4 se verifica para palavras de comprimento n.
Seja w uma palavra de comprimento n, onde n > 1. Temos dois casos a considerar :
(a) w termina em zero, isto é, w = w0 0. Quatro subcasos a considerar :
i. Leio w saindo de q0 e chegando em q0 (isto é, estou dentro da hipótese de P1 ).
Tenho que mostrar que w tem um número par de zeros e um número
par de uns.
Realmente, se w = w0 0 e leio w saindo de q0 e chegando em q0 , então :
δ̂(q0 ,w) = q0
Mas, por definição da função de leitura δ̂, temos :
δ̂(q0 ,w) = δ(δ̂(q0 ,w0 ),0) = q0
Ora, de qual estado eu devo partir para, lendo um zero, chegar em q0 ? A resposta,
obviamente é q1 . Portanto,
δ̂(q0 ,w0 ) = q1
Portanto, w0 é uma palavra de comprimento n − 1. Portanto, a hipótese de
indução se verifica para w0 . Repare que a única das Pi na qual w0 se encaixa é
3
P2 , pois leio w0 saindo de q0 e chegando em q1 . Assim, posso afirmar w0 tem um
número ı́mpar de zeros e um número par de uns. Portanto, w tem um número
par de zeros e um número par de uns. OK, consegui mostrar o que queria !
(Veja lá em cima).
ii. Leio w saindo de q0 e chegando em q1 (isto é, estou dentro da hipótese de P2 ).
Tenho que mostrar que w tem um número ı́mpar de zeros e um número
par de uns.
Realmente, se w = w0 0 e leio w saindo de q0 e chegando em q1 , então :
δ̂(q0 ,w) = q1
Mas, por definição da função de leitura δ̂, temos :
δ̂(q0 ,w) = δ(δ̂(q0 ,w0 ),0) = q1
Ora, de qual estado eu devo partir para, lendo um zero, chegar em q1 ? A resposta,
obviamente é q0 . Portanto,
δ̂(q0 ,w0 ) = q0
Portanto, w0 é uma palavra de comprimento n − 1. Portanto, a hipótese de
indução se verifica para w0 . Repare que a única das Pi na qual w0 se encaixa é
P1 , pois leio w0 saindo de q0 e chegando em q0 . Assim, posso afirmar w0 tem um
número par de zeros e um número par de uns. Portanto, w tem um número
ı́mpar de zeros e um número par de uns. OK, consegui mostrar o que
queria ! (Veja lá em cima).
iii. Leio w saindo de q0 e chegando em q2 (isto é, estou dentro da hipótese de P3 ).
Tenho que mostrar que w tem um número ı́mpar de zeros e um número
ı́mpar de uns.
Realmente, se w = w0 0 e leio w saindo de q0 e chegando em q2 , então :
δ̂(q0 ,w) = q2
Mas, por definição da função de leitura δ̂, temos :
δ̂(q0 ,w) = δ(δ̂(q0 ,w0 ),0) = q2
Ora, de qual estado eu devo partir para, lendo um zero, chegar em q2 ? A resposta,
obviamente é q3 . Portanto,
δ̂(q0 ,w0 ) = q3
Portanto, w0 é uma palavra de comprimento n − 1. Portanto, a hipótese de
indução se verifica para w0 . Repare que a única das Pi na qual w0 se encaixa é
4
P4 , pois leio w0 saindo de q0 e chegando em q3 . Assim, posso afirmar w0 tem um
número par de zeros e um número ı́mpar de uns. Portanto, w tem um número
ı́mpar de zeros e um número ı́mpar de uns. OK, consegui mostrar o que
queria ! (Veja lá em cima).
iv. Leio w saindo de q0 e chegando em q3 (isto é, estou dentro da hipótese de P4 ).
Tenho que mostrar que w tem um número par de zeros e um número
ı́mpar de uns.
Realmente, se w = w0 0 e leio w saindo de q0 e chegando em q3 , então :
δ̂(q0 ,w) = q3
Mas, por definição da função de leitura δ̂, temos :
δ̂(q0 ,w) = δ(δ̂(q0 ,w0 ),0) = q3
Ora, de qual estado eu devo partir para, lendo um zero, chegar em q3 ? A resposta,
obviamente é q2 . Portanto,
δ̂(q0 ,w0 ) = q2
Portanto, w0 é uma palavra de comprimento n − 1. Portanto, a hipótese de
indução se verifica para w0 . Repare que a única das Pi na qual w0 se encaixa
é P3 , pois leio w0 saindo de q0 e chegando em q2 . Assim, posso afirmar w0 tem
um número ı́mpar de zeros e um número ı́mpar de uns. Portanto, w tem um
número par de zeros e um número ı́mpar de uns. OK, consegui mostrar
o que queria ! (Veja lá em cima).
(b) w termina em um, isto é, w = w0 1. Quatro subcasos a considerar :
i. Leio w saindo de q0 e chegando em q0 (isto é, estou dentro da hipótese de P1 ).
Tenho que mostrar que w tem um número par de zeros e um número
par de uns.
Realmente, se w = w0 1 e leio w saindo de q0 e chegando em q0 , então :
δ̂(q0 ,w) = q0
Mas, por definição da função de leitura δ̂, temos :
δ̂(q0 ,w) = δ(δ̂(q0 ,w0 ),1) = q0
Ora, de qual estado eu devo partir para, lendo um 1, chegar em q0 ? A resposta,
obviamente é q3 . Portanto,
δ̂(q0 ,w0 ) = q3
5
Portanto, w0 é uma palavra de comprimento n − 1. Portanto, a hipótese de
indução se verifica para w0 . Repare que a única das Pi na qual w0 se encaixa é
P4 , pois leio w0 saindo de q0 e chegando em q3 . Assim, posso afirmar w0 tem um
número par de zeros e um número ı́mpar de uns. Portanto, w tem um número
par de zeros e um número par de uns. OK, consegui mostrar o que queria !
(Veja lá em cima).
ii. Leio w saindo de q0 e chegando em q1 (isto é, estou dentro da hipótese de P2 ).
Tenho que mostrar que w tem um número ı́mpar de zeros e um número
par de uns.
Realmente, se w = w0 1 e leio w saindo de q0 e chegando em q1 , então :
δ̂(q0 ,w) = q1
Mas, por definição da função de leitura δ̂, temos :
δ̂(q0 ,w) = δ(δ̂(q0 ,w0 ),1) = q1
Ora, de qual estado eu devo partir para, lendo um 1, chegar em q1 ? A resposta,
obviamente é q2 . Portanto,
δ̂(q0 ,w0 ) = q2
Portanto, w0 é uma palavra de comprimento n − 1. Portanto, a hipótese de
indução se verifica para w0 . Repare que a única das Pi na qual w0 se encaixa
é P2 , pois leio w0 saindo de q0 e chegando em q2 . Assim, posso afirmar w0 tem
um número ı́mpar de zeros e um número ı́mpar de uns. Portanto, w tem um
número ı́mpar de zeros e um número par de uns. OK, consegui mostrar
o que queria ! (Veja lá em cima).
iii. Leio w saindo de q0 e chegando em q2 (isto é, estou dentro da hipótese de P3 ).
Tenho que mostrar que w tem um número ı́mpar de zeros de uns e
um número ı́mpar de uns.
Realmente, se w = w0 0 e leio w saindo de q0 e chegando em q2 , então :
δ̂(q0 ,w) = q2
Mas, por definição da função de leitura δ̂, temos :
δ̂(q0 ,w) = δ(δ̂(q0 ,w0 ),1) = q2
Ora, de qual estado eu devo partir para, lendo um 1, chegar em q2 ? A resposta,
obviamente é q1 . Portanto,
δ̂(q0 ,w0 ) = q1
6
Portanto, w0 é uma palavra de comprimento n − 1. Portanto, a hipótese de
indução se verifica para w0 . Repare que a única das Pi na qual w0 se encaixa é
P1 , pois leio w0 saindo de q0 e chegando em q1 . Assim, posso afirmar w0 tem um
número ı́mpar de zeros e um número par de uns. Portanto, w tem um número
ı́mpar de zeros e um número ı́mpar de uns. OK, consegui mostrar o que
queria ! (Veja lá em cima).
iv. Leio w saindo de q0 e chegando em q3 (isto é, estou dentro da hipótese de P4 ).
Tenho que mostrar que w tem um número par de zeros e um número
ı́mpar de uns.
Realmente, se w = w0 1 e leio w saindo de q0 e chegando em q3 , então :
δ̂(q0 ,w) = q3
Mas, por definição da função de leitura δ̂, temos :
δ̂(q0 ,w) = δ(δ̂(q0 ,w0 ),1) = q3
Ora, de qual estado eu devo partir para, lendo um 1, chegar em q3 ? A resposta,
obviamente é q0 . Portanto,
δ̂(q0 ,w0 ) = q0
Portanto, w0 é uma palavra de comprimento n − 1. Portanto, a hipótese de
indução se verifica para w0 . Repare que a única das Pi na qual w0 se encaixa é
P1 , pois leio w0 saindo de q0 e chegando em q0 . Assim, posso afirmar w0 tem um
número par de zeros e um número par de uns. Portanto, w tem um número
par de zeros e um número ı́mpar de uns. OK, consegui mostrar o que
queria ! (Veja lá em cima).
2. Provemos que L ⊆ L(A), isto é, que toda palavra com um número par de zeros e um
número par de 1s é reconhecida pelo autômato A, isto é, consigo ler a palavra percorrendo
o autômato saindo de q0 e chegando em q0 .
Novamente, somos obrigados a utilizar uma indução mútua, isto é, provar algo mais forte
do que o que realmente queremos. Vamos mostrar Q1 ∧ Q2 ∧ Q3 ∧ Q4 , onde :
Q1
Se uma palavra w tem um número par de
zeros e um número par de uns então consigo
ler esta palavra partindo de q0 e chegando em
q0 .
7
Q2
Se uma palavra w tem um número par de zeros e um número ı́mpar de uns então consigo
ler esta palavra partindo de q0 e chegando em
q1 .
Q3
Se uma palavra w tem um número ı́mpar de
zeros e um número par de uns então consigo
ler esta palavra partindo de q0 e chegando em
q3 .
Q4
Se uma palavra w tem um número ı́mpar
de zeros e um número ı́mpar de uns então
consigo ler esta palavra partindo de q0 e chegando em q2 .
Repare que o que realmente nos interessa é Q1 . Mas se provarmos que Q1 ∧ Q2 ∧ Q3 ∧ Q4
se verifica para qualquer palavra, então em particular Q1 se verifica.
Exercı́cio 1 Mostre Q1 ∧ Q2 ∧ Q3 ∧ Q4 por indução (mútua) sobre o comprimento de w.
Exercı́cio 2 Considere a linguagem L = strings que contém o substring 01. Considere o
autômato A que vimos em sala de aula, isto é :
0
q0
1
0
q2
0
1
q1
1
Mostre que L(A) = L.
8
Download

Linguagem reconhecida por autômato finito dado