Linguagens Formais e Autômatos

Documentos relacionados
Linguagens e Programação Automátos Finitos. Paulo Proença

Teoria da Computação. Expressões Regulares e Autômatos Finitos. Thiago Alves

Universidade Federal de Alfenas

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Autômatos Finitos Não Determinís5cos (AFN)

INCLUSÃO DO ALGORITMO DE TRANSFORMAÇÃO DE UM AUTÔMATO FINITO EM EXPRESSÃO REGULAR NO AMBIENTE EDITOR DE AUTÔMATOS FINITOS

Algoritmo de Minimização de AFD

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

LFA Aula 07. Equivalência entre AFD e AFND. Equivalência entre ER s e AF s Equivalência entre GR s e AF s. Linguagens Formais e Autômatos

Linguagens Formais e Autômatos. Simplificação de Gramáticas Livre do Contexto (GLC)

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 4. Autômatos Finitos

Linguagens Regulares. Prof. Daniel Oliveira

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

INE5317 Linguagens Formais e Compiladores AULA 6: Propriedades das Linguagens Regulares

LFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Compiladores - Autômatos

Linguagens Formais e Autômatos P. Blauth Menezes

Estados Equivalentes. Exemplo R: Sim, b e f. Note que se estamos em b ou f então:

Como construir um compilador utilizando ferramentas Java

Fundamentos da Teoria da Computação

a * Minimização de AFD AFD equivalente, com o menor número de estados possível

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos

TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS

Capítulo 2: Máquinas de Estados Finitos. Modelagem do problema. Quebra-cabeças. Newton José Vieira, Isabel Gomes Barbosa. 19 de agosto de 2010

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Linguagens Formais e Autômatos (LFA)

AF Não-determinísticos Equivalência entre AFND e AFD

AFNs, Operações Regulares e Expressões Regulares

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

Apostila 02. Objetivos: Estudar os autômatos finitos Estudar as expressões regulares Estudar as gramáticas regulares Estudar as linguagens regulares

Expressões Regulares e Gramáticas Regulares

Autômatos Finitos e Não-determinismo

Propriedades de Fecho de Linguagens Regulares.

Folha 2 Autómatos e respectivas linguagens

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

Linguagens Livres de Contexto

Teoria de Linguagens 2 o semestre de 2017 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 19/9/2017 Valor: 10 pontos

Expressões Regulares. Linguagens Formais e Autômatos. Andrei Rimsa Álvares

Autômatos finitos não-determinísticos

Linguagens Livres de Contexto

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação

Fundamentos da Teoria da Computação

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

a n Sistemas de Estados Finitos AF Determinísticos

LINGUAGENS FORMAIS E AUTÔMATOS

BCC242. Auômato Finito Determinístico

Linguagens e Autômatos

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

a n Autômatos com Pilha: Definição Informal e Definição Formal Linguagem Aceita por um ACP ACPDet X ACPND Notação gráfica para ACP

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Autômatos com Pilha. Douglas O. Cardoso docardoso.github.io

LINGUAGENS FORMAIS Modelos Determinísticos e Não Determinísticos. Usam-se modelos matemáticos para representar eventos (fenômenos) do mundo real.

AF Não-determinísticos Equivalência entre AFND e AFD AFs e GRs Implementação de AFs

Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção

LFA Aula 08. Minimização de AFD Autômatos Finitos com saídas 25/01/2017. Linguagens Formais e Autômatos. Celso Olivete Júnior.

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

INE5317 Linguagens Formais e Compiladores AULA 6: Autômatos Finitos Com S aída

Linguagens Livres do Contexto. Adaptado de H. Brandão

Universidade Federal de Alfenas

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Autômatos Finitos Determinís3cos (AFD)

Autómatos Finitos Determinísticos (AFD)

Fundamentos da Teoria da Computação

Gramática Livre de Contexto

Construção de Compiladores Aula 16 - Análise Sintática

Aula 3: Autômatos Finitos

Roteiro da Aula 3. Sintaxe. 2 Exemplos. 4 Propriedades de Fechamento. Teoria da Aula 3. Roteiro

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Máquinas de Turing - Computabilidade

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Conversão de Autômatos Finitos Não Determinísticos (AFND) para Autômatos Finitos Determinísticos (AFD)

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

Aula 3: Autômatos Finitos

EXERCICIOS COMPLEMENTARES OS CONJUNTOS NUMÉRICOS

IV Gramáticas Livres de Contexto

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) )

Compiladores - Análise Ascendente

Compiladores - Análise Ascendente

Transcrição:

Linguagens Formais e Autômatos Conversão de Expressões Regulares (ER) para Autômatos Finitos Determinísticos (AFD) Cristiano Lehrer, M.Sc.

Introdução A construção sistemática de um Autômato Finito para reconhecer strings de uma linguagem regular é realizada em três etapas: Construção de um autômato finito que representa diretamente os elementos de uma expressão regular. Pela característica dessa construção, esse primeiro autômato é não determinístico. Algoritmo de Thompson. Conversão do autômato finito não determinístico para um autômato finito determinístico equivalente, ou seja, que reconheça strings da mesma linguagem. Método da Construção de subconjuntos. Reduzir, se possível, o número de estados do autômato. Para tanto, o procedimento nessa etapa procura identificar estados que sejam redundantes e, se os encontra, os substitui por um único estado. Minimização de estados do autômato.

Algoritmo de Thompson (1/4) O algoritmo de Thompson define uma sequência de passos para, a partir de uma expressão regular, obter um autômato finito com movimentos vazios que reconheça sentenças da correspondente linguagem regular. ER = q 0 ER = q f ER = x q 0 x q f

Algoritmo de Thompson (2/4) ER = r + s r 0 r f q 0 q f s 0 s f

Algoritmo de Thompson (3/4) ER = rs r 0 r f s 0 s f

Algoritmo de Thompson (4/4) ER = r* q 0 r 0 r f q f

Método da Construção de Subconjuntos (1/4) Autômatos finitos com movimentos vazios (AF ) e autômatos finitos não determinísticos (AFN) não são muito práticos para realizar o reconhecimento de strings. Para realizar o reconhecimento automático da string de forma mais direta, é mais interessante utilizar um autômato finito determinístico (AFD). Existe um procedimento sistemático para transformar um AF num AFD que aceita a mesma linguagem: O procedimento apresentado frequentemente é denominado método da construção de subconjuntos.

Método da Construção de Subconjuntos (2/4) O princípio associado a esse método é criar novos estados, no AFD, que estejam associados a todas as possibilidades de estados originais em um dado momento da análise da sentença no processo de reconhecimento. Para cada estado original, essas possibilidades incluem o estado do AF e todos os estados que podem ser atingidos a partir dele com transições pela string vazia. Esse conjunto de estados do AF é definido pela operação * (lêse épsilon-clausura): A aplicação da * a um conjunto de estados resulta no conjunto que inclui, além dos próprios estados, cada um dos demais estados do autômato que podem ser alcançados a partir desses com transições pela string vazia.

Método da Construção de Subconjuntos (3/4) A aplicação do método da construção de subconjuntos começa pela computação da * do conjunto que contém apenas o estado inicial do AF. O conjunto de estados resultante representa um único estado no novo AFD. Como esse estado inclui o estado inicial do autômato original, será também o estado inicial do novo autômato. Do mesmo modo, se o estado final do autômato original for elemento desse conjunto, o novo estado será também um estado final no novo autômato. Cada novo estado que é gerado dessa maneira é incluído numa lista de estados a analisar.

Método da Construção de Subconjuntos (4/4) O procedimento prossegue com a análise de estados ainda não analisados: O objetivo dessa análise é verificar, para cada símbolo do alfabeto, se há transição possível a partir do estado sob análise e, se houver transição, para qual estado ele leva. A transição por um símbolo do alfabeto será possível se houver, no conjunto de estados originais associado ao estado analisado, pelo menos um elemento que tenha a transição pelo mesmo símbolo no autômato original. Se houver, o novo estado resultante da transição será a * do conjunto de estados que resulta da transição por esse símbolo no AF.

Expressão Regular (ER): (0 + 1)*0 Passo a Passo (1/3) Autômato Finito com Movimentos Vazios (AF ): ({0, 1}, {q 1, q 2,..., q 9, q 10 },, q 1, {q 10 })

Passo a Passo (2/3) * {q 1 } = {q 1, q 2, q 3, q 4, q 8, q 9 } (s 1 ) s 1 q 1 q 2 q 3 q 4 q 8 q 9 0 - - q 5 - - q 10 1 - - - q 6 - - * {q 5, q 10 } = {q 2, q 3, q 4, q 5, q 7, q 8, q 9, q 10 } (s 2 ) s 2 q 2 q 3 q 4 q 5 q 7 q 8 0 - q 5 - - - - 1 - - q 6 - - - q 9 q 10 - q 10 - - * {q 6 } = {q 2, q 3, q 4, q 6, q 7, q 8, q 9 } (s 3 ) s 3 q 2 q 3 q 4 q 5 q 7 q 8 0 - q 5 - - - - 1 - - q 6 - - - q 9 q 10 -

Passo a Passo (3/3) Autômato Finito Determinístico (AFD): ({0, 1}, {s 1, s 2, s 3 },, s 1, {s 2 }) s 1 s 2 s 3 0 s 2 s 2 s 2 1 s 3 s 3 s 3

Minimização de Estados do Autômato (1/4) O procedimento é baseado na construção iterativa de partições do conjunto K de estados do autômato. A cada iteração, o objetivo é identificar se há um comportamento diferenciado entre os estados que fazem parte de uma partição, ou seja, é preciso analisar o que ocorre nas transições associadas a estados dessa partição. Se há essa diferença de comportamento, então os estados não são redundantes e novas partições são criadas a partir dessa. Caso contrário, se todos os estados numa partição têm exatamente o mesmo comportamento, então os estados são redundantes e podem ser combinados, num autômato minimizado, em um único estado. Se uma partição tem um único estado, então aquele estado não era redundante no autômato original.

Minimização de Estados do Autômato (2/4) O primeiro particionamento do conjunto de estados do autômato reflete a diferença entre estados que são finais e estados que não são finais. Se F representa o conjunto de estados finais do autômato, então essa primeira iteração cria uma partição P1 = {C 1, C 2 } com dois subconjuntos, um com os estados finais, C 1 = F, e outro com os demais estados, C 2 = K F. Se uma partição P i contém entre seus elementos um subconjunto não-unitário, então esse subconjunto deve ser analisado para descobrir se seus estados são ou não redundantes.

Minimização de Estados do Autômato (3/4) Seja esse subconjunto C i : Para cada estado de C i, é preciso verificar para qual subconjunto da partição P i as transições pelos símbolos do alfabeto levam. Se dois ou mais estados têm transições levando, a partir de cada símbolo, a subconjuntos distintos, então seus comportamentos são distintos e esses estados deverão, na próxima partição P i+1, estar em subconjuntos distintos. Caso contrário, se não houver nenhuma diferença de comportamento entre os estados do subconjunto C i, então seus elementos são redundantes e podem ser representados por um único estado no autômato minimizado.

Minimização de Estados do Autômato (4/4) O refinamento da partição do conjunto de estados deve continuar até que não haja mais possibilidades de particionar nenhum subconjunto da partição, seja porque o subconjunto é redundante, seja porque é unitário. O autômato que resulta desse procedimento de minimização terá um estado associado a cada subconjunto da última partição que foi obtida.

Passo a Passo (1/2) Autômato Finito Determinístico (AFD): ({0, 1}, {s 1, s 2, s 3 },, s 1, {s 2 }) s 1 s 2 s 3 0 s 2 s 2 s 2 1 s 3 s 3 s 3 P 1 = {C 1, C 2 }, com C 1 = {s 2 } e C 2 = {s 1, s 3 } C 2 s 1 s 3 0 C 1 C 1 1 C 2 C 2

Passo a Passo (2/2) Autômato Finito Determinístico (AFD) Minimizado: ({0, 1}, {C 1, C 2 },, C 2, {C 1 }) C 1 C 2 0 C 1 C 1 1 C 2 C 1 0 1 C 2 C 2 1 0