• Nenhum resultado encontrado

Introdução à Teoria dos Autômatos – Autômato de Pilha

N/A
N/A
Protected

Academic year: 2019

Share "Introdução à Teoria dos Autômatos – Autômato de Pilha"

Copied!
70
0
0

Texto

(1)

Introdução à Teoria

dos Autômatos

Autômato de Pilha

(2)

Introdução

• Um Autômato de Pilha (AP) é um modelo de máquina de estados, assim como os AFs, que permite representar um determinado conjunto de linguagens.

• Em contraste com os AFs (que armazenam apenas o estado atual e a sequência de símbolos restantes), os APs possuem um mecanismo primitivo de memória capaz de registrar alguma informação sobre os passos anteriores da execução da máquina.

(3)

Alfabeto da Pilha

• Os símbolos que podem ser empilhados e desempilhados fazem parte de um alfabeto próprio, chamado de alfabeto da pilha e é designado pela letra Γ (gama)

(4)

Empilhamento e

Desempilhamento

• Exemplo de sequência de empilhamento e

desempilhamento de símbolos, com Γ = {X,Y,Z}

X Y X X Z X X X

Pilha vazia Empilhamento de X Empilhamento de Y

Desempilhamento de Y Empilhamento de Z Desempilhamento de Z

(5)

Empilhamento e

Desempilhamento

• Pode-se também empilhar qualquer palavra, e a palavra λ também pode ser desempilhada

• Neste caso, o empilhamento ocorre na ordem inversa

X

Z Y

X

Y X

(6)

Empilhamento e

Desempilhamento

• Pode-se também empilhar qualquer palavra, e a palavra λ também pode ser desempilhada

• Neste caso, o empilhamento ocorre na ordem inversa

X X Z Y X X Y X X X X

Estado atual da pilha Empilhamento

da palavra ZY

Desempilhamento e empilhamento de YX A pilha pode empilhar uma sequência de símbolos, porém só

(7)

Iniciação e Reconhecimento

• O AP sempre inicia a sua execução com a pilha vazia

• O modelo padrão de AP reconhece uma palavra quando as três condições seguintes são obedecidas

simultaneamente

(8)

Representação da Pilha

• O conteúdo da pilha em um determinado instante é

representado por uma palavra s, onde s ∈ Γ*, cujo

conteúdo é a sequência de símbolos da pilha do topo para a base

Pilha vazia e representada pela palavra s = λ

Z Y X X

(9)

Transições

• Nos APs, as transições representam

 O símbolo da palavra consumida (assim como nos AFs)

 Um símbolo a ser desempilhado (ou λ, caso nada deva ser empilhado)

 Uma palavra a ser empilhada

B A

a, X/Y

δ(A,a,X) = (B,Y)

A função de transição opera sobre um argumento adicional (o símbolo, ou λ, que será desempilhado) e retorna uma tupla (que inclui a palavra que será empilhada)

(10)

Exemplo

• Transição

 Palavra de entrada: abcba

 Estado atual: A

 Pilha atual: s = XYYX

• A transição ocorre

• Após a transição

 Palavra de entrada: bcba (consumiu a)

 Estado atual: B

 Pilha atual: s = YYYX

(desempilhou X e empilhou Y)

B A

a, X/Y

(11)

Exemplo

• Transição

 Palavra de entrada: abcba

 Estado atual: A

 Pilha atual: s = XYYX

• A transição ocorre

• Após a transição

 Palavra de entrada: abcba (consumiu λ)

 Estado atual: B

 Pilha atual: s = YXYYX

(12)

Exemplo

• Transição

 Palavra de entrada: abcba

 Estado atual: A

 Pilha atual: s = XYYX

• A transição ocorre

• Após a transição

 Palavra de entrada: bcba (consumiu λ)

 Estado atual: B

 Pilha atual: s = ZZXYYX (desempilhou λ e empilhou ZZ)

B

A a

, λ /ZZ

(13)

Exemplo

• Transição

 Palavra de entrada: abcba

 Estado atual: A

 Pilha atual: s = XYYX

• A transição não ocorre

• Não é possível consumir b

(14)

Exemplo

• Transição

 Palavra de entrada: abcba

 Estado atual: A

 Pilha atual: s = XYYX

• A transição não ocorre

• É possível consumir a

• Mas não é possível

desempilhar Y pois não está no topo da pilha

B

A a

, Y /λ

(15)

Casos de Uso e Exemplos

• O caso de uso mais comum de APs é utilizar a pilha

como um contador de símbolos

 Em uma primeira etapa, a pilha é populada para registrar o número de ocorrências de um determinado símbolo de

entrada

(16)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0}

an bn

a, λ/X

b, X/λ

(17)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} A primeira transição

(18)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} A primeira transição

empilha um símbolo X para cada símbolo a da palavra de entrada

• As demais transições

desempilham um símbolo X para cada símbolo b da

palavra de entrada

an bn

a, λ/X

b, X/λ

(19)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: aaaabbbb

• Estado atual: an

(20)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: aaabbbb

• Estado atual: an

• Pilha atual: s = X

an bn

a, λ/X

b, X/λ

(21)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: aabbbb

• Estado atual: an

(22)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: abbbb

• Estado atual: an

• Pilha atual: s = XXX

an bn

a, λ/X

b, X/λ

(23)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: bbbb

• Estado atual: an

(24)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: bbb

• Estado atual: bn

• Pilha atual: s = XXX

an bn

a, λ/X

b, X/λ

(25)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: bb

• Estado atual: bn

(26)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: b

• Estado atual: bn

• Pilha atual: s = X

an bn

a, λ/X

b, X/λ

(27)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: λ

• Estado atual: bn

(28)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n 0} Palavra de entrada: λ

• Estado atual: bn

• Pilha atual: s = λ

an bn

a, λ/X

b, X/λ

b, X/λ

√ Palavra consumida √ Estado final

√ Pilha vazia

(29)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: aaaabb

• Estado atual: an

(30)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: aaabb

• Estado atual: an

• Pilha atual: s = X

an bn

a, λ/X

b, X/λ

(31)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: aabb

• Estado atual: an

(32)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: abb

• Estado atual: an

• Pilha atual: s = XXX

an bn

a, λ/X

b, X/λ

(33)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: bb

• Estado atual: an

(34)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: b

• Estado atual: bn

• Pilha atual: s = XXX

an bn

a, λ/X

b, X/λ

(35)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: λ

• Estado atual: bn

(36)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: λ

• Estado atual: bn

• Pilha atual: s = XX

an bn

a, λ/X

b, X/λ

b, X/λ

⨉ Palavra consumida ⨉ Estado final

⨉ Pilha vazia

(37)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: aabbbb

• Estado atual: an

(38)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: abbbb

• Estado atual: an

• Pilha atual: s = X

an bn

a, λ/X

b, X/λ

(39)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: bbbb

• Estado atual: an

(40)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: bbb

• Estado atual: bn

• Pilha atual: s = X

an bn

a, λ/X

b, X/λ

(41)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: bb

• Estado atual: bn

(42)

Casos de Uso e Exemplos

• Exemplo 1: {anbn | n ≥ 0} Palavra de entrada: bb

• Estado atual: bn

• Pilha atual: s = λ

an bn

a, λ/X

b, X/λ

b, X/λ

⨉ Palavra consumida ⨉ Estado final

⨉ Pilha vazia

(43)

Casos de Uso e Exemplos

(44)

Casos de Uso e Exemplos

• Exemplo 2: {anb2n | n 0}

• O número de b’s é o dobro do número de a’s

• Solução

 Empilhar dois símbolos para cada a consumido

Desempilhar um símbolo para cada b consumido

an bn

a, λ/XX

b, X/λ

(45)

Casos de Uso e Exemplos

• Exemplo 3: {a2nbn | n ≥ 0}

• O número de a’s é o dobro do número de b’s

A B

a, λ/X

(46)

Casos de Uso e Exemplos

• O “contador” implementado

pela pilha não precisa ser utilizado imediatamente

• A contagem pode ser necessária em um ponto mais adiante

• Exemplo 4:

• {anbman| n ≥ 0 e m > 0}

A B

a, λ/X

b, λ/λ

C

B C

b, λ/λ

a, X/λ

(47)

Casos de Uso e Exemplos

• O “contador” implementado

pela pilha não precisa ser utilizado imediatamente

• A contagem pode ser necessária em um ponto mais adiante

• Exemplo 4:

• Algumas transições não alteram a pilha, pois

(48)

Exercícios (FAÇA APD)

1. L = {xy | x

{a,b}*, y

{c,d}* e

|x| = |y| }

2. L = {a

m

b

n

c

m+n

| m, n ≥ 0}

3. L = {a

i

b

j

c

k

d

m

| i+j = k+m , i, j, k,

m ≥ 0}

4. L = {a

m

b

n

c

n

d

m

,| m,n

≥ 0}

(49)
(50)

Introdução

• No caso dos AFs, é simples determinar se ele é determinístico ou não

• Se houver transições λ, então o AF é não determinístico

• Se existir transição de saída a partir de todos os estados para cada símbolo do alfabeto de entrada e não houver mais de uma transição de saída para o mesmo símbolo a partir de algum estado, então o AF é determinístico

(51)

Introdução

• Nos APs, a questão é um mais complexa

(52)

Não Determinismo

• Há os casos óbvios de não

determinismo

• Duas transições idênticas levando a estados dis6ntos

• Mas esse não é o único caso!

B

A

0, Y/ λ

(53)

Não Determinismo

• Se o autômato entrar no estado A com o símbolo Y no topo da pilha, há dois

caminhos possíveis

• 1. Empilhar X e transitar para B

(54)

Não Determinismo

• A ambiguidade também

pode ocorrer com transições que seguem para o mesmo estado

• O autômato pode transitar de A para B com dois efeitos distintos

• 1. Consumir 0 e empilhar X

• 2. Consumir 0 e empilhar Y

B A

0, λ/X

(55)

Não Determinismo

• A ambiguidade pode ocorrer

até mesmo quando a

palavra a ser consumida é diferente

• O autômato pode transitar de A para B com dois efeitos distintos, caso o próximo símbolo seja 0 e a pilha con6ver X no topo

(56)

Não Determinismo

• Em resumo, a ambiguidade pode ocorrer dependendo dos seguintes fatores (para transições saindo do mesmo

estado)

• Símbolo a ser consumido da palavra de entrada

• Símbolo a ser re6rado da pilha

• Um AP é não determinístico se houver pelo menos duas transições compatíveis

• Transições compatíveis são aquelas que partem do mesmo estado e que podem ser executadas

(57)

Transições Compatíveis

(58)

Transições Compatíveis

B

A

a, λ / λ

C b, λ/ λ

As transições não são compatíveis!

O símbolo a ser

(59)

Transições Compatíveis

(60)

Transições Compatíveis

B

A

a, λ / λ

C a, λ/ λ

As transições são compatíveis!

O símbolo a ser

consumido (“a”) define a transição a ser

(61)

Transições Compatíveis

(62)

Transições Compatíveis

B

A

a, Y / λ

C a, X/ λ

As transições não são compatíveis!

Embora ambas consumam o mesmo símbolo (“a”), o símbolo no topo da pilha (“X” ou “Y”) decide qual é a transição a ser executada.

(63)

Transições Compatíveis

(64)

Transições Compatíveis

B

A

a, λ / λ

C a, X/ λ

As transições são compatíveis!

(65)

Transições Compatíveis

B

(66)

Transições Compatíveis

B

A

a, λ / λ

C

λ, X/ λ

As transições são compatíveis!

(67)

Transições Compatíveis

• Formalmente, duas

transições

B

A p1, d1/ e1

Note que transições compatíveis sempre partem do mesmo

estado!

Lembrando o conceito

O APN possui pelo menos duas transições compatíveis

O APD não possui transições compatíveis

B A

(68)

Exemplo

• L1 = { w ∈ {0,1}* | w = wR}

• Três casos A B

1, U/λ

?

0, Z/λ 1, λ/U

0, λ/z

Primeira metade: e o símbolo for • 1, empilha U • 0, empilha Z

(69)

Exemplo

• L1 = { w {0,1}* | w = wR}

• Três casos

• 1. |w| é par

 Ex: 0110

• 2. |w| é ímpar com 0 no meio

A B

1, U/λ

?

0, Z/λ 1, λ/U

0, λ/z

Primeira metade: e o símbolo for

(70)

Referências

Documentos relacionados

A tem á tica dos jornais mudou com o progresso social e é cada vez maior a variação de assuntos con- sumidos pelo homem, o que conduz também à especialização dos jor- nais,

Em relação aos conhecimentos de saúde oral constatou-se que pais/encarregados de educação e crianças estão informados sobre a presença, ou não, de dentes cariados, bem como,

Dessa forma, a partir da perspectiva teórica do sociólogo francês Pierre Bourdieu, o presente trabalho busca compreender como a lógica produtivista introduzida no campo

forficata recém-colhidas foram tratadas com escarificação mecânica, imersão em ácido sulfúrico concentrado durante 5 e 10 minutos, sementes armazenadas na geladeira (3 ± 1

Water and wastewater treatment produces a signi ficant amount of methane and nitrous oxide, so reducing these emissions is one of the principal challenges for sanitation companies

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

to values observed in mussels exposed to contaminated seawater (conditions A, B, C) (Figure 426.. 4B,

Para Souza (2004, p 65), os micros e pequenos empresários negligenciam as atividades de planejamento e controle dos seus negócios, considerando-as como uma