Você está na página 1de 21

Computabilidade e Linguagens Formais

 Autómatos finitos

Gabriel David / Cristina Ribeiro


1
Dinheiro electrónico
 Definir um protocolo para a utilização de dinheiro electrónico
– Um ficheiro que o cliente tem e envia à loja para pagamento de bens
– A “emissão” do ficheiro compete a um banco e é personalizada para o
cliente para reduzir as hipóteses de falsificação e de cópia
 Falsificação: técnicas criptográficas
 Cópia: intervenção do banco nas transacções e um protocolo de utilização que
garanta que só as operações permitidas são efectuadas – modelar por autómato
 Interacção entre os participantes, em cinco eventos
– O cliente paga (enviar o dinheiro/ficheiro para a loja)
– O cliente cancela (enviar o dinheiro para o banco que credita a conta do
cliente nesse valor)
– A loja entrega os bens ao cliente
– A loja redime o dinheiro (envia o ficheiro para o banco e recebe outro no
mesmo valor mas em seu nome)
– O banco transfere o dinheiro do cliente para a loja (cria novo ficheiro)

Autómatos finitos-2
Protocolo
 Estudo para um só ficheiro; reprodutível para milhões
 Assume-se que o cliente não é de confiança
– Pode tentar copiar o dinheiro, pagar várias vezes com o mesmo ou
pagar e cancelar com o mesmo
 O banco é de confiança
– Deve controlar que a mesma loja, ou duas diferentes, não tentam
redimir o mesmo dinheiro ou que não se redime e cancela
 A loja deve ter cuidado em não entregar os bens antes de ter
a certeza de que o dinheiro é válido

Autómatos finitos-3
Modelo separado
 Comportamento de cada participante descrito por um
autómato
– Estado corresponde a uma situação do participante e memoriza os
eventos ocorridos ou não
– As transições entre estados dão-se quando os eventos ocorrem
– Eventos externos, independentemente de quem os desencadeia
 Interessam as sequências de eventos e não quem os pode causar
– Num autómato só se representam os eventos que afectam o
participante
 Quando o cliente paga à loja o banco não é afectado; só sabe do facto
quando a loja redime o dinheiro

Autómatos finitos-4
Banco
2
cancela
redime transfere
Start
1 3 4

 Estado 1: o banco emitiu o dinheiro, debitando na conta do cliente, e


nada mais aconteceu
 Se o cliente cancelar, o banco devolve o dinheiro, creditando o cliente,
e passa para o estado 2, de onde não sairá
 Se, em 1, a loja redimir o dinheiro, passa para o estado 3 e, logo que
tenha preparado o dinheiro para a loja, transfere-o e fica em 4 de vez

Autómatos finitos-5
Loja e Cliente
cancela
paga redime transfere paga
Start
a b d f
entrega entrega entrega
Start
redime transfere
Loja c e g Cliente

 Enquanto que o banco faz sempre o que deve, a loja pode cometer erros
– A entrega e as operações financeiras são processos separados que podem
ocorrer por qualquer ordem
– Se o dinheiro se vier a revelar inválido, pode acontecer ter já entregue os
bens e não chegar a receber
 O cliente não tem restrições, pelo que pode pagar e cancelar várias
vezes, ficando sempre no mesmo estado
– Compete ao banco garantir que o processo funciona bem
Autómatos finitos-6
Ignorar acções
 Faltam várias transições
– O evento cancelar não afecta a loja
– Mas, pela sua definição formal, um autómato finito, cada vez que
recebe uma entrada X, tem que seguir o arco X, nem que seja para o
mesmo estado, senão morre
– Portanto há que acrescentar arcos para todos os eventos mantendo o
estado quando este não é afectado
 Isto resolve o problema das entradas maliciosas, por
exemplo um segundo evento paga, no estado e, que também
mataria o autómato
 Para simplificar, arcos entre os mesmos estados
representam-se como um único, com várias etiquetas

Autómatos finitos-7
Transições completas
paga, entrega

2
paga, cancela, paga, cancela,
cancela entrega, redime entrega, redime
redime transfere
Banco Start
1 3 4
paga, entrega
cancela paga, cancela paga, cancela paga, cancela
paga, cancela, entrega
paga redime transfere
Start
a b d f redime, transfere

entrega entrega entrega


Start
redime transfere
Loja c e g Cliente
paga, cancela paga, cancela paga, cancela

Autómatos finitos-8
Interacção
 Cliente nunca morre nem muda de estado
 Falta perceber quais as combinações de estados que podem
ocorrer entre o banco e a loja – autómato produto
– Tem um nó por cada par de nós dos dois autómatos separados

 Há estados não acessíveis


 É possível estudar o comportamento global (validar o
protocolo) e perceber que é possível entregar os bens e não
chegar a receber o dinheiro
– Caso do (2,c)
– No caso (3,e) ainda há esperança

Autómatos finitos-9
Autómato produto
a b c d e f g
P P P P P P
P S S S
1 Start
R R
C C C C C C C

P S S S
2
P P P P P P
C P,C P,C P,C P,C P,C P,C
P S S S
3
R R
T T

P R S R S S
4
C P,C P,C P,C P,C P,C P,C
Autómatos finitos-10
Autómatos finitos deterministas (DFA)
 Determinista
– Num estado, para cada entrada, há apenas uma transição possível
 Um DFA consiste de
– Conjunto finito de estados (Q)
– Conjunto finito de símbolos de entrada ()
– Função de transição de estados e entradas para estados ( p = (q,a) )
 um diagrama do DFA é um grafo que representa 
– Estado inicial (q0  Q)
– Conjunto de estados finais ou de aceitação (F  Q)

– DFA: A = (Q,  , , q0, F)

Autómatos finitos-11
Processar cadeias
 A linguagem de um autómato é o conjunto de todas as
cadeias que o DFA aceita
– Cadeia de entrada: a1a2… an
– Estado inicial: q0
– Evolução: (qi-1,ai) = qi
– Se qn  F então a cadeia está aceite

Autómatos finitos-12
Definir um DFA
 Exemplo: reconhecedor de cadeias binárias que contenham a
sequência 01
– {x01y | x e y são cadeias de 0’s e 1’s}
–  = {0,1}
– Q, tem que memorizar se já viu 01 (q1), se acabou de ver o 0 (q2),
ou se não viu nada de relevante (q0) Q={q0, q1, q2}
– Estado inicial: q0
– Função de transição de estados
 (q0,1) = q0 (q0,0) = q2
 (q2,0) = q2 (q2,1) = q1
 (q1,0) = q1 (q1,1) = q1
– Estados finais: {q1}
– A = (Q,  , , q0, F) = ({q0, q1, q2}, {0,1}, , q0, {q1})

Autómatos finitos-13
Diagramas de transição
 Diagrama de transição para um DFA A = (Q,  , , q0, F) é
um grafo
– estado em Q  nó
– (q,a) = p onde q, p  Q e a    arco de q para p com etiqueta a
 Vários arcos de q para p juntam-se, fazendo lista de etiquetas
– estado inicial  seta com Start
– estados em F  círculo duplo no nó
1 0

Start 0 1
q0 q2 q1 0, 1

Autómatos finitos-14
Tabelas de transição
 Tabela de transição é representação tabular da função 
– Estados  linhas
– Entradas  colunas
– Estado inicial  seta
– Estados finais  asterisco

0 1
q0 q2 q0
*q1 q1 q1
q2 q2 q1

Autómatos finitos-15
Extensão da função de transição
 Linguagem do DFA
– Conjunto das sequências de etiquetas para todos os caminhos do nó
de entrada até um dos nós de aceitação
 Função de transição estendida ^(q,w) = p
– q estado
– w cadeia de entradas
– p estado a que se chega partindo de q e aplicando w
 Definição indutiva em |w|
– Base: ^(q,) = q
– Indução: seja w=xa então ^(q,w) = (^(q,x), a)
 Se ^(q,x) = p e (p,a) = r, para ir de q até r, vai-se de q até p e um passo
final para r

Autómatos finitos-16
Linguagem de um DFA
 Evolução do DFA que lê cadeias com nº par de 0’s e de 1’s
para entrada w = 110101
– ^(q0,) = q0
– ^(q0,1) = (^(q0, ),1) = (q0,1) = q1
– ^(q0,11) = (^(q0,1),1) = (q1,1) = q0
– …
– ^(q0,110101) = (^(q0,11010),1) = (q1,1) = q0

 Linguagem de um DFA A = (Q,  , , q0, F) é


– L(A) = {w | ^(q0,w)  F}
 Se uma linguagem L é L(A) para um DFA A então é uma
linguagem regular

Autómatos finitos-17
Autómatos com transições 
 Exemplo: -NFA que aceita números decimais
– Sinal + ou – optativo
– Cadeia de dígitos
– Um ponto decimal
– Outra cadeia de dígitos (pelo menos uma das cadeias não vazia)

0,…,9 0,…,9

Start ,+,- . 0,…,9 


q0 q1 q2 q3 q5

0,…,9 .
q4

Autómatos finitos-18
Notação formal -NFA
 -NFA E = (Q,  , , q0, F)
– A principal diferença está na função de transição (q,a), para lidar com 
 Estado q  Q e entrada a    {}
 Exemplo: E = ({q0, q1, q2, q3, q4, q5}, {.,+,-,0,…,9}, , q0, {q5})
 0 símbolo da cadeia vazia  não é visível
  +,- . 0,…,9
na cadeia de dígitos
– Representa transições “espontâneas” q0 {q1} {q1}  
– Lida-se com ele da mesma forma que com q   {q2} {q1 q4}
1
o não-determinismo, considerando que o
autómato pode estar em qualquer dos q2    {q3}
estados antes ou depois da transição  q3 {q5}   {q3}
 Para saber todos os estados a que se
q4   {q3} 
“chega” numa transição para um estado q,
calcula-se EClose(q) *q5    
– EClose(q0)= {q0,q1}; EClose(q3)= {q3,q5}
Autómatos finitos-19
Transições estendidas
 EClose( q )
– Base: o estado q está em EClose(q)
– Indução: se p está em EClose(q) e existe uma transição de p para r com
etiqueta , então r também está em EClose(q)
 Transições estendidas ̂
– Base: ̂ (q,) =EClose(q)
– Indução: w=xa, a   (portanto a ≠ )
 1. seja ̂ (q,x)={p1, p2, …, pk}
k
 2. ( pi , a)  {r1 ,..., rm }
i 1


ˆ m
3.  ( q, w)   EClose( r j )
j 1
– (1) dá os estados a que se chega a partir de q seguindo um caminho
etiquetado com x que pode incluir e terminar numa ou mais transições 

Autómatos finitos-20
Eliminação de transições 
 Dado um -NFA E existe sempre um DFA D equivalente
– E e D aceitam a mesma linguagem
 Técnica da construção de subconjuntos
– -NFA E = (QE,  , E, q0, FE)  DFA D = (QD,  , D, qD, FD)
 QD é o conjunto dos subconjuntos de QE fechados 
– S= EClose(S)
 Estado de partida qD = EClose(q0)
 FD = {S | S está em QD e S ∩ FE ≠}
 Transição D(S,a), para a em  e S em QD
– S={p1, p2, …,
k
pk}
– Calcular i 1  E ( pi , a)  {r1 ,..., rm }
ˆ
Terminar com  D ( S , a ) 
m
–  j 1
EClose(rj )

Autómatos finitos-21

Você também pode gostar