Você está na página 1de 56

TACIANE DE OLIVEIRA E SILVA (RA: 92337)

THIAGO HIDEKI SATO (RA: 92341)


THOMAS AUGUSTO TEIXEIRA DE ALBUQUERQUE (RA: 92343)
TIAGO ALEXANDER LEAL RUZZON (RA: 92346)

Relatrio Linguagens Formais e Autmatos


Professor Dr. Antonio Augusto Chaves

So Jos dos Campos SP


2016
Aula 0: Induo

1) Seja = =(()!). Faa a demonstrao por induo que a


frmula = ( + )! .
Base: n = 1, 1 = 1=1(()!) = 1 1! = 1 = (1 + 1)! 1 = 2! 1 = 1
Hiptese: Suponha que vale para k = n 1, ou seja,
1

= (()!) = (( 1) + 1)! 1 = ! 1
=1
Passo indutivo:
1

= (()!) = (()!) + ! = (! 1) + ! = ! ( + 1) 1
=1 =1
= ( + 1)! 1

2) Prove por induo que a soma dos cubos de trs inteiros positivos
consecutivos sempre divisvel por 9.
Problema: 3 + ( + 1)3 + ( + 2)3 = 9, .
Base: a = 1, 13 + (1 + 1)3 + (1 + 2)3 = 1 + 8 + 27 = 36 = 4 9.
Hiptese: Suponha que vale para k = n 1, ou seja,
3 + ( + 1)3 + ( + 2)3 = 9
3 3
( 1)3 + (( 1) + 1) + (( 1) + 2) = 9
( 1)3 + 3 + ( + 1)3 = 9
Passo indutivo: Vamos mostrar que vale para
( + 1) = (( 1) + 1) =

3 + ( + 1)3 + ( + 2)3 = 3 + ( + 1)3 + ( + 2)(2 + 4 + 4)


= 3 + ( + 1)3 + 3 + 42 + 4 + 22 + 8 + 8
= 3 + ( + 1)3 + 3 + 62 + 12 + 8
= 3 + ( + 1)3 + (3 + 62 92 + 12 9 + 8 9)
+ (92 + 9 + 9)
= 3 + ( + 1)3 + (3 32 + 3 1) + 9(2 + + 1)
= 3 + ( + 1)3 + ( 1)3 + 9(2 + + 1)
Pela hiptese de induo, ento:
3 + ( + 1)3 + ( + 2)3 = 9 + 9(2 + + 1)
= 9( + 2 + + 1) = 9 , .

Pgina | 1
Aula 1: DFA

Monte um autmato que reconhece:

1) {w | w da forma x01y e x e y {0,1}*}.

2) {w | w tem nmero par de 0s}.

3) {w | w tem ao mesmo tempo nmero par de 0s e 1s}.

4) {w | w termina em 00}.

5) {w | w tem 3 0s consecutivos}.

Pgina | 2
6) {w | w tem 011 como substring}.

7) {w | w tem nmero de 0s divisvel por 5 e 1s divisvel por 3}.

Pgina | 3
Aula 2: DFA

Desenhe autmatos que aceitam as seguintes linguagens sobre o


alfabeto {0,1}:

1) Todos os strings que contm exatamente 4 zeros.

2) Todos os strings que terminam em 1101.

3) Todos os strings que contm exatamente 4 0s e pelo menos 2


1s.

Pgina | 4
4) Todos os strings cujo valor binrio divisvel por 5.

5) Todos os strings que contm o substring 0101.

6) Todos os strings que comeam com 0 e tm comprimento mpar


ou comeam com 1 tm comprimento par.

7) Todos os strings que no contm o substring 110.

Pgina | 5
8) Todos os strings com comprimento no mximo igual a 5.

9) Todos os strings que tm 1 em posies mpares.

Pgina | 6
Aula 3: DFA

Construa um DFA para as seguintes linguagens:

1) {w {0,1}* | cada 0 de w imediatamente seguido de, no mnimo,


dois 1s}.

2) {w {0.1}* | w no contm 000 nem 111}.

3) {w {a, b}* | w comea com a e tem tamanho par}.

Pgina | 7
4) {w {0,1}* | w comea ou termina ou ambos com 01}.

5) {w {0,1}* | w apresenta todo 0 entre dois 1s}.

6) Implementar um programa na linguagem C capaz de ler dois


arquivos, sendo que o primeiro contm a descrio de um DFA
e o segundo uma string para reconhecimento.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
int tam;
typedef struct dados {
int **matriz, n, m, qtd_final;
int inicio;
int *estado_final;
}dados;

dados* ler_matriz_arq(char str[]){

Pgina | 8
int i, j;
dados *d = (dados*)malloc(sizeof(dados));
FILE *arq = fopen(str, "r");
fscanf (arq, "%d %d", &d->n, &d->m); //n: nmero de estados. m: alfabeto.
d->matriz = (int**)malloc(d->n*sizeof(int*));
for (i=0; i<d->n; i++){
d->matriz[i] = (int*)malloc(d->m*sizeof(int));
}
for (i=0; i<d->n; i++){
for (j=0; j<d->m; j++){
fscanf(arq, "%d", &d->matriz[i][j]);
}
}
//Estado inicial
fscanf(arq, "%d", &d->inicio);
//Estado final
fscanf(arq, "%d", &d->qtd_final);
d->estado_final = (int*)malloc(d->qtd_final*sizeof(int));
for(i=0; i<d->qtd_final; i++){
fscanf(arq, "%d", &d->estado_final[i]);
}
fclose(arq);
return d;
}

int* string_reconhecimento (char str[]){


int i;
int *string_r = (int*)malloc(20*sizeof(int));
FILE *arq = fopen (str, "r");
fscanf (arq, "%d", &tam);
for (i=0; i<tam; i++){
fscanf(arq, "%d", &string_r[i]);
}
fclose(arq);
return(string_r);
}

int main(void){
int i, estado;
bool verificacao = false;

Pgina | 9
dados *dado;
char *arq1 = (char*)malloc(20*sizeof(char));
char *arq2 = (char*)malloc(20*sizeof(char));
int *teste = (int*)malloc(20*sizeof(int));
scanf("%s", arq1);
scanf("%s", arq2);
dado = ler_matriz_arq (strcat(arq1,".txt"));
teste = string_reconhecimento (strcat(arq2, ".txt"));
estado = dado->inicio;
for (i=0; i<tam; i++){
estado = dado->matriz[estado][teste[i]];
}
for (i=0; i<dado->qtd_final; i++){
if(estado == dado->estado_final[i]) verificacao = true;
}
if (verificacao) printf("TRUE");
else printf("FALSE");
return 0;
}

Pgina | 10
Aula 4: NFA
1) Construir NFAs para as seguintes linguagens regulares:
a. Todos os strings que contm exatamente 4 0s ou um nmero
par de 1s.

b. Todos os strings em que o terceiro smbolo a partir da direita


0.

c. Todos os strings em que ocorrem 2 0s separados por uma


string de comprimento 4i para algum i>=0.

d. Todos os strings que contm a substring 0101.

Pgina | 11
e. Todos os strings que contm um nmero par de 0s ou
exatamente dois 1s.

f. 0*1*0*0.

2) Faa dois exemplos de transies para cada NFA produzido na


questo 1.
a. Exemplo 1: String 0001.
(0, 0001) = ( (0, 000), 1) = (4,1)(6,1) = {4, 7}
(0, 000) = ( (0, 00), 0) = (3,0)(6,0) = {4, 6}
(0, 00) = ( (0, 0), 0) = (2,0)(6,0) = {3, 6}
(0, 0) = ( (0, ), 0) = (1,0)(6,0) = {2, 6}
(0, ) = {1 6}
A string 0001 no pertence a esta linguagem regular.
Exemplo 2: String 11.
(0, 11) = ( (0, 1), 1) = (1,1)(7,1) = {1, 6}
(0, 1) = ( (0, ), 1) = (1,1)(6,1) = {1, 7}
(0, ) = {1 6}
A string 11 pertence a esta linguagem regular.

Pgina | 12
b. Exemplo 1: String 011.
(0, 011) = ( (0, 01), 1) = (0,1)(2,1) = {0, 3}
(0, 01) = ( (0, 0), 1) = (0,1)(1,1) = {0, 2}
(0, 0) = ( (0, ), 0) = (0,0) = {0, 1}
(0, ) = {0}
A string 011 pertence a esta linguagem regular.
Exemplo 2: String 111.
(0, 111) = ( (0, 11), 1) = (0,1) = {0}
(0, 11) = ( (0, 1), 1) = (0,1) = {0}
(0, 1) = ( (0, ), 1) = (0,1) = {0}
(0, ) = {0}
A string 011 no pertence a esta linguagem regular.
c. Exemplo 1: String 001.
(0, 001) = ( (0, 00), 1) = (0,1)(1,1)(2,1) = {0, 3, 2}
(0, 00) = ( (0, 0), 0) = (0,0)(1,0) = {0, 1, 2}
(0, 0) = ( (0, ), 0) = (0,0) = {0, 1}
(0, ) = {0}
A string 001 pertence a esta linguagem regular.
Exemplo 2: String 01.
(0, 01) = ( (0, 0), 1) = (0,1)(1,1) = {0, 3}
(0, 0) = ( (0, ), 0) = (0,0) = {0, 1}
(0, ) = {0}
A string 01 no pertence a esta linguagem regular.
d. Exemplo 1: String 0101.
(0, 0101) = ( (0, 010), 1) = (0, 1)(1,1)(3,1) = {0, 2, 4}
(0, 010) = ( (0, 01), 0) = (0,0)(2,0) = {0, 1, 3}
(0, 01) = ( (0, 0), 1) = (0,1)(1,1) = {0, 2}
(0, 0) = ( (0, ), 0) = (0,0) = {0, 1}
(0, ) = {0}
A string 0101 pertence a esta linguagem regular.

Exemplo 2: String 01.

Pgina | 13
(0, 01) = ( (0, 0), 1) = (0, 1)(1, 1) = {0, 2}
(0, 0) = ( (0, ), 0) = (0,0) = {0, 1}
(0, ) = {0}
e. Exemplo 1: String 001.
(0, 001) = ( (0, 00), 1) = (1, 1)(3, 1) = {1, 4}
(0, 00) = ( (0, 0), 0) = (2, 0)(3, 0) = {1, 3}
(0, 0) = ( (0, ), 0) = (1,0)(3, 0) = {2, 3}
(0, ) = {1, 3}
A string 001 pertence a esta linguagem regular.
Exemplo 2: String 01.
(0, 01) = ( (0, 0), 1) = (2, 1)(3, 1) = {2, 4}
(0, 0) = ( (0, ), 0) = (1,0)(3, 0) = {2, 3}
(0, ) = {1, 3}
A string 01 no pertence a esta linguagem regular.
f. Exemplo 1: String 01.
(0, 01) = ( (0, 0), 1) = (0, 1)(2, 1) = {1}
(0, 0) = ( (0, ), 0) = (0,0) = {0, 2}
(0, ) = {0}
A string 01 no pertence a esta linguagem regular.
Exemplo 2: String 0110.
(0, 0110) = ( (0, 011), 0) = (1, 0) = {2}
(0, 011) = ( (0, 01), 1) = (1, 1) = {1}
(0, 01) = ( (0, 0), 1) = (0, 1)(2, 1) = {1}
(0, 0) = ( (0, ), 0) = (0,0) = {0, 2}
(0, ) = {0}
A string 0110 pertence a esta linguagem regular.

Pgina | 14
Aula 5: Converso NFA para DFA

1) Mostre que a seguinte linguagem regular: L = {conjunto de


strings que contm igual nmero de ocorrncias de 01 e 10}.

2) Converta o seguinte NFA em DFA. Represente usando tabela e


diagrama de transies.

0 1

p {p,q} {p}

q {r} {r}

r {s}

*s {s} {s}
Resoluo:

0 1
p {p,q} {p}
p,q {p,q,r} {p,r}
p,r {p,q,s} {p}
p,q,r {p,q,r,s} {p,r}
*p,q,s {p,q,r,s} {p,r,s}
*p,q,r,s {p,q,r,s} {p,r,s}
*p,r,s {p,q,s} {p,s}
*p,s {p,q,s} {p,s}

Pgina | 15
3) Converta o seguinte NFA em DFA. Represente usando tabela e
diagrama de transies.

0 1

p {q,s} {q}

*q {r} {q,r}

r {s} {p}

*s {p}
Resoluo:

0 1
p {q,s} {q}
*q {r} {q,r}
r {s} {p}
*q,r {r,s} {p,q,r}
*q,s {r} {p,q,r}
*p,q,r {q,r,s} {p,q,r}
*r,s {s} {p}
*q,r,s {r,s} {p,q,r}
*s lixo {p}
lixo lixo lixo

Pgina | 16
4) Converta o seguinte NFA em DFA. Represente usando tabela e
diagrama de transies.

0 1

p {p,q} {p}

q {r,s} {t}

r {p,r} {t}

*s

*t
Resoluo:

0 1
p {p,q} {p}
p,q {p,q,r,s} {p,t}
*p,q,r,s {p,q,r,s} {p,t}
*p,t {p,q} {p}

Pgina | 17
5) Converta o NFA da linguagem 0*1*0*0 em um DFA.

NFA DFA
0 1 0 1
q0 {q0, q2} {q1} q0 {q0, q2} {q1}
q1 {q2} {q1} q1 {q2} {q0}
*q2 {q2} - *q2 {q2} lixo
*{q0,
{q0, q2} {q1}
q2}
lixo lixo lixo

NFA

DFA

Pgina | 18
Aula 6:

1) Considere o .

a b c

p {p} {q} {r}

q {p} {q} {r}

*r {q} {r} {p}


a) Calcule o -fechamento de cada estado.
CL(p) = {p}
CL(q) = {p, q}
CL(r) = {p, q, r}
b) Converta o autmato em um DFA.

a b c
p p {p, q} {p, q, r}
{p, q} {p, q} {p, q, r} {p, q, r}
*{p, q, r} {p, q, r} {p, q. r} {p, q, r}

2) Repita o exerccio 1 para o seguinte .

a b c

p {q,r} {q} {r}

q {p} {r} {p,q}

*r

Pgina | 19
CL(p) = {p, q, r}
CL(q) = {q}
CL(r) = {r}

a b c
*{p, q, r} {p, q, r} {q, r} {p, q, r}
*{q, r} {p, q, r} {r} {p, q, r}
*{r} lixo lixo lixo
Lixo lixo lixo lixo

3) Prove que a linguagem regular: conjunto de todas as strings


tais que cada bloco de 5 smbolos consecutivos contm pelo
menos dois 0s.

4) Considere o autmato M = ({q0, q1}, {0,1}, , q0, {q0, q1}) onde a


funo especificada pelo diagrama:

a. Qual a linguagem reconhecida por M?

Strings da forma 0 1 tal que , 0.

Pgina | 20
b. Considere M = ({q0, q1}, {0,1}, , q0, ). M o autmato
complementar de M? Justifique.

Sim, pois o autmato complementar de M reconhece toda string


que no escrita da forma 0 1 ; ou seja, que no aceita os estados finais
do autmato M. Desta forma, o autmato complementar de M no possui
estados de aceitao.

c. Construa o autmato complementar de M.

Pgina | 21
Aula 7: Expresses regulares (RE)

1) Crie expresses regulares = {0,1}:


a. {w | w contm um nico 1};
0*.1.0*
b. {w | w contm pelo menos um 1};
(0+1)*.1.(0+1)*
c. {w | w contem a string 001 como substring};
(0+1)*.0.0.1.(0+1)*
d. {w | |w| par};
((0+1).(0+1))*
e. {w | |w| um mltiplo de 3};
((0+1).(0+1).(0+1))*
f. {w | 6 smbolo direita/esquerda 1}.
(0+1)*.1.(0+1).(0+1).(0+1).(0+1).(0+1)
2) Descreva em portugus o conjunto denotado por cada uma das
expresses regulares:
a. 1*0: Possui somente um zero na ltima posio. Antes deste
zero, podemos ter quantos 1's quisermos inclusive nenhum.
b. 1*0(0)*: Possui pelo menos um zero. Antes deste primeiro
zero, podemos ter quantos 1's quisermos inclusive nenhum.
Aps o primeiro zero, temos quantos 0's quisermos inclusive
nenhum.
c. 111 + 001: Conjunto formado por duas strings: 111 e 001.
d. (1+00)*: Conjunto formado por 1's ou por dois zeros
consecutivos e suas combinaes, a string vazia tambm
vlida.
e. (0(0)*1)*: Toda string (inclusive vazia) que comea com zero
e termina com 1, sem 1's consecutivos.
f. (0 + 1)(0 + 1)*00: Toda string com comprimento maior que 2
(comprimento deve ser pelo menos 3) que termina com 00.

Pgina | 22
Aula 8: Expresses regulares (RE)

Escreva expresses regulares correspondentes as seguintes


linguagens:

1) Conjunto de strings sobre o alfabeto {a, b, c} que contm pelo


menos um a e pelo menos um b.
(a+b+c)*a(a+b+c)*b(a+b+c)* + (a+b+c)*b(a+b+c)*a(a+b+c)*
2) Conjunto de todos os strings de 0s e 1s tais que todo par de 0s
adjacentes aparece antes de qualquer par de 1s adjacentes.
(0+10)*(+1)(1+01)*(+0)
3) O conjunto de todos strings que no contem o substring 101.
(1+000*)*+01+10
4) O conjunto de todos os strings que tm no mximo um par de
0s consecutivos ou um par de 1s consecutivos.
1*(01)*(+00)(10)*(+1) + 0*(10)*(+11)(01)*(+0)
5) Dar um equivalente as expresses regulares:
a. 0*1*

b. 00*11*

Pgina | 23
c. (00)*(11)*

d. (0 + 1)(0 + 1)*00

6) Determine a RE da linguagem aceita pelo autmato abaixo:

0(0(0+1)(0+1)*1+1)

7) Construir o autmato correspondente a RE ((00)*(11)*)*,


utilizando o algoritmo que transforma RE em autmato. No final,
utilize um algoritmo de minimizao de estados de autmato a
Pgina | 24
fim de minimizar o autmato produzido pelo algoritmo de
transformao.

Pgina | 25
Aula 9: Minimizao de DFAs

1) Desenhe a tabela de distines para esse autmato e construa


o DFA com o nmero mnimo de estados equivalentes.

0 1
A B A
B A C
C D B
*D D A
E D F
F G E
G F G
H G D

B X2
C X1 X1
D X0 X0 X0
E X1 X1 - X0
F X2 - X1 X0 X1
G - X2 X1 X0 X1 X2
H X1 X1 X1 X0 X1 X1 X1
A B C D E F G

Pgina | 26
2) Desenhe a tabela de distines para esse autmato e construa
o DFA com o nmero mnimo de estados equivalentes.

0 1
A B E
B C F
*C D H
D E H
E F I
*F G B
G H B
H I C
*I A E

B X0
C X0 X0
D X2 X1 X0
E X1 X1 X0 X1
F X0 X0 X0 X0 X0
G X2 X1 X0 X2 X1 X0
H X1 X1 X0 X1 X1 X0 X1
I X0 X0 X0 X0 X0 X0 X0 X0
A B C D E F G H

Pgina | 27
3) Fornea um DFA mnimo que aceita todas as strings de 0s e 1s
que termina em 001. Prove que mnimo.

0 1
A B A
B C A
C C D
*D B A

B X2
C X1 X1
D X0 X0 X0
A B C
4) Fornea um DFA mnimo que aceita todas as strings de 0s e 1s
que contenha 110 como substring e verifique que o autmato
seja mnimo.

0 1
A A B
B A C
C D C
*D D D

B X2
C X1 X1
D X0 X0 X0
A B C

Pgina | 28
Aula 10: Lema do Bombeamento

1) Prove que a linguagem L = {w | w consiste em todos os strings com


igual nmero de 0s e 1s} no regular.
Em particular, {0 1 , 1}
a) = 0 1
b) = ( , || ). Logo, y possui pelo menos um ZERO.
c) = , 0. Se = 0, ento = (|| < e || = )
Logo, . Portanto, a linguagem no regular.
2) Tente provar que a linguagem (00+11)* no regular.
1) Escolhe-se a linguagem (00 + 11)*.
2) Escolhe n.
3) Determina-se string w = 0 .
4) w = xyz ( e |xy| n).
5) Para = , para qualquer i escolhido, w continuar pertencendo
a L, portanto a linguagem regular.
3) Seja = {0,1}. Se L1 = {0} e L2 = {1}*, determine:
a. L1 L2 e L1 L2
L1 L2 = (0 + 1*).
L1 L2 = .
b. L1* e L2*
L1* = 0*
L2* = 1*
c. (L1 L2)* = (0+1*)*
d. L1* L2 =
e.
= (0+1)*- 0
L1* = 0* -
f.
g. ( . ) = (01*)*

Pgina | 29
Aula 11: CFG

1) Construa CFGs que gerem as seguintes linguagens sobre o


alfabeto {0,1}:
a. { | }

|
|
|
||
||
|
b. {w | w comea e termina com o mesmo smbolo}

I
I 0I
I 1I
P: 1I1
0I0
G = {{E, I}, {0, 1}, P, E}
c. {w | |w| mpar e o seu smbolo do meio 0}.

I0
P: I 0I0
I 0I1
I 1I0
I 1I1
G = {I, {0, 1}, P, I}
d. Strings binrios com duas vezes mais 1s que 0s.

I
P: I 0I1I1I
I 1I0I1I
I 1I1I0I

Pgina | 30
G = {I, {0, 1}, P, I}
2) A gramtica a seguir gera a linguagem regular: 0*1(0+1)*
S A1B
A 0A |
B 0B | 1B |
Fornea derivaes mais esquerda e mais direita dos strings:
a. 00101

Mais esquerda:
S A1B 0A1B 00A1B 001B 0010B 00101B 00101

Mais direita:
S A1B A10B A101B A101 0A101 00A101 00101

b. 1001

Mais esquerda: S A1B 1B 10B 100B 1001B 1001


Mais direita: B 1B 10B 100B 1001B 1001
c. 00011

Mais esquerda:
S A1B 0A1B 00A1B 000A1B 0001B 00011B 00011

Mais direita:
S A1B A11B A11 0A11 00A11 000A11 00011

Pgina | 31
Aula 12: CFG

1) Construa CFGs que gerem as seguintes linguagens:


a. {w | |w| par e maior que 0}.

|
0|1

b. {w | w contm um nmero par de 0s}.

|1|
0

c. {w | w possui o terceiro smbolo da direita para a esquerda
igual a 1}.

0|1
||
1
d. Strings que sejam comentrios da forma /#(a + b)#/

|||
/# #/

e. {w | w possui nmero igual de 0s e 1s}.

01|10|

2) Mostre que para toda linguagem regular h uma gramtica
regular.
Para toda linguagem regular h uma gramtica regular, pois, a
concatenao, a unio, o fechamento e o caso base podem ser
escritos com uma gramtica regular.
Unio: |
Concatenao:
Fechamento: |

Pgina | 32
3) Monte uma CFG que reconhece DOUBLE numa linguagem de
programao.

0|1| |9
|
. | . |
+| |
|

Pgina | 33
Aula 13: CFG

1) Construa CFGs que gerem as linguagens:


a. { | }

|
|
|
||

b. { | = + }

|
||

c. {+ | }

|
d. { | , }

|
|

e. { + |, > }

|
|

f. { | }

|||
g. { | = + }

|
|

Pgina | 34
h. { | + }

||
|
|

i. { + |, > }

|
|

Pgina | 35
Aula 14: CFG

1) Seja G a gramtica:
S abSc | A
A cAd | cd
a. D uma derivao de ababccdd.

b. Construa rvore de anlise sinttica do item a.

c. Use notao de conjunto para definir L(G).


{() | > 0 0}
2) Seja G a gramtica:
S ASB |
A aAb |
B bBa | ba
a. D uma derivao mais esquerda de aabbba.

b. D uma derivao mais direita de abaabbbabbaa.



Pgina | 36
c. Construa a rvore de anlise sinttica para as derivaes
de a e b.

Letra a)

Letra b)

d. Use notao de conjunto para definir L(G).


{( ) ( ) | > 0 , > 0}

3) Seja G a gramtica:
S SAB |
Pgina | 37
A aA | a
B bB |
a. D uma derivao esquerda de abbaab.




b. D duas derivaes esquerda de aa.



c. Construa as rvores de anlise sinttica de (b).

d. D uma expresso regular de L(G).



{( ) |, , 0}

Pgina | 38
4) Mostre que a gramtica abaixo ambgua:
S 0A | 1B
A 0AA | 1S | 1
B 1BB | 0S | 0
Resoluo: Como temos duas rvores de anlise sinttica
diferentes, a gramtica ambgua.

5) Dado a gramtica:
S AB | aaB
A a | aA
Bb
a. D duas derivaes mais esquerda para aab.

b. D as duas rvores de anlise sinttica de (a).

Pgina | 39
c. Encontre uma gramtica no ambgua para a CFG.

Pgina | 40
Aula 15: PDA

1) Construa um PDA para as linguagens abaixo:


a. Strings com um nmero igual de 0s e 1s.

b. { | }

c. { | ( + ) }

d. { | }

Pgina | 41
Aula 16: PDA

1) Construa PDAs para as linguagens:


a. { | = ( + )}

b. { |, }

c. | = = }

d. { | }

Pgina | 42
2) Construa PDAs determinsticos para:
a. Strings binrios com duas vezes mais 1s que 0s.

b. Strings binrios que comeam e terminam com o mesmo


smbolo e tem o mesmo nmero de 0s e 1s.

3) Apresente um exemplo de ID para cada PDA dos exerccios 1 e


2.

Exerccio 1a) String abcccc.

(q0, abcccc, 0 ) (q0, bcccc, xx0 ) (q1, bcccc, xx0 ) (q1, cccc, xxxx0 )
(q2, cccc, xxxx0 ) (q2, ccc, xxx0 ) (q2, cc, xx0 )
(q2, c, x0 ) (q2, , 0 ) (q3, , 0 )

Exerccio 1b) String 00100.

(q0, 00100, 0 ) (q0, 0100, 00 ) (q0, 100, 000 ) (q1, 100, 000 )
(q1, 00,000 ) (q2, 00, 000 ) (q2, 0, 00 ) (q2, , 0 )
(q3, , 0 )

Pgina | 43
Exerccio 1c) String aabbc.

(q0, aabbc, 0 ) (q1, aabbc, 0 ) (q1, abbc, 0 ) (q1, bbc, aa0 )


(q2, bbc, aa0 ) (q2, bc, a0 ) (q2, c, 0 ) (q3, c, 0 )
(q3, , 0 )

Exerccio 1d) String 02 13 = 00111.

(q0, 00111, 0 ) (q0, 0111, x0 ) (q0, 111, xxx0 ) (q1, 11, xx0 )
(q1, 1, x0 ) (q1, , 0 ) (q2, , 0 )

Exerccio 2a) String 110.

(q0, 110, 0 ) (q1, 10, 10 ) (q1, 0, 110 ) (q1, 0, 110 ) (q2, , 10 )


(q1, , 0 ) (q0, , 0 )

Exerccio 2b) String 1011.

(q0, 1011, 0 ) (q1, 011, 10 ) (q2, 11, 0$10 ) (q2, 1, $10 ) (q1, 1, 10 )
(q3, , 1$10 )

Pgina | 44
Aula 17: PDA

1) Responda:
a. Em que casos se diz que uma gramtica ambgua?

Uma gramtica livre de contexto considerada ambgua se existe uma


string que pode ser gerada pela gramtica em mais de um caminho (ou seja, a
cadeia admite mais de uma rvore sinttica).

b. Em que casos se diz que uma linguagem ambgua? D


um exemplo.

Quando no possvel eliminar a gerao de frases ambguas de uma


gramtica sem alterar a linguagem. Por exemplo a linguagem .

c. H interesse prtico em se trabalhar com gramticas


ambguas?

No. O compilador usa a rvore de anlise sinttica para criar a estrutura


do programa. Com a gramtica ambgua, no sabemos qual ser a rvore,
podendo chegar em resultados indesejados.

2) Mostre que a linguagem { | > } pode ser reconhecida


por um PDA que se move tanto para a direita como para a
esquerda (ou por uma PDA com duas pilhas).

Pgina | 45
Aula 18: PDA

1) Dado o PDA M abaixo:

a. Faa a tabela de transio de M.


(0 , , 0 ) = (1 , 0 )
(0 , , ) = (1 , )
(0 , , ) = (1 , )
(0 , , 0 ) = (0 , 0 )
(0 , , ) = (0 , )
(0 , , ) = (0 , )
(0 , , 0 ) = (1 , 0 )
(0 , , ) = (1 , )
(0 , , ) = (1 , )
(1 , , ) = (1 , )
(1 , , ) = (1 , )
b. Apresente todas as computaes de abb.
(0 , , 0 ) (1 , , 0 ),
(0 , , 0 ) (0 , , 0 ) (1 , , 0 )
(0 , , 0 ) (0 , , 0 ) (0 , , 0 ) (1 , , 0 )
(1 , , 0 )
(0 , , 0 ) (0 , , 0 ) (0 , , 0 ) (0 , , 0 )
(1 , , 0 )
c. Mostre que baab L(M).
(0 , , 0 ) (0 , , 0 ) (0 , , 0 ) (1 , , 0 )
(1 , , 0 ) (1 , , 0 )
Logo, baab L(M).
d. Mostre que aaa L(M).
(0 , , 0 ) (1 , , 0 ),

Pgina | 46
(0 , , 0 ) (0 , , 0 ) (1 , , 0 ) (1 , , 0 )
(0 , , 0 ) (0 , , 0 ) (0 , , 0 ) (1 , , 0 )
(1 , , 0 )
(0 , , 0 ) (0 , , 0 ) (0 , , 0 ) (0 , , 0 )
(1 , , 0 )
Logo, aaa L(M).
2) Construir um PDA correspondente para a gramtica:
S aABB | aAA
A aBB | a
B bBB | A

3) Mostre que = {( | > )} { | > }


determinstico.

4) Prove que = { |, } livre de contexto.

|
|

Pgina | 47
Como podemos escrever essa linguagem com um CFG, ento esta
linguagem livre de contexto.
5) Prove que a linguagem { |, , > } livre de
contexto.

10|
01|01

Como podemos escrever essa linguagem com um CFG, ento esta


linguagem livre de contexto.

Pgina | 48
Aula 19: Mquina de Turing

1) Projete mquinas de Turing para as seguintes linguagens:


a. Conjunto de strings com um nmero igual de 0s e 1s.

b. { | }.

Pgina | 49
c. { | }.

Pgina | 50
Aula 20: Mquina de Turing

1) Mostre as IDs da mquina de Turing da linguagem 0n1n, n 1, se


a fita de entrada contm:
a. 00
0 00 1 0 01
b. 000111
0 000111 1 00111 01 0111 001 111 02 011
2 0011 2 0011 0 0011 1 011
01 11 01 11 02 1 2 01
2 01 0 01 1 1 1 1
1 1 2 2 2
0 3 3 3
4
c. 00111
0 00111 1 0111 01 111 2 011 2 011 0 011
1 11 1 11 2 1 2 1
0 1 3 1 2 1
2) Considere M a mquina de Turing definida por:

B A b C
(1 , , ) - - -
(2 , , ) (1 , , ) (1 , , ) (1 , , )
- (2 , , ) - (2 , , )
a. Faa a computao da string aabca.

0 1 1 1 1 1 1
2 2 2 2 2 2

b. Faa a computao da string bcbc.

0 1 1 1 1 1 2 2
2 2 2

c. D o diagrama de transio de M.

Pgina | 51
d. Descreva o resultado de uma computao de M.

Ao realizar a leitura da string para direita, troca b por c. Realizando a


leitura para esquerda, troca a por c e c por b.

3) Construa uma mquina de Turing com alfabeto {a,b} para aceitar


cada linguagem a seguir por estado final:
a. { | , }

b. { |, > }

Pgina | 52
c. { | }

Pgina | 53
Aula 21: Mquina de Turing

1) Construa uma TM que tenha como entrada um nmero N e


adicione 1 para este nmero em binrio. Para ser preciso, a fita
inicialmente contm um $ seguido por N em binrio. A cabea
est inicialmente lendo o $ no estado q0. Sua TM dever parar
com N+1, em binrio, gravado na fita, lendo o smbolo mais
esquerda de N+1, no estado . Voc pode destruir o $ para criar
N+1, se necessrio.
a. D o diagrama de transio da sua TM e explique o
propsito de cada estado.

0 : ler $ para iniciar a leitura.


1 : encontrar o ltimo valor da fita.
2 : realizar a soma.
3 : volta para o $, estado de partida da fita.
4 : estado final, a fita possui o valor N+1.

b. Mostre a sequncia de ID's de sua TM para a seguinte


entrada: $111.

0 $111 $1 111 $11 11 $111 1 $1111 $112 1 $12 10 $2 100


2 $000 15 000 4 1000

2) Construa uma TM sobre o alfabeto {a,b} para realizar as


seguintes operaes:
a. Mover a entrada uma clula para a direita.

Pgina | 54
b. Concatenar uma cpia do reverso de uma string de
entrada.

c. Apagar os b's de uma entrada.

Pgina | 55