1 Computabilidade e Linguagens Formais Autómatos finitos Gabriel David / Cristina Ribeiro
Jan 08, 2016
1
Computabilidade e Linguagens Formais
Autómatos finitos
Gabriel David / Cristina Ribeiro
Autómatos finitos-2
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-3
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-4
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-5
Banco
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
1 3Starttransfereredime
2
4
cancela
Autómatos finitos-6
Loja e 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
a bStartredimepaga
fdtransfere
credime
getransfere
entrega entrega entrega Start
pagacancela
Loja Cliente
Autómatos finitos-7
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-8
Transições completas
1 3Starttransfereredime
2
4
cancela
a bStartredimepaga
fdtransfere
credime
getransfere
entrega entrega entrega Start
paga, cancela, entregaredime, transfere
Loja Cliente
Banco
cancela paga, cancela paga, cancela paga, cancela
paga, cancelapaga, cancelapaga, cancela
paga, entrega
paga, cancela,entrega, redime
paga, cancela,entrega, redime
paga, entrega
Autómatos finitos-9
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-10
Autómato produto
StartSP
S S
C C C
P P P
PPP
S S
S
C C C
P P P
PPP
P
SP
R
S S
R
C P,C P,C P,C
P,CP,CP,C
S S
R S
T T
P,C P,C P,C
P,CP,CP,C
P
1
2
3
4
a b c d e f g
CR R
C
R
Autómatos finitos-11
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-12
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-13
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-14
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ó
Start q0 q2
0q1
1
1 0
0, 1
Autómatos finitos-15
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-16
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-17
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-18
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)
Startq1
,+,-q2
.q3
0,…,9
q5
q0
q4
0,…,9 .
0,…,9
0,…,9
Autómatos finitos-19
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
– Representa transições “espontâneas”– Lida-se com ele da mesma forma que com
o não-determinismo, considerando que o autómato pode estar em qualquer dos estados antes ou depois da transição
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}
+,- . 0,…,9
q0 {q1} {q1}
q1 {q2} {q1 q4}
q2 {q3}
q3 {q5} {q3}
q4 {q3}
*q5
Autómatos finitos-20
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.
3.
– (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
},...,{)( 11 , m
k
i i rrap
m
j jrEClosewq1
)(),(ˆ
Autómatos finitos-21
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, …, pk}
– Calcular – Terminar com
},...,{)( 11 , m
k
i iE rrap
m
j jD rECloseaS1
)(),(ˆ