• Nenhum resultado encontrado

Linguagens Formais e Autômatos

N/A
N/A
Protected

Academic year: 2019

Share "Linguagens Formais e Autômatos"

Copied!
49
0
0

Texto

(1)

DCC063

Linguagens Formais

e Autômatos

(2)

 Tipos de Linguagem

Autômatos de Pilha

2

Tipo 0 Linguagens Irrestritas

Tipo 1 Linguagens Sensíveis ao Contexto

Tipo 2 Linguagens Livres de Contexto

(3)

 Hierarquia de Chomsky

3

Autômatos de Pilha

(4)

 Reconhecedores decidem se uma cadeia w

pertence ou não a uma dada linguagem L(G)

 Exemplo : L= {aibi | i>0}

 ab  L?, aabb  L?, aaabbb  L?, aaab  L?

4

Autômatos de Pilha

=

não

sim

G

L

(5)

 Reconhecedores  Linguagens:

5

Autômatos de Pilha

Linguagem Reconhecedor

Irrestrita

Sensível ao Contexto Máquina de Turing

Livre de contexto Autômato de Pilha

(6)

Conceito Intuitivo

 Suponha L uma LLC sobre o alfabeto . Verificar

se uma cadeia w pertence a L.

Uso de Pinos e Discos

6

(7)

Conceito Intuitivo

 Exemplo: L= {vcvR | v(a,b)*, vR é a cadeia

reversa de v}

 Assim  = {a, b, c}. Queremos saber: abaacaaba 

L? , abaca  L?

7

(8)

Conceito Intuitivo

 Usaremos uma pilha (pino) e dois discos: preto e

branco. Para cada símbolo de entrada procederemos da seguinte forma:

Etapa 1: Se achar a empilhe um disco preto, e se achar b, um disco branco.

Etapa 2: Se achar c mude de atitude, e prepare-se para desempilhar discos.

8

(9)

Conceito Intuitivo

Etapa 3: Compare o símbolo de entrada com o que está no topo da pilha:

◼ Se for a e o topo da pilha é ocupado por um disco preto

desempilhe o disco; ou

◼ Se for b e o topo da pilha é ocupado por um disco

branco, desempilhe o disco.

 Se em alguma situação nenhuma das etapas

acima puder ser aplicada, então pare: wL.

9

(10)

Conceito Intuitivo

 Verificar se w = abcba pertence a L? Sim

10

Autômatos de Pilha

Símbolo de

entrada Faz Pilha

Resta na entrada

a Empilha disco preto bcba

b Empilha disco branco cba

c Mudar de atitude ba

b Compara e Desempilha a

(11)

Conceito Intuitivo

 Verificar se w = aabcba pertence a L? Não

11

Autômatos de Pilha

Símbolo de

entrada Faz Pilha

Resta na entrada

a Empilha disco preto abcba

a Empilha disco preto bcba

b Empilha disco branco cba

c Muda de atitude ba

b Compara e Desempilha a

(12)

Conceito Intuitivo

 Verificar se w = cab pertence a L? Não

Conclusão: A entrada deverá ser aceita se, e

somente se, ao final da execução do processamento ela foi totalmente consumida e a pilha está vazia.

12

Autômatos de Pilha

Símbolo de

entrada Faz Pilha

Resta na entrada

c Muda de atitude ab

(13)

13

Autômatos de Pilha

a1 a2 .... ai .... an

Controle +

q

s1 s2

....

sm

Fita de leitura

Registrador com estado inicial Pilha

topo

Sentido único

(14)

Definição Formal

 Um autômato de pilha não determinístico M é

definido como:

M = Σ, Γ, 𝑄, 𝑞1, 𝐹, 𝛿

 onde:

 Σ : Alfabeto de entrada

 𝚪 : Alfabeto da pilha

 𝑄 : Conjunto de estados: 𝑞1, 𝑞2, ⋯ , 𝑞𝑛  𝑞1 : Estado inicial: 𝑞1 ∈ 𝑄

 𝐹: Conjunto de estados finais: 𝐹 ⊆ 𝑄

 𝛿: Função de transição:

𝛿 = 𝑄 × Σ ∪ 𝜀 × Γ ∪ 𝜀 → 𝜌 𝑄 × Γ∗

14

(15)

Definição Formal

 Entendendo a função de transição:

 Seja M um AP e suponha que: qQ, 

{}

e 

{

}

Dados p

Q e u*, a transição (q, , ) → (p, u)

 M muda para o estado p.

 M troca  por u no topo da pilha.

15

(16)

Definição Formal

 Casos onde aparecem o

:

16

Autômatos de Pilha

Casos Interpretação

 = , (q, , )→ (p,u) A entrada não é consultada

 = , (q, , ) → (p,u) A topo da pilha não é consultado = = , (q, , ) → (p,u) Nem a entrada, nem o topo da pilha

são consultados.

   e u = , (q, , ) → (p, ) Remove  da pilha (desempilha)  =  e u  , (q, , ) → (p, u) Empilha u

(17)

Exemplos

 Exemplo1: Criar um Autômato de Pilha M1 para

L1= {vcvR | v(a,b)* , vR é a cadeia reversa de v}

  : {a, b, c}

 : {a, b}

17

(18)

Exemplos

 : função de transição:

 Q = {q1, q2}, q1 = q1 e F = {q2}

18

Autômatos de Pilha

(

)

(

)

(

)

(

)

(

)

q

Desempilha

(19)

 A função de transição pode ser colocada em

forma de tabela. Para o autômato M1 acima:

19

Autômatos de Pilha

Estado Entrada Topo da

pilha Transições Descrição

q1 a  (q1, a) Acha a e o empilha.

q1 b  (q1, b) Acha b e o empilha.

q1 c  (q2, ) Acha c e muda de estado.

* q2 a a (q2, ) Acha a na entrada e na pilha e o desempilha

(20)

 Forma gráfica (diagrama) de uma transição

20

Autômatos de Pilha

p

𝜎, 𝛾, 𝑢

q

Estado anterior

Símbolo lido da fita

Estado novo

Símbolo lido da pilha (topo)

(21)

Exemplos

 Exemplo2: Criar um Autômato de Pilha M2 para

L2= {vvR | v(a,b)* , vR é a cadeia reversa de v}

  : {a, b}

 : {a, b}

21

(22)

Exemplos

 Exemplo2: função de transição:

 Q = {q1, q2}, q1 = q1 e F = {q2}

22

Autômatos de Pilha

Estado Entrada Topo da pilha

Transições Descrição

q1 a  (q1, a) Acha a e o empilha. q1 b  (q1, b) Acha b e o empilha. q1   (q2, ) Muda de estado.

q2 a a (q2, ) Acha a na entrada e no topo e o desempilha

(23)

Exemplos

 Exemplo2: obs:

 O autômato M2 deverá adivinhar o momento em

que irá alcançar o centro da cadeia de entrada e mover-se para o estado q2 de um modo não determinístico. M2 é não determinístico.

 Assim, sempre que M2 estiver no estado q1,

poderá não-deterministicamente, escolher entre adicionar o próximo símbolo de entrada à pilha ou mover-se para o estado q2 sem consumir qualquer símbolo de entrada.

23

(24)

Exemplos

 Exemplo 3: L = {aibi | i  0}  Estratégia:

Etapa 1: Se achar um a na entrada, ponha um a na pilha.

Etapa 2: Se achar um b mude de atitude e passe a comparar a entrada com a pilha, removendo um disco da pilha para cada b que achar na entrada

(incluindo o primeiro!)

24

(25)

Exemplos

 Exemplo 3: M = ( {a,b}, {a}, {q1, q2}, q1, {q1, q2},

). Onde  está na tabela

25

Autômatos de Pilha

Estado Entrada Topo da pilha Transições Descrição

q1 a  (q1, a) Empilha a.

q1 b a (q2, ) Desempilha a e muda de estado.

(26)

Exemplos

 Exemplo 4: L = {w  {a, b} | o número de a’s é

igual ao número de b’s}

 Procedimento:

Etapa 1: Empilhar a para cada a encontrado e b para cada b encontrado na entrada.

Etapa 2: Empilhar um “b sobre um a” tem o efeito de desempilhar o b da pilha e vice-versa.

26

(27)

Exemplos

 Exemplo 4:  está na tabela:

27

Autômatos de Pilha

Estado Entrada Topo da pilha

Transições Descrição

q1 a a (q1, aa) Acha a e o empilha. q1 b b (q1, bb) Acha b e o empilha. q1 a b (q1, ) Desempilha um b. q1 b a (q1, ) Desempilha um a.

(28)

Exemplos

 Exemplo 4:

 A saída é inventar um novo símbolo  para o

alfabeto da pilha

 Este símbolo é acrescentado à pilha ainda vazia,

no início da computação e dever ser retirado no final.

 Se q1 for o estado inicial e q3 final, teremos:

(q1, , ) = {(q2, )}

(q2, , ) = {(q3, )}

28

(29)

Exemplos

 Exemplo 4: Resumindo, temos um autômato que

tem

 {a, b} como alfabeto de entrada;

 {a, b, } como alfabeto da pilha;

 estados q1, q2 e q3;  estado inicial q1;  estado final q3;

 e a função de transição é definida na tabela a seguir

29

(30)

Exemplos

 Exemplo 4: função de transição

30

Autômatos de Pilha

Estado Entrada Topo da pilha

Transições Descrição

q1   (q2, ) Marca o fundo da pilha q2 a  (q2, a) Acha a e empilha um a q2 b  (q2, b) Acha b e empilha um b q2 a a (q2, aa) Acha a e empilha um a

(31)

Exemplos

 Exemplo 4: função de transição

31

Autômatos de Pilha

Estado Entrada Topo da pilha

Transições

q1   (q2, ) q2 a  (q2, a) q2 b  (q2, b) q2 a a (q2, aa)

(32)

Exemplos. Exemplo 4: computação para abbbabaa

32

Autômatos de Pilha

Estado Entradas não lidas Pilha Comentário

q1 abbbabaa  Configuração inicial

q2 abbbabaa  Marcador

q2 bbabaa  Remove um a

q2 babaa b Começa uma pilha b’s

q2 abaa bb

q2 baa b

q2 aa bb

q2 a b

q2  

q3   Aceita.

(33)

Exercícios

1) Considere o autômato de pilha não determinístico M com alfabeto  = {a, b} e  = {a}, estados q1 e q2, estado inicial q1 e final q2 e transições dadas pela tabela:

a)Descreva todas as possíveis sequências de transições de M na entrada aba.

b)Mostre que aba, aa e abb não pertencem a L(M) e que baa, bab e baaaa pertencem a L(M).

33

Autômatos de Pilha

Estrado Entrada Topo da pilha transições

q1 a  (q1, a)

(q2, )

q1 b  (q1, a)

q2 a a (q2, )

(34)

Exercícios

2) Ache um autômato de pilha não determinístico cuja linguagem aceita é L, onde:

a) L={anbn+1| n0};

b) L={anb2n| n0};

c) L={anbmcn| m,n1};

d) L={anbman+m| m,n1};

3) Considere a linguagem dos parênteses balanceados.

a) Dê exemplo de uma gramática livre de contexto que gere esta linguagem.

b) Dê exemplo de um autômato de pilha não determinístico que aceita esta linguagem.

34

(35)

Linguagem aceita por um AP

Aceitação por Estado Final: (similar a AF)

Conjunto de todas as cadeias para as quais há pelo menos uma trajetória, a partir do estado inicial, que faz o autômato de pilha P =

Σ, Γ, 𝑄, 𝑞1, 𝐹, 𝛿 entrar num estado final:

𝐿 𝑃 = 𝑤 𝑞1, 𝑤, 𝜀 ⊢∗ 𝑝, 𝜀, 𝛼 , 𝑝 ∈ 𝐹

 Última configuração 𝑝, 𝜀, 𝛼 da computação:

 𝑝: estado final do AP P;

 𝜀: a cadeia de entrada é totalmente consumida;

 𝛼: a cadeia que resta na pilha (não vazia).

35

(36)

Linguagem aceita por um AP

Aceitação por Pilha Vazia: Conjunto de todas as

cadeias para as quais pelo menos uma trajetória, a partir do estado inicial, faz com que a pilha do AP

P = Σ, Γ, 𝑄, 𝑞1, 𝐹, 𝛿 fique vazia:

𝑁 𝑃 = 𝑤 𝑞1, 𝑤, 𝜀 ⊢∗ 𝑝, 𝜀, 𝜀

 Última configuração 𝑝, 𝜀, 𝜀 da computação:

 𝑝: estado qualquer do AP P;

 𝜀: a cadeia de entrada é totalmente consumida;

 𝜀: a pilha está vazia. Portanto, se o AP aceita por pilha vazia, o conjunto de estados finais é irrelevante.

36

(37)

GLC e Autômatos de Pilha

Teorema: Uma linguagem é livre de contexto se, e

somente se, é aceita por algum autômato de pilha não determinístico

 Iremos elaborar uma receita que, dada uma

gramática livre de contexto G = (N, T, P, S), construiremos um autômato de pilha não determinístico M que aceita L(G).

 Não desenvolveremos a recíproca, isto é, dado M

um autômato de pilha não determinístico, construir G a partir de M.

37

(38)

GLC e Autômatos de Pilha

 Sejam

G = (N, T, P, S), uma gramática livre de contexto e

 M = (, , Q, q1, F, ), o autômato de pilha a ser construído a partir de G .

 Como M deve aceitar L(G), é claro que seu

alfabeto de entrada  tem que ser igual a T.

38

(39)

GLC e Autômatos de Pilha

 Continuando, temos:

  = T (alfabeto de entrada é igual conjunto de terminais de G)

 q1 = i (estado inicial i)

  = T  N (alfabeto de pilha é a união de terminais e não

terminais de G).

39

(40)

GLC e Autômatos de Pilha

 O autômato deve começar pondo símbolo inicial

S no fundo da pilha  (i, , ) = {(f, S)},

 onde f, diferente de i, é um estado do autômato.  Daí em diante toda a ação vai se processar na

pilha, e podemos simular a derivação sem nenhuma mudança de estado adicional. Portanto, f será o estado final de M.

40

(41)

GLC e Autômatos de Pilha

 Construção de AP Através de GLC

 o alfabeto de entrada  = T;

 o alfabeto da pilha  = TN;

 o conjunto de estados Q = {i, f};

 o estado inicial i;

 o conjunto de estados finais F = {f};

41

(42)

GLC e Autômatos de Pilha

 a função de transição

 que é definida por

42

Autômatos de Pilha

  (  ) (  )   ( )*

, ,

: i fT    TN   → i fTN

(43)

GLC e Autômatos de Pilha

 Este autômato executa dois tipos diferentes de

transição a partir do estado final f.

Transições de substituições: substituem uma variável X no topo da pilha por  (pertence a TN*) quando

X →  é uma regra de G.

Transições de remoção: removem terminais que aparecem casados na pilha e na entrada.

 Qualquer computação no autômato assim

construído simula uma derivação mais a esquerda em G.

43

(44)

GLC e Autômatos de Pilha. Exemplo 1

 Considere a gramática G2 cujas regras são

E → E + T | T T → T * F | F F → (E) | id

 Assim, deve-se ter

 = {id, +, *, (, )}

 = { id, +, *, (, ), E, T, F} Q = {i, f}

q1 = i F = {f}

44

(45)

GLC e Autômatos de Pilha. Exemplo 1

 E a função de transição é definida pela tabela

45

Autômatos de Pilha

Estado Entrada Topo da pilha Transição

i   (f, E)

f  E (f, E+T)

(f, T)

f  T (f, T*F)

(f, F)

f  F (f,(E))

(f, id)

f ( ( (f, )

f ) ) (f, )

f + + (f, )

f * * (f, )

(46)

GLC e Autômatos de Pilha. Exemplo 1

 Uma computação para a cadeia id + id * id

46

Autômatos de Pilha

 (i, id+id*id, )

 (f, id+id*id, E)

 (f, id+id*id, E+T)

 (f, id+id*id, T+T)

 (f, id+id*id, F+T)

 (f, id+id*id, id+T)

 (f, +id*id, +T)

 (f, id*id, T)

 (f, id*id, T*F)

 (f, id*id, F*F)

 (f, id*id, id*F)

 (f, *id, *F)

 (f, id, F)

 (f, id, id)

(47)

GLC e Autômatos de Pilha. Exemplo 2

 Considere a gramática G3 cujas regras são

S → aSa | bSb | c

 L(G3) = {wcwR | w{a, b}* }. Autômato:

 = {a, b, c}

 = {a, b, c, S} Q = {i, f}

q1 = i F = {f}

47

(48)

GLC e Autômatos de Pilha. Exemplo 2

 E a função de transição é definida pela tabela

48

Autômatos de Pilha

Estado Entrada Topo da pilha Transição

i   (f, S)

f  S (f, aSa)

(f, bSb) (f, c)

f a a (f, )

f b b (f, )

(49)

GLC AP. Ex 2. Computação de abbcbba

49

Autômatos de Pilha

Estado Entradas não lidas Pilha Comentário

i abbcbba  Configuração inicial

f abbcbba S

f bbcbba Sa

f bbcbba bSba

f bcbba Sba

f bcbba bSbba

f cbba Sbba

f cbba cbba

f bba bba

f ba ba

f abbcbba aSa

f a a

Referências

Documentos relacionados

entrevistados e dividimos em categorias a serem analisadas, são elas: Livro Didático de Educação Física existentes no contexto escolar; A adoção do Livro Didático nas aulas

Uma técnica muito utilizada pelas empresas para melhorar seus processos é o método DMAIC, que alinhado com a metodologia Seis Sigma visa a resolução de problemas na

Os profissionais do NDRO acreditam que o Laboratório desenvolve atividades para o aperfeiçoamento pessoal e profissional de seus colaboradores, capacitando-os não só

 Desmembrar as formas sentenciais de comprimento 3 ou mais em uma cascata de produções, cada uma com uma forma sentencial consistindo em 2

A aplicação da Análise Preliminar de Riscos foi importante para conhecer os riscos em potencial das atividades realizadas pela empresa nos setores de descarga,

@XmlAttribute(name = "ANO" ) protected Integer ano; @XmlAttribute(name = "PAIS" ) protected String pais; @XmlAttribute(name = "DOI" ) protected String DOI;

(Arthur Schopenhauer, s/d).. Mesmo com medidas de controles e higiene, surtos de doenças transmitidas pelos alimentos, como salmonelose estão aumentando

Portanto, conclui-se que o princípio do centro da gravidade deve ser interpretado com cautela nas relações de trabalho marítimo, considerando a regra basilar de