Computabilidade e Linguagens Formais q Autmatos finitos Gabriel
Computabilidade e Linguagens Formais q Autómatos finitos Gabriel David / Cristina Ribeiro 1
Dinheiro electrónico q 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 q q q 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) 2
Protocolo q q Estudo para um só ficheiro; reprodutível para milhões Assume-se que o cliente não é de confiança – q O banco é de confiança – q Pode tentar copiar o dinheiro, pagar várias vezes com o mesmo ou pagar e cancelar com o mesmo 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 3
Modelo separado q 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 q – 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 q Quando o cliente paga à loja o banco não é afectado; só sabe do facto quando a loja redime o dinheiro 4
Banco 2 cancela Start q q q 1 redime 3 transfere 4 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 5
Loja e Cliente a Start paga b redime d entrega Loja q e transfere f entrega g Start Cliente Enquanto que o banco faz sempre o que deve, a loja pode cometer erros – – q c redime transfere cancela paga 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 6
Ignorar acções q Faltam várias transições – – – q q 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 representamse como um único, com várias etiquetas 7
Transições completas paga, entrega 2 paga, cancela, entrega, redime cancela Banco a Start redime 3 paga b redime d c redime paga, cancela e transfere paga, cancela, entrega redime, transfere f entrega transfere paga, cancela 4 paga, cancela entrega Loja transfere paga, entrega paga, cancela Start 1 g Start Cliente paga, cancela 8
Interacção q q 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 – q q Tem um nó por cada par de nós 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 9
Autómato produto a 1 P b c P P C C R P R C C 4 C R S P, C C P, C S P P, C S S R T P P S C P S R g S P P, C P f S C P 3 P S P C e S Start 2 P d R P, C T S P, C 10
Autómatos finitos deterministas (DFA) q Determinista – q 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) ) q um diagrama do DFA é um grafo que representa – Estado inicial (q 0 Q) Conjunto de estados finais ou de aceitação (F Q) – DFA: – A = (Q, , , q 0, F) 11
Processar cadeias q A linguagem de um autómato é o conjunto de todas as cadeias que o DFA aceita – – Cadeia de entrada: a 1 a 2… an Estado inicial: q 0 Evolução: (qi-1, ai) = qi Se qn F então a cadeia está aceite 12
Definir um DFA q Exemplo: reconhecedor de cadeias binárias que contenham a sequência 01 – – – {x 01 y | x e y são cadeias de 0’s e 1’s} = {0, 1} Q, tem que memorizar se já viu 01 (q 1), se acabou de ver o 0 (q 2), ou se não viu nada de relevante (q 0) Q={q 0, q 1, q 2} Estado inicial: q 0 Função de transição de estados q q q – – (q 0, 1) = q 0 (q 2, 0) = q 2 (q 1, 0) = q 1 (q 0, 0) = q 2 (q 2, 1) = q 1 (q 1, 1) = q 1 Estados finais: {q 1} A = (Q, , , q 0, F) = ({q 0, q 1, q 2}, {0, 1}, , q 0, {q 1}) 13
Diagramas de transição q Diagrama de transição para um DFA A = (Q, , , q 0, F) é um grafo – – estado em Q nó (q, a) = p onde q, p Q e a arco de q para p com etiqueta a q – – 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 q 0 0 0 q 2 1 q 1 0, 1 14
Tabelas de transição q Tabela de transição é representação tabular da função – – Estados linhas Entradas colunas Estado inicial seta Estados finais asterisco 0 1 q 0 q 2 q 0 *q 1 q 1 q 2 q 1 15
Extensão da função de transição q Linguagem do DFA – q Função de transição estendida ^(q, w) = p – – – q Conjunto das sequências de etiquetas para todos os caminhos do nó de entrada até um dos nós de aceitação q w p estado cadeia de entradas 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) q 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 16
Linguagem de um DFA q Evolução do DFA que lê cadeias com nº par de 0’s e de 1’s para entrada w = 110101 – – – q Linguagem de um DFA A = (Q, , , q 0, F) é – q ^(q 0, ) = q 0 ^(q 0, 1) = ( ^(q 0, ), 1) = (q 0, 1) = q 1 ^(q 0, 11) = ( ^(q 0, 1) = (q 1, 1) = q 0 … ^(q 0, 110101) = ( ^(q 0, 11010), 1) = (q 1, 1) = q 0 L(A) = {w | ^(q 0, w) F} Se uma linguagem L é L(A) para um DFA A então é uma linguagem regular 17
Autómatos com transições q 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 Start q 0 , +, - q 1 0, …, 9. q 2 0, …, 9 q 3 q 5 . q 4 18
Notação formal -NFA q -NFA E = (Q, , , q 0, F) – A principal diferença está na função de transição (q, a), para lidar com q Estado q Q e entrada a { } q Exemplo: E = ({q 0, q 1, q 2, q 3, q 4, q 5}, {. , +, -, 0, …, 9}, , q 0, {q 5}) q 0 símbolo da cadeia vazia não é visível na cadeia de dígitos – – q +, - . 0, …, 9 q 0 {q 1} Representa transições “espontâneas” Lida-se com ele da mesma forma que com q {q 2} {q 1 q 4} 1 o não-determinismo, considerando que o {q 3} q 2 autómato pode estar em qualquer dos estados antes ou depois da transição {q 3} q 3 {q 5} Para saber todos os estados a que se “chega” numa transição para um estado q, calcula-se EClose(q) – EClose(q 0)= {q 0, q 1}; EClose(q 3)= {q 3, q 5} q 4 {q 3} *q 5 19
Transições estendidas q EClose( q ) – – 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 ≠ ) q 1. seja 2. q 3. q – (q, x)={p 1, p 2, …, pk} (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 20
Eliminação de transições q Dado um -NFA E existe sempre um DFA D equivalente – q Técnica da construção de subconjuntos – q q q -NFA E = (QE, , E, q 0, FE) DFA D = (QD, , D, q. D, FD) QD é o conjunto dos subconjuntos de QE fechados – q E e D aceitam a mesma linguagem S= EClose(S) Estado de partida q. D = EClose(q 0) FD = {S | S está em QD e S ∩ FE ≠ } Transição D(S, a), para a em e S em QD – – – S={p 1, p 2, …, pk} Calcular Terminar com 21
- Slides: 21