10.07.2015 Views

Editor de Autômatos Finitos - Projeto Pesquisa

Editor de Autômatos Finitos - Projeto Pesquisa

Editor de Autômatos Finitos - Projeto Pesquisa

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Editor</strong> <strong>de</strong> Autômatos <strong>Finitos</strong>Acadêmica: Josiane Patrícia MorastoniOrientadora: Joyce Martins0100


Roteiro da ApresentaçãoIntroduçãoAutômatos <strong>Finitos</strong>DesenvolvimentotrabalhoConsi<strong>de</strong>rações finais2/31


IntroduçãoObjetivo principal:- implementar um editor gráfico <strong>de</strong> autômatos finitospara uso como ferramenta <strong>de</strong> apoio.Objetivos específicos :- especificar autômatos finitos para linguagens regularesatravés s <strong>de</strong> diagramas <strong>de</strong> transições;- tratar AFD e AFND;- verificar as proprieda<strong>de</strong>s dos autômatos especificados;- permitir o reconhecimento <strong>de</strong> palavras.3/31


Autômatos <strong>Finitos</strong>4/31


Representação dos Autômatos <strong>Finitos</strong>Diagrama <strong>de</strong> transiçãoTabela <strong>de</strong> transição5/31


Classificação dos Autômatos <strong>Finitos</strong>Autômatos <strong>Finitos</strong> com Movimento Vazio (AFε)Autômatos <strong>Finitos</strong> Não-DeterminDeterminísticos (AFND)Autômatos <strong>Finitos</strong> Determinísticos (AFD)6/31


Elementos dos Autômatos <strong>Finitos</strong>M= (Σ,(, Q, δ, q 0, F), on<strong>de</strong>:a) Σ é o alfabeto <strong>de</strong> símbolos s<strong>de</strong> entrada;b) Q é o conjunto finito <strong>de</strong> estados possíveis ;c) Função <strong>de</strong> transição (variável)vel);d) q 0é o estado inicial, tal que q 0é elemento <strong>de</strong> Q;e) F é o conjunto <strong>de</strong> estados finais, tal que F está contido em Q.7/31


Autômatos <strong>Finitos</strong>com movimento vazio (AFε)- Um movimento vazio é uma transição sem leitura <strong>de</strong> símbolo sna fita.- Movimento vazio é representado pela aplicação da função<strong>de</strong> transição<strong>de</strong> umestado q ao símbolo sespecial ε, , obtendo-seδ(q,ε).8/31


Autômatos <strong>Finitos</strong>Não-Determineterminístico (AFND)- Ao processar um símbolo sda entrada a partir do estadocorrente, po<strong>de</strong> ter como resultado um conjunto <strong>de</strong>novos estados.9/31


Autômatos <strong>Finitos</strong>Determinístico (AFD)- Ao processar um símbolo sda entrada a partir do estado corrente, oAFD po<strong>de</strong> assumir um único estado.10/31


Proprieda<strong>de</strong>s <strong>de</strong> Autômatos <strong>Finitos</strong>- Estados Mortos: estados que não são finais e a partir <strong>de</strong>lesnão é possível atingir um estado final;- Estados inalcançáçáveistransiçãoão.veis: estados que não recebem nenhuma11/31


Implementações<strong>de</strong> Autômatos <strong>Finitos</strong>Para construir reconhecedores <strong>de</strong> linguagens regulares é preciso:- especificar expressões regulares;- converter as expressões regulares em autômatos finitos<strong>de</strong>terminísticos mínimos mcorrespon<strong>de</strong>ntes;- implementar os autômatos em uma linguagem qualquer.12/31


ALGORITMO especificoVARIÁVEISSTRING : palavraINTEIRO: posiçãoINÍCIOLEIA (palavra)posição ← 0q 0:SE posição < tamanho (palavra) ENTÃOINC(posição)SE palavra[posição] = '0' ENTÃOGOTO q1SENÃOGOTO erroFIMSESENÃOGOTO erroFIMSEq1:SE posição < tamanho (palavra) ENTÃOINC(posição)SE palavra[posição] = '1' ENTÃOGOTO q fSENÃOGOTO erroFIMSESENÃOGOTO erroFIMSEq f:SE posição < tamanho (palavra) ENTÃOINC(posição)SE palavra[posição] = '0' OUpalavra[posição] = '1' ENTÃOGOTO q fFIMSESENÃOESCREVA ('palavra reconhecida')GOTO fimFIMSEerro: ESCREVA ('palavra nãoreconhecida')fim:FIM14/31


ALGORITMO genérico(palavra, estado: STRING; posição: INTEIRO): LÓGICO;VARIÁVEISCARACTER: símboloINTEIRO : índiceBOOLEAN : achouTABELA : transiçãoINÍCIOSE (COPIA(estado,1,2) = 'qf') E (tamanho(palavra) < posição) ENTÃOachou ← verda<strong>de</strong>iroSENÃOachou ← falsosímbolo ← COPIA(palavra,posição,1)PARA índice DE 0 ATÉ transição.tamanhotabela FAÇASE (transição.estadoAtual = estado) E (transição.símboloLido = símbolo)E (NÃO achou) ENTÃOachou ← genérico(palavra, transição.próximoEstado, posição+1)FIMSEFIMPARAFIMSEgenérico ← achouFIM15/31


O algoritmo apresentado é recursivo e retorna verda<strong>de</strong>iro, caso a palavra tenhasido reconhecida, e falso, em caso contrário.rio.Usa uma tabela para representar as transiçõescriadas. Esta tabela também éusada para validaçãodo autômato.16/31


Desenvolvimento do trabalho- DesenvolvimentoRápido<strong>de</strong> Aplicações(RAD) <strong>de</strong>scrito em Thiry (2001).Essemo<strong>de</strong>lo engloba:a) analisar os requisitos, para <strong>de</strong>terminar o foco do problema que serserá resolvido;b) <strong>de</strong>senvolver um projeto inicial;c) repetir os seguintes passos até que a aplicação esteja pronta:- implementar uma versão da aplicação;- entregar a implementação para o cliente testar;- receber um feedback do cliente;- planejar uma nova versão para respon<strong>de</strong>r ao feedback (se houverproblemas, uma nova solução <strong>de</strong>ve ser proposta).17/31


Especificaçãoão: Estudo <strong>de</strong> Caso 1- Abrir uma nova janela no editor;- Criarestado inicial;- Criaroutros estados;- Criarestados finais;- Criartransiçõesões;- Informaro símbolo sque será reconhecido quando a transição for disparada;- Estados e transições po<strong>de</strong>m ser excluídos com exceção do estado inicial que<strong>de</strong>ve ser o último a ser apagado.18/31


Especificaçãoão: Estudo <strong>de</strong> Caso 2- O acadêmico selecionará no menu Autômato a opção validação do autômato;- O editor <strong>de</strong>terminará o tipo do autômato finito, os possíveis estados mortos e ospossíveis estados inalcançáçáveis;- O editor apresentará mensagens com as proprieda<strong>de</strong>s i<strong>de</strong>ntificadas.19/31


Especificaçãoão: Estudo <strong>de</strong> Caso 3- O acadêmico digitará uma palavra no campo Digite a palavra;- O acadêmico selecionará no menu Autômato a opçãoreconhecerer palavra,po<strong>de</strong>ndo ser direto ou passo a passo.- direta: o editor retornará se a palavra foi aceita ou rejeitada;- passo a passo: o editor além m da mensagem, pintará o caminho percorridopelo editor durante o reconhecimento.20/31


Especificaçãoão: Diagrama <strong>de</strong> Classe21/31


Especificaçãoão: Diagrama <strong>de</strong> Seqüência22/31


Especificaçãoão: Diagrama <strong>de</strong> Seqüência23/31


ImplementaçãoEste trabalho foi <strong>de</strong>senvolvido com linguagem Object Pascal.Ferramentas:- Borland Delphi 6; 6- Rational Rose;- PhotoShop 6.0.Componentes principais:- A interface do ambiente gráfico foi construída em uma aplicação MDI(Multiple Document Interface)- Desenho: TDesenha e TDesenhaLinha24/31


Operacionalida<strong>de</strong> do <strong>Editor</strong> <strong>de</strong> AF25/31


Operacionalida<strong>de</strong> do <strong>Editor</strong> <strong>de</strong> AF26/31


Operacionalida<strong>de</strong> do <strong>Editor</strong> <strong>de</strong> AF27/31


Operacionalida<strong>de</strong> do <strong>Editor</strong> <strong>de</strong> AF28/31


Operacionalida<strong>de</strong> do <strong>Editor</strong> <strong>de</strong> AF29/31


Consi<strong>de</strong>rações finaisForam atingidos os objetivos propostos:- permite efetuar a validação <strong>de</strong> autômatos finitos <strong>de</strong>senhados;- o reconhecimento <strong>de</strong> palavras direto e passo a passo.O <strong>de</strong>senvolvimento na linguagem Java seriafacilitado.Os componentes TDesenha e TDesenhaLinha não foram <strong>de</strong>senvolvidos nessetrabalho, mas o código cfonte <strong>de</strong>stes encontra-se disponível para as possíveis extensõessugeridas.30/31


Extensões- melhorar a interface gráfica;- aplicar equivalência em autômatos com movimentosvazios;- aplicar a transformação <strong>de</strong> um AFND em um AFD;- aplicar algoritmos <strong>de</strong> minimização em AFDs.31/31


Apresentar <strong>Editor</strong> <strong>de</strong> Autômatos <strong>Finitos</strong>


Fundamentação Teórica


Conceito GeraisAlfabetoÉ um conjunto não vazio on<strong>de</strong> os elementos são chamados <strong>de</strong> símbolos. sExemplo:- Em Pascal, usa-sese program, begin, , end, if, then, else.-Para implementar esta linguagem, o alfabeto terá novos símbolos sdo conjuntoASCII ( letras, dígitos, d+, *, entre outros).1/1


Conceito GeraisPalavraPalavra, ca<strong>de</strong>ia ou sentença a são uma seqüência finita <strong>de</strong> símbolos sjustapostos.Palavra é uma função que <strong>de</strong>termina uma seqüência s <strong>de</strong> comprimento n noalfabeto ∑.s:[n]→ ∑ tem domínio [n] e contra-domdomínio∑.Com ∑ = {0,1}, s = 0101 e comprimento 4, tem-se a função s: [4] → ∑,<strong>de</strong>finida por s(1) = 0, s(2) = 1, s(3) = 0, s(4) = 1.1/2


Conceito GeraisPalavra (Concatenação)As palavras po<strong>de</strong>m ser concatenadas para formar novas palavras.∑= = {0,1, x = 0110 e y = 011, a concatenação das palavras x e y é representadapor x o y e é igual a 0110011.- elemento neutro à esquerda e à direita, ou seqüência vazia:quando n = 0, que é representado por ε.x o ε = ε o x = x, ou seja, para ∑={0,1} e x = 01, tem-se que 01 o ε = ε o 01 = 01.- sucessiva :representada 1 5 = 111112/2


Conceito GeraisLinguagensO conjunto <strong>de</strong> todas as seqüências que po<strong>de</strong>m ser formadas com os símbolos s<strong>de</strong> um alfabeto ∑ é uma linguagem, incluindo também m a seqüência vazia ε.Exemplo <strong>de</strong> uma linguagem L em ∑ é um subconjunto <strong>de</strong> ∑*, ou seja, L ⊆∑*. Assim, {0101, 0100, 01, ...} é a linguagem em {0,1} * composta por todasas palavras <strong>de</strong> comprimento maior ou igual a dois que iniciam com 01.1/2


Conceito GeraisLinguagensAs operações <strong>de</strong> conjuntos po<strong>de</strong>m ser usadas com as linguagens.Logo, se L e L 1 2a) a uniãosão linguagens em ∑*, então:L 1∪ L 2e é igual ao conjunto {x | x ∈ L 1ou x ∈ L 2}b) a interseçãoL 1∩ L 2e é igual ao conjunto {x | x ∈ L 1e x ∈ L 2}c) a diferençaL 1– L 2e é igual ao conjunto {x | x ∈ L 1e x ∉ L 2}d) o complemento∑* - L 1e é igual ao conjunto {x | x ∈ ∑* * e x ∉ L 1}2/2


Conceito GeraisGramática- é um formalismo que permite gerar todas as palavras <strong>de</strong> uma linguagemgem;- é composta por regras <strong>de</strong> produçãoão;Formalmente, uma gramáticaé uma quádrupla or<strong>de</strong>nada G=(V, T, P, S), on<strong>de</strong>:a) V é um conjunto finito <strong>de</strong> símbolos snão-terminais;b) T é um conjunto finito <strong>de</strong> símbolos sterminais disjunto <strong>de</strong> V;c) P é um conjunto finito <strong>de</strong> pares (α,(β), <strong>de</strong>nominados regras <strong>de</strong> produção, talque o primeiro componente é uma palavra em (V ∪ T) + e o segundocomponente é uma palavra em (V ∪ T)*;d) S é o elemento <strong>de</strong> V <strong>de</strong>nominado símbolo sinicial.1/3


Conceito GeraisGramáticaG= (V, T, P, S) = ({S,X}, {0,1}, {(S,01X), (X,ε), (X,0X), (X,1X)}, S) tem-se que:V = {S,X} é o conjunto <strong>de</strong> não-terminais,T = {0,1} é o conjunto <strong>de</strong> terminais,P = {S→01X, X X→ε| 0X |1X} é o conjunto <strong>de</strong> regras <strong>de</strong> produção para geraras palavras <strong>de</strong> comprimento maior ou igual a dois que iniciam com 01.2/3


Conceito GeraisGramáticaUma regra <strong>de</strong> produção (α,(β) é representada por α → β. . Ela <strong>de</strong>fineas condições <strong>de</strong> geração das palavras da linguagem.Definição dos passos <strong>de</strong> <strong>de</strong>rivação:⇒ * fecho transitivo e reflexivo da relação, ou seja, zero ou maispassos <strong>de</strong> <strong>de</strong>rivações sucessivas;⇒ + fecho transitivo da relação, isto é, , um ou mais passos <strong>de</strong><strong>de</strong>rivações sucessivas;⇒ i exatos i passos <strong>de</strong> <strong>de</strong>rivações sucessivas, on<strong>de</strong> i é um número nnatural.3/3


LinguagensHierarquia <strong>de</strong> CHOMSKY1/3


LinguagensLinguagens regulares ou tipo 3:Geradas pelas gramáticas regulares ou tipo 3;São reconhecidas pelos autômatos finitos;São usados para <strong>de</strong>senvolver:- analisadores léxicos, leditores <strong>de</strong> texto, sistemas <strong>de</strong> pesquisa eatualização <strong>de</strong> arquivos, interface <strong>de</strong> sistemas operacionais, protocolos <strong>de</strong>comunicação;Linguagenslivres <strong>de</strong> contexto ou tipo 2:São geradas pelas gramáticas livres <strong>de</strong> contexto ou tipo 2;Reconhecidas por autômatos com pilha;Usados para o <strong>de</strong>senvolvimento <strong>de</strong> analisadores sintáticos, ticos, tradutores <strong>de</strong>linguagens e processadores <strong>de</strong> textos em geral;2/3


LinguagensLinguagenssensíveis ao contexto ou tipo 1Geradas pelas gramáticas sensíveis ao contexto ;São reconhecidas pela máquina m<strong>de</strong> Turing com fita limitada;Linguagensenumeráveis recursivamente (irrestritas) ou tipo 0:São reconhecidas por uma máquina m<strong>de</strong> Turing;Usa um gerador na forma <strong>de</strong> gramática.3/3


Linguagem RegularRepresentação :são usados formalismos como gramática regular, expressão regular e autômatofinito.- Lema do bombeamento para as linguagens regulares:a) é aceita por um autômato finito <strong>de</strong>terminístico, que tem um número nfinito epre<strong>de</strong>finido <strong>de</strong> n estados;b) se o autômato reconhece uma palavra <strong>de</strong> entrada w, <strong>de</strong> comprimento maior ouigual a n, o autômato assume algum estado q por mais <strong>de</strong> uma vez, criando umciclo na função programa que passa por q;c) assim w po<strong>de</strong> se dividir em três subpalavras, , w = uvz, , tal que |uv|uv| ≤ n, |v| ≥ 1,on<strong>de</strong> v é a parte <strong>de</strong> w que é reconhecida pelo ciclo. Portanto, uv i z para i ≥ 0, ésempre aceito pelo autômato.1/1


Expressões RegularesUma expressão regular é <strong>de</strong>finida a partir <strong>de</strong> conjuntos (linguagens básicas) beoperações <strong>de</strong> concatenação e união.Uma expressão regular (ER) no alfabeto ∑ é <strong>de</strong>finida pelas seguintes regras:a) ∅ <strong>de</strong>nota a linguagem vazia;b) ε <strong>de</strong>nota a linguagem contendo a palavra vazia {ε};{c) Qualquer símbolo sx pertencente a ∑ <strong>de</strong>nota a linguagem contendo a palavraunitária {x};d) Se x e y são ER então:d.1) (x + y) <strong>de</strong>nota a linguagem X ∪ Y;d.2) (xy(xy) ) <strong>de</strong>nota a linguagem XY = {uv{| u ∈ X e v ∈ Y};d.3) (x*) <strong>de</strong>nota a linguagem X*.1/2


Expressões Regulares2/2


Equivalência entre AFND x AFDa) i<strong>de</strong>ntificar a linha, ou a que contiver o estado inicial, da tabela <strong>de</strong> transiçõesdo AFND e atribuir à tabela <strong>de</strong> transições do AFD.1/3


) verificar para cada estado do AFD se todas transições foram criadas. Emcaso negativo, atribuir na primeira coluna os estados, possivelmenteenteconjuntos, que reconhecem os símbolos sindicados. Repetir esse passo até quetodas as transições tenham sido criadas.2/3


c) Determinar a primeira linha da tabela <strong>de</strong> transição criada como sendo o estadoinicial do AFD e as linhas que contiverem qf no conjunto <strong>de</strong> estados como sendoestados finais.3/3


Minimização<strong>de</strong> um AutômatoFinitoO autômato finito para ser minimizado <strong>de</strong>ve aten<strong>de</strong>r os seguintes pré-requisitos:requisitos:a) <strong>de</strong>ve ser <strong>de</strong>terminístico;b) não po<strong>de</strong> ter estados inacessíveis, ou seja, estados que não po<strong>de</strong>m seralcançados ados a partir do estado inicial;c) a função programa <strong>de</strong>ve ser total, isto é, , a partir <strong>de</strong> qualquer estado <strong>de</strong>vem serprevistas transições para todos os símbolos sdo alfabeto.1/2


Minimização<strong>de</strong> um AutômatoFinitoAlgoritmopara minimização <strong>de</strong> autômatos finitos <strong>de</strong>terminísticossticos:a) elimina os estados inacessíveis e suas correspon<strong>de</strong>ntes transições;b) altera a função programa em total, introduzindo um estado não final Φ eincluindo Φ como estado <strong>de</strong>stino das transições não previstas;c) unifica os estados equivalentes, sendo que dois estados são ditos s equivalentesse e somente se para qualquer seqüência <strong>de</strong> símbolos sresultamsimultaneamente em estados finais ou estados não-finais tambémequivalentes entre si;d) elimina os estados mortos.2/2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!