Você está na página 1de 9

Lista 2

MAC4722 - Linguagens, Autômatos e Computabilidade

Carlos Eduardo Leal de Castro∗

1 (c). Projete um autômato finito determinı́stico que reconheça a linguagem das palavras
que em toda posição ı́mpar possui 1, sobre o alfabeto Σ = {0, 1}.
Solução. Considere o autômato M = (Q, Σ, δ, q1 , F ) onde

1. Q = {q1 , q2 , q3 },
2. Σ = {0, 1},
3. δ : Q × Σ∗ −→ Q definida como no diagrama abaixo:

Assim, podemos definir a função δ como disposto na tabela:

δ 0 1
q1 q2 q3
q2 q2 q2
q3 q1 q1

4. q1 : estado inicial e
5. F = {q1 , q3 } estados de aceitação.

Aluno de Doutorado - NUSP: 11921804 - E-mail: carlos.castro@ime.usp.br

1
2. Projete um autômato finito não-determinı́stico que reconheça a linguagem das pa-
lavras {0, 1}∗ que possuem dois 0 separados por uma cadeia de tamanho 4i para
algum i ≥ 1.
Solução. Considere o AFN N = (Q, σ, δ, q0 , F ) onde

1. Q = {q0 , q1 , q2 , q3 , q4 , q5 , qf };
2. Σ = {0, 1};
3. δ : Q × Σε −→ P(Q) definida como no diagrama abaixo:

Assim, podemos definir a função δ da seguinte forma:

δ ε 0 1
q0 ∅ {q0 , q1 } {q0 }
q1 ∅ {q2 } {q2 }
q2 ∅ {q3 } {q3 }
q3 ∅ {q4 } {q4 }
q4 ∅ {q1 , q5 } {q1 , q5 }
q5 ∅ {qf } {q0 }
qf ∅ {qf } {qf }

4. q0 : estado inicial;
5. F = {qf }: estados de aceitação.

2
4 (c). Seja L uma linguagem regular sobre um alfabeto Σ. Demonstre que a linguagem
remove(L) = {xy : xσy ∈ L, x, y ∈ Σ∗ , σ ∈ Σ} também é regular.
Solução: Como L é uma linguagem regular, então existe um autômato finito deter-
minı́stico M = (Q, Σ, δ, q0 , F ) que a reconhece, isto é, L(M ) = L. Mostraremos que
a linguagem remove(L) = {xy : xσy ∈ L, x, y ∈ Σ∗ , σ ∈ Σ} é regular. Para tanto,
vamos construir um autômato finito não determinı́stico que reconhece a linguagem
remove(L).
Considere duas cópias de M , digamos M1 e M2 , dadas por

M1 = Q1 , Σ, δ1 , q10 , F1 e


M2 = Q2 , Σ, δ2 , q20 , F2 ,


em que Q1 = Q2 = Q, δ1 = δ2 = δ, q10 = q20 = q0 e F1 = F2 = F .


Construa um autômato N = (QN , Σ, δN , qN
0
, FN ) definido por:

1. QN = {Q1 , Q2 } × Q;
2. Σ: alfabeto (idêntico ao definido para M, M1 e M2 );
3. δN : QN × Σε −→ QN definida da seguinte forma:
(
{(Q1 , δ(q, a))}, se a ∈ Σ
δN ((Q1 , q), a) =
{(Q2 , δ(q, b)) | b ∈ Σ}, se a = ε
(
{(Q2 , δ(q, a))}, se a ∈ Σ
δN ((Q2 , q), a) =
∅, se a = ε
0
4. qN = (q10 , q0 );
5. FN = {Q2 } × F .

Mostraremos que L(N ) = remove(L) e para isso, precisamos mostrar que L(N ) ⊆
remove(L) e remove(L) ⊆ L(N ).
(⇐)(remove(L) ⊆ L(N ))
Seja w ∈ remove(L) qualquer. Assim, podemos escrever w = xy, com x, y ∈ L∗ de
modo que xσy ∈ L com σ ∈ Σ. Mostraremos que L(N ) aceita w.

3
Note que, se ε ∈ L∗ e x = y = ε temos que xσy = σ e, como xσy ∈ L, temos que
δ(q0 , σ) ∈ F . Logo,

δN ((q10 , q0 ), w) = δN ((q10 , q0 ), xy) = δN ((q10 , q0 ), ε) = {(Q2 , δ(q0 , b)) | b ∈ Σ}

Observe que, pela definição da função δN , b ∈ Σ pode ser σ ∈ Σ, pois ε leva para
todos os estados seguintes possı́veis, o estado em que foi aplicada a transição. Assim.
temos que uma das ramificações de {(Q2 , δ(q0 , σ))} é (q2 , δ(q0 , σ)) ∈ {Q2 } × F , para
algum q2 ∈ Q2 .
Suponha, sem perda de generalidade, que x 6= ε e y 6= ε. Podemos escrever w
como w = xy = x1 x2 · · · xm y1 y2 · · · yn , onde cada xi , yj ∈ Σ, xi 6= ε e yj 6= ε para
1 ≤ i ≤ m e 1 ≤ j ≤ n, m, n ∈ N. AplicandoδN em w, temos:

δN ((q10 , q0 ), w) = δN ((q10 , q0 ), xy)


= δN ((q10 , q0 ), xεy)
= δN (δN ((q10 , q0 ), x), εy).

Como xi 6= ε, 1 ≤ i ≤ m, temos que δN ((q10 , q0 ), x) = (q1 , δ(q0 , x)), para algum


q1 ∈ Q1 . Assim,

δN ((q10 , q0 ), w) = δN (δN ((q10 , q0 ), x), εy)


= δN ((q1 , δ(q0 , x)), εy)
= δN (δN ((q1 , δ(q0 , x)), ε), y)

Pela definição de δN , temos que δN ((q1 , δ(q0 , x)), ε) = {(Q2 , δ(q, b)) | b ∈ Σ}, e
podemos ter, assim, b = σ, pois xσy ∈ L. Logo, uma das ramificações possı́veis para
{(Q2 , δ(q, b)) | b ∈ Σ} é (q2 , δ(δ(q0 , x), σ)), para algum q2 ∈ Q2 , e assim,

δN ((q10 , q0 ), w) = δN (δN ((q1 , δ(q0 , x)), ε), y)


= δN ((q2 , δ(δ(q0 , x), σ)), y)
= δN ((q2 , δ(q0 , xσ)), y)
= (q˜2 , δ(q0 , xσy)) ∈ {Q2 } × F,
para algum q˜2 ∈ Q2 .
Segue, portanto, que N aceita w e, portanto, w ∈ L(N ).
(⇒)(L(N ) ⊆ remove(L))

4
Seja w ∈ L(N ) qualquer. Vamos mostrar que w ∈ remove(L).
Pela definição de computação, w pode ser escrito como w = w1 w2 · · · wm , em que
wi ∈ Σε e existe uma sequência de estados r0 r1 · · · rm , com rj ∈ QN tais que
0
1. r0 = qN = (q10 , q0 );
2. ri+1 ∈ δN (ri , wi+1 ) para i = 1, 2, · · · , m − 1;
3. rm ∈ FN = {Q2 } × F

Como q0 ∈ {Q1 } × Q e rm ∈ {Q2 } × F , temos que, pela definição de δN , existe


um k ∈ N, 1 ≤ k ≤ m tal que wk = ε, com rk−1 ∈ {Q1 } × Q e rk ∈ {Q2 } × Q.
Teremos, então, que w = w1 w2 · · · wk−1 εwk+1 · · · wm , com wj 6= ε, para 1 ≤ j ≤ k − 1
e k + 1 ≤ j ≤ m, pois, caso contrário, se tivéssemos outro w` = ε, ` 6= k terı́amos
dois casos:

• 1≤`<k
Nesse caso, terı́amos δN ((Q1 , r`−1 ), w` ) = {(Q2 .δ(r`−1 , b) | b ∈ Σ}, e assim, r` ∈
{(Q2 .δ(r`−1 , b) | b ∈ Σ}. Então, como wk = ε, temos que δN ((Q2 , rk−1 ), wk ) = ∅,
o que impossibilitaria w ∈ L(N ).
• k<`≤m
De maneira análoga, nesse caso, terı́amos δN ((Q1 , rk−1 ), wk ) = δN ((Q1 , rk−1 ), ε) =
{(Q2 .δ(rk−1 , b) | b ∈ Σ}, e assim, rk ∈ {(Q2 .δ(rk−1 , b) | b ∈ Σ}. Então, como
w` = ε, temos que δN ((Q2 , r`−1 ), w` ) = ∅, o que também impossibilitaria
w ∈ L(N ).

Podemos então definir, sem perda de generalidade, que como ri ∈ Qn = {Q1 , Q2 }×Q,
temos que ri = (Q1 , qi ), 1 ≤ i ≤ k − 1 e rj = (Q2 , qj ), k ≤ j ≤ n.
Aplicando δN em w, temos que δN ((q01 , q0 ), w) = δN ((q01 , q0 ), w1 w2 · · · wk−1 εwk+1 · · · ).
Pela definição de computação, para cada wi , 1 ≤ i ≤ k − 2, temos que ri+1 ∈
δN (ri , wi+1 ) = {(Q1 , δ(qi , wi+1 ))}. Assim, temos que rk−1 ∈ {(Q1 , δ(q0 , w1 w2 · · · wk−1 ))}
.
Para i = k − 1, temos que rk ∈ δN (rk−1 , wk ) = δN (rk−1 , ε) = {(Q2 , δ(qk−1 , b)) | b ∈
Σ}. Então, para algum σ ∈ Σ, temos que δ(qk−1 , σ) = qk e, portanto, rk ∈
{(Q2 , δ(q0 , w1 w2 · · · wk−1 σ))} .
Por fim, para cada wi , k ≤ i ≤ m, temos que ri+1 ∈ δN (ri , wi+1 ) = {(Q1 , δ(qi , wi+1 ))}.
Assim, temos que rm ∈ {(Q1 , δ(q0 , w1 w2 · · · wk−1 σwk+1 · · · wm ))} .

5
Portanto, como L(M ) = L, temos que w0 = xσy ∈ L e, assim, w ∈ remove(L).
Dada arbitrariedade de escolha de w, temos que L(N ) ⊆ remove(L) e remove(L) ⊆
L(N ) e, portanto, remove(L) = L(N ).

5 (a). Seja um natural k > 0 e um conjunto B = {n1 , n2 , · · · , nk } com k números naturais.


Seja Σ = {0} um alfabeto unitário e seja

C = {0i : i ∈ ∪b∈B {i ∈ N : i = 0 mod b}},

o conjunto de todas as cadeias 0i tais que i seja múltiplo de algum natural em B.


P
Construa um autômato não-determinı́stico N com no máximo 2 b∈B b estados que
reconhece C. Demonstre que N reconhece C.
Solução. Tome k ∈ N (k ≥ 1) qualquer e considere o conjunto B = {n1 , n2 , · · · , nk }
um conjunto com k números naturais (B ⊂ N). Considere, ainda o alfabeto unitário
Σ = {0} e considere o conjunto de todas as cadeias 0i tais que i seja múltiplo de
algum natural em B, isto é,

C = {0i : i ∈ ∪b∈B {i ∈ N : i = 0 mod b}}.

Vamos construir um autômato não-determinı́stico N = (Q, Σ, δ, q0 , F ) que reconhece


C.
Defina, portanto, o autômato N = (Q, Σ, δ, q0 , F ) de modo que cada elemento da
5-upla é definido como segue:

n n n n
1. Q = {q0 } ∪ Qn1 ∪ Qn2 ∪ · · · ∪ Qnk , em que Qnj = {q0 j , q1 j , q2 j , · · · , qnjj −1 },
Qni ∩ Qnj = ∅, para i 6= j e q0 ∈
/ Qnj , 1 ≤ i, j ≤ k.
2. Σ = {0}.
3. δ : Q × Σε −→ P (Q) definida por

nj

 δ(q0 , 0) = q0
 ∀j ∈ {1, 2, · · · , k},
n nj
δ(qmj mod nj , 0) = qm+1 mod nj , m ∈ N ∪ {0}, ∀j ∈ {1, 2, · · · , k},

δ(q, ε) = ∅, ∀q ∈ Q.

4. q0 = {q0 }
5. F = {qnn11−1 , qnn22−1 , qnn33−1 , · · · , qnnkk−1 }.

6
Podemos ilustrar N na figura a seguir.

Note que, por construção, cada Qnj com 1 ≤ j ≤ k tem nj elementos, isto é,
|Qnj | = nj , para cada 1 ≤ j ≤ k. Por exemplo, se 1, 2, 3 ∈ B, temos que Q1 = {q01 },
Q2 = {q02 , q12 } e Q3 = {q03 , q13 , q23 }. Assim, como Qnj ∩ Qni = ∅, para todo i 6= j e
{q0 } ∩ Qnj = ∅, para 1 ≤ i, j ≤ k, temos que, como |A ∪ B| = |A| + |B| − |A ∪ B|,

7
para quaisquer conjuntos A, B,

|Q| = |{q0 } ∪ ∪b∈B Qb | = |{q0 }| + |Qn1 | + · · · + |Qnk |


= 1 + n1 + n2 + · · · + nk
X
= b+1 .
b∈B
X
≤2 b.
b∈B

Vamos mostrar que N reconhece C, isto é, mostraremos que L(N ) = C. Para tanto,
mostraremos que L(N ) ⊆ C e C ⊆ L(N ).
(⇒) L(N ) ⊆ C
Seja w ∈ L(N ). Então, pela definição de computação, como N aceita w, podemos
escrever w = w1 · · · wm , onde cada wi é um membro de Σε e uma sequência de estados
r0 , r1 , · · · , rm existe tal que

1. r0 = q0 ;
2. ri+1 ∈ δ(ri , wi+1 ), para i = 0, · · · , m − 1;
3. rm ∈ F.

Temos, portanto, três casos para avaliar:

– w=ε
Nesse caso, pela definição da função δ, temos que

δ(q0 , ε) = ∅,

o que contradiz o fato de w ser aceito por N .


– Dentre as m letras do alfabeto Σε , que compõe w = w1 w2 · · · wm , existem
s ∈ N, 0 ≤ s < m letras iguais a ε (retiramos o caso s = m pois já está
coberto pelo caso anterior), isto é, podemos dizer, sem perda de generalidade,
que w = 0m−s εs = 0m−s .
Nesse caso, chamando m − s = n, temos que:

8


 δ(q0n1 , 0n−1 ) = δ(q1n1 , 0n−2 ) = ··· n1
= δ(qn−2 n1
, 0) = qn−1

 δ(q n2 , 0n−1 )

= δ(q1n2 , 0n−2 ) = ··· n2
= δ(qn−2 n2
, 0) = qn−1
n 0
δ(q0 , w) = δ(q0 , 0 ) = .. .. .


 . .
δ(q0nk , 0n−1 ) = δ(q1nk , 0n−2 ) = · · · nk nk

= δ(qn−2 , 0) = qn−1

j n
Como w é aceito por N , temos que pelo menos um dos qn−1 ∈ F, 1 ≤ j ≤ k.
Assim, ∃q, h ∈ N, 1 ≤ q ≤ k tal que n − 1 = h · nq − 1 ⇔ n = h · nq e, portanto,
w ∈ C e L(N ) ⊆ C.

(⇐) C ⊆ L(N )
Seja w ∈ C qualquer. Pela definição da linguagem, w = 0i para algum i ∈ N, i =
0 mod nj , para algum 1 ≤ j ≤ k, nj ∈ B. Dessa forma, existe um h ∈ N tal que
w = 0h·nj , para algum nj ∈ B, 1 ≤ j ≤ k.
Assim, temos que


 δ(q0n1 , 0h·nj −1 )

 δ(q n2 , 0h·nj −1 )

h·nj 0
δ(q0 , w) = δ(q0 , 0 ) = . .

 ..

δ(q0nk , 0h·nj −1 )

Note que, para o ramo da computação em Qnj temos que

n n n n
δ(q0 j , 0h·nj −1 ) = δ(q1 j , 0h·nj −2 ) = · · · = δ(qnjj −1 , 0(h−1)·nj ) = δ(q0 j , 0(h−1)·nj −1 )
n n
= δ(qnjj −1 , 0(h−2)·nj ) = δ(q0 j , 0(h−2)·nj −1 ) = · · · =
n n
= · · · = δ(qnjj −2 , 0) = qnjj −1 ∈ F.

Segue que w é aceito por N e, portanto, w ∈ L(N ).


Dada arbitrariedade de escolha de w e B, temos que L(N ) = C.

Você também pode gostar