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
–

O banco é de confiança
–

Pode tentar copiar o dinheiro, pagar várias vezes com o mesmo ou
pagar e cancelar com o mesmo
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
Start



1
redime
3
transfere
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
a
Start
paga
b
redime
d
entrega
entrega
Loja

e
transfere
f
entrega
g
Start
Cliente
Enquanto que o banco faz sempre o que deve, a loja pode cometer erros
–
–

c
redime
transfere
cancela
paga
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,
entrega, redime entrega, redime
cancela
Banco
a
Start
redime
3
paga
b
redime
d
c
redime
paga, cancela
e
transfere
paga, cancela, entrega
redime, transfere
f
entrega
transfere
paga, cancela
4
paga, cancela
entrega
entrega
Loja
transfere
paga, entrega
paga, cancela
paga, cancela
cancela
Start
1
g
Start
Cliente
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
1
P
b
d
c
P
P
e
P
P
S
P
f
g
P
S
S
Start
R
C
C
C
P
C
P
P
P,C
S
R
C
C
S
P
P
P
P,C
P,C
P,C
S
S
R
T
P
4
C
R S
P,C
C
S
P
P,C
P,C
3
C
S
P
2
R
R
P,C
T
S
P,C
S
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
(q2,0) = q2
(q1,0) = q1
(q0,0) = q2
(q2,1) = 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
Start
q0
0
0
q2
1
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
–

Função de transição estendida ^(q,w) = p
–
–
–

Conjunto das sequências de etiquetas para todos os caminhos do nó
de entrada até um dos nós de aceitação
q
w
p
estado
cadeia de entradas
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
–
–
–
–
–

Linguagem de um DFA A = (Q,  , , q0, F) é
–

^(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
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
Start
q0
,+,-
q1
0,…,9
.
q2
0,…,9
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
na cadeia de dígitos
–
–


+,-
.
0,…,9
q0 {q1} {q1}


Representa transições “espontâneas”
Lida-se com ele da mesma forma que com q

{q2} {q1 q4}

1
o não-determinismo, considerando que o
q2



{q3}
autómato pode estar em qualquer dos
estados antes ou depois da transição 
q3 {q5}


{q3}
Para saber todos os estados a que se
“chega” numa transição para um estado q,
calcula-se EClose(q)
–

EClose(q0)= {q0,q1}; EClose(q3)= {q3,q5}
q4


{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}
–

–
2. 
k
i 1
 ( p i , a )  { r1 ,..., rm }
m
ˆ
EClose ( r j )
 3.  ( q , w )  
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
–

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 
–

E e D aceitam a mesma linguagem
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, …, pk}
k
Calcular  i 1  E ( p i , a )  { r1 ,..., rm }
m
ˆ
Terminar com  D ( S , a )   j 1 EClose ( r j )
Autómatos finitos-21
Download

Autómatos finitos