A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Computabilidade e Linguagens Formais

Apresentações semelhantes


Apresentação em tema: "Computabilidade e Linguagens Formais"— Transcrição da apresentação:

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

2 TC2- Lógica Proposicional
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) Cristina Ribeiro

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 cancela redime transfere 1 3 4 Start 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

6 Loja e Cliente a b d f Loja c e g Cliente
cancela paga redime transfere a b d f paga Start 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

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 2 1 3 4 Banco a b d f Loja c e g Cliente
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 paga redime transfere a b d f Start entrega entrega entrega Start redime transfere Loja c e g Cliente 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 a b c d e f g 1 2 3 4 P P P P P P P S S S Start R R C
P,C P,C P,C P,C P,C P,C P S S S 3 R R T T R R P S S S 4 C P,C P,C P,C P,C P,C P,C

11 Autómatos finitos deterministas (DFA)
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 Start 1 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 1 q0 q2 q0 *q1 q1

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

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 {q2} {q1 q4} q2 {q3} q3 {q5} q4 *q5

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


Carregar ppt "Computabilidade e Linguagens Formais"

Apresentações semelhantes


Anúncios Google