1 / 21

Computabilidade e Linguagens Formais

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

fuller
Download Presentation

Computabilidade e Linguagens Formais

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computabilidade e Linguagens Formais Autómatos finitos Gabriel David / Cristina Ribeiro

  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)

  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

  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

  5. 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

  6. 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

  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

  8. 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

  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

  10. 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

  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)

  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

  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})

  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ó 1 0 0 1 Start q0 q2 q1 0, 1

  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

  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

  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

  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) 0,…,9 0,…,9 ,+,- . 0,…,9  Start q0 q2 q3 q5 q1 . 0,…,9 q4

  19. -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

  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 

  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 • -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

More Related