210 likes | 311 Views
Computabilidade e Linguagens Formais. Autómatos finitos. Gabriel David / Cristina Ribeiro. Dinheiro electrónico. Definir um protocolo para a utilização de dinheiro electrónico Um fic heiro que o cliente tem e envia à loja para pagamento de bens
E N D
Computabilidade e Linguagens Formais Autómatos finitos Gabriel David / Cristina Ribeiro
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)
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
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
Banco 2 • 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 cancela redime transfere 1 3 4 Start
Loja e Cliente cancela • 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 transfere paga redime paga a f b d Start entrega entrega entrega Start transfere redime Loja g Cliente c e
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
Transições completas paga, entrega 2 paga, cancela, entrega, redime paga, cancela, entrega, redime cancela redime transfere 1 3 4 Banco Start paga, entrega cancela paga, cancela paga, cancela paga, cancela paga, cancela, entrega redime, transfere transfere paga redime a f b d Start entrega entrega entrega Start transfere redime Loja g Cliente c e paga, cancela paga, cancela paga, cancela
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ómato produto d e a b c f g P P P P P P P S S S 1 Start R R C C C C C C C S S P S 2 P P P P P P P,C C P,C P,C P,C P,C P,C P S S S 3 R R T T R R S S P S 4 P,C P,C P,C P,C P,C P,C C
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)
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
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})
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 0 1 Start q0 q2 q1 0, 1
Tabelas de transição • Tabela de transição é representação tabular da função • Estados linhas • Entradas colunas • Estado inicial seta • Estados finais asterisco
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
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 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 Start q0 q2 q3 q5 q1 . 0,…,9 q4
-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} Notação formal -NFA
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
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 • -NFAE = (QE, , E, q0, FE) DFAD = (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