Escolar Documentos
Profissional Documentos
Cultura Documentos
Autómatos finitos
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
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
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
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)
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
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
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