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

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

a n Sistemas de Estados Finitos AF Determinísticos

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

AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1

AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1

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

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

a n Sistemas de Estados Finitos AF Determinísticos

Análise Léxica. Fundamentos Teóricos. Autômatos Finitos e Conjuntos Regulares (cap. III da apostila de Linguagens Formais e Compiladores)

Expressões e Gramáticas Regulares e Autómatos Finitos

Compiladores - Autômatos

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

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

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

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações

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

Linguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.

Problemas Computáveis

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

LINGUAGENS FORMAIS E AUTÔMATOS

Capítulo II Gramáticas

Operações Fechadas sobre LR s Aplicações

a * Expressões Regulares (ER) Conversão de AF para ER no JFLAP Equivalências entre AFD, AFND, AF-, ER, GR

Autômatos com Pilha: Reconhecedores de LLCs

Algoritmo de Minimização de AFD

Gramáticas Sensíveis ao Contexto (GSC) Linguagens Sensíveis ao Contexto (LSC) Autômatos Linearmente Limitados (ALL)

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

Como construir um compilador utilizando ferramentas Java

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Capítulo II Gramáticas

Autómatos Finitos Determinísticos (AFD)

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

Linguagens Formais e Autômatos

Gramática regular. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Universidade de São Paulo

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

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

Expressões Regulares e Gramáticas Regulares

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

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1

Gramática. Gramática. Gramática

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

1 Expressões Regulares e Linguagens

Editor de Autômatos Finitos. Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins

a * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER

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.

Folha 2 Autómatos e respectivas linguagens

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas

Marcos Castilho. DInf/UFPR. 5 de abril de 2018

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

EXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE RONALD GLATZ

Linguagens Livres de Contexto

Expressões regulares

Lista de Exercícios CT-200 Primeiro Bimestre Carlos Henrique Quartucci Forster Estagiário: Wesley Telles. Revisão de Teoria de Conjuntos

Linguagens Formais e Autômatos P. Blauth Menezes

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

Faculdade de Computação

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

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

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

O que é Linguagem Regular. Um teorema sobre linguagens regulares. Uma aplicação do Lema do Bombeamento. Exemplo de uso do lema do bombeamento

SCC 205 Teoria da Computação e Linguagens Formais

Compiladores Aula 4. Celso Olivete Júnior.

Linguagens livres de contexto e autômatos de pilha

Linguagens Regulares, Operações Regulares

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

Universidade Federal de Alfenas

Estrutura geral de um compilador programa-fonte

Linguagens Formais e Autômatos (LFA)

Linguagens Regulares. Prof. Daniel Oliveira

Propriedades de Fecho de Linguagens Regulares.

Linguagens Formais e Autômatos (LFA)

Conceitos básicos de Teoria da Computação

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

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

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Compiladores Aula 3. Celso Olivete Júnior.

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

Matemática Discreta para Ciência da Computação

UFCG IQuanta DSC. Cheyenne R. G. Isidro Bernardo Lula Júnior

Linguagens Regulares, Operações Regulares

Decidibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

Máquina de Turing. Controle finito

Máquina de Turing. Controle finito

a n Autômatos com Pilha: Definição Linguagem Aceita por um AP Notação gráfica para AP APD X APND

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.

Linguagens de Programação Aula 3

Fundamentos da Teoria da Computação

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

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3

Universidade Federal de Alfenas

Prof. Adriano Maranhão COMPILADORES

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

Linguagens Livres de Contexto

Variedades Adicionais das Máquinas de Turing

Transcrição:

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

AF NÃO-Determinístico (AFND) Consideremos uma modificação no modelo do AFD para permitir zero, uma ou mais transições de um estado sobre o MESMO símbolo de entrada. Ou visto de outra forma: a função toma um estado e uma entrada e devolve zero, um ou mais estados. Esse modelo é chamado AFND. 2

Por que isso é interessante? Pois possibilita tentar alternativas distintas Se cada estado representa uma opção, ir para mais de um estado representa tentar opções diferentes de caminho para a solução 3

AFND Uma cadeia de entrada a 1 a 2...a n é aceita/reconhecida por um AFND se existe AO MENOS UMA sequência de transições que leva do estado inicial para algum estado final. Ele funciona como se houvesse a multiplicação da unidade de controle, uma para cada alternativa, processando independentemente, sem compartilhar recursos com as demais, aceitando a cadeia se ao menos uma delas parar num estado final. Pensem: Será que o não-determinismo aumenta o poder de reconhecimento de linguagens de um AF? 4

0, 1 Exemplo 1 0 1 q0 q1 q2 Esse autômato aceita cadeias de 0 s e 1 s que terminam em 01 (0+1)*01. Analisem a aceitação de 00101 Quando está em qo e o símbolo lido é 0 ele tem a opção de: continuar em qo no caso do fim da cadeia não estar próximo OU ir para q1 porque aposta que o fim está chegando. E na verdade ele executa as duas opções! Por isso costumamos pensar que ele advinha qual é a alternativa correta entre muitas. 5

Exemplo 2 L(M) = (0+1)* (00+11) (0+1)* ou seja, x {0,1}* x tenha dois 0 s consecutivos OU dois 1 s consecutivos 6

Ex 2 L(M) = (0+1)* (00+11) (0+1)* M = ({q0,q1,q2,q3,q4},{0,1},,q0,{q2,q4}) 7

Definição Formal de um AFND Denotamos um AFND pela 5-tupla (Q,,, qo,f) onde Q,, qo e F são os mesmos de um AFD e : Q X 2 Q, conjunto potência de Q, isto é, todos os subconjuntos de Q L(M) = {w (qo,w) F } No exemplo 2: Estado Entrada 0 1 qo {qo,q3} {qo,q1} q1 {q2} q2 {q2} {q2} q3 {q4} q4 {q4} {q4} 8

Exemplo 3 Construir um AFND que aceita cadeias {1,2,3}* tal que o último símbolo na cadeia tenha aparecido anteriormente. Por exemplo, 121 é aceita; 31312 não é aceita. Dica: resolvam para os seguintes vocabulários mais simples antes 1) Construir um AFND que aceita cadeias {1}* tal que o último símbolo na cadeia tenha aparecido anteriormente 1*11*1 2) Construir um AFND que aceita cadeias {1,2}* tal que o último símbolo na cadeia tenha aparecido anteriormente ((1+2)*1(1+2)*1)+ ((1+2)*2(1+2)*2) 9

1) Construir um AFND que aceita cadeias {1}* tal que o último símbolo na cadeia tenha aparecido anteriormente 10

2) Construir um AFND que aceita cadeias {1,2}* tal que o último símbolo na cadeia tenha aparecido anteriormente 11

Estendendo o vocabulário para {1, 2, 3}: 12

Equivalência entre AFD e AFND Teorema: Se L é reconhecida por um AFND, então ela é reconhecida por um AFD. Esse teorema responde a primeira pergunta desses slides. Vamos propor um método para construir um AFD a partir do AFND. Daí se pode provar que as linguagens reconhecidas por ambos são iguais (veja essa prova na bibliografia). Esse método é chamado de construção de subconjuntos 13

Exemplo: Seja M = ({q0,q1},{0,1},, q0,{q1}) Es/En 0 1 q0 {q0,q1} {q1} q1 {q0,q1} 14

Nós podemos construir um AFD M = (Q, {0,1},, {qo}, F ) aceitando L(M) pela construção chamada de construção de subconjuntos (dos estados de AFND). Ela é tal que é o mesmo do AFND e o estado inicial é o conjunto contendo somente o estado inicial do AFND. Q consiste de todos os subconjuntos de {qo,q1}: eo e1 e2 e3 {qo}, {q1}, {qo,q1}, e. ({q 1... q n }, a) = i=1 n (qi, a); F' = {p p Q' e p contém ao menos 1 elemento de F } 15

Assim, no exemplo: ({qo},0) ={qo,q1} ({qo},1) = {q1} ({q1},0) = ({q1},1) = {qo,q1} ({qo,q1},0) = {qo,q1} Pois ({qo,q1},0) = (qo,0) (q1,0) = {qo,q1} = {qo,q1} ({qo,q1},1) = {qo,q1} Pois ({qo,q1},1) = (qo,1) (q1,1) = {q1} {qo,q1} = {qo,q1} (,0) = (,1) = F = {{q1},{qo,q1}} isto é, estados onde F antigo estava presente 0 1 {qo} {qo,q1} {q1} {q1} {qo,q1} {qo,q1} {qo,q1} {qo,q1} 16

M = ({eo,e1,e2}, {0,1},, eo, {e1,e2}). L(M ) = 0(0+1)* + 1 + 11(0+1)* 17

Estados Acessíveis e Não Acessíveis Embora muitas vezes seja mais fácil construir um AFND para uma LR, o AFD tem na prática quase o mesmo número de estados que o AFND, embora ele tenha mais transições. No pior caso, o AFD pode ter 2 n estados enquanto que o AFND para a mesma linguagem tem somente n estados. Ex. seja o AFND que aceita todas as cadeias em {0,1} que terminam em 01. 0,1 qo 0 1 q1 q2 18

AFND AFD 0 1 0 1 qo {qo, q1} {qo} q1 {q2} {qo} {qo,q1} {qo} q2 *{q1} {q2} *{q2} {qo, q1} {qo,q1} {qo,q2} * {qo,q2} {qo,q1} {qo} *{q1,q2} {q2} *{qo,q1,q2} {q0,q1} {qo,q2} 19

AFND Renomeando os estados: AFD 0 1 0 1 qo {qo, q1} {qo} A A A q1 {q2} B E B q2 * C A D *D A A Repare que os únicos estados acessíveis a partir de B são: B, E e F. Os demais são inacessíveis e não precisam constar da tabela. E E F *F E B *G A D *H E F 20

AFD resultante com n=3 estados 1 {qo} 0 0 1 {qo,q1} {qo,q2} 0 1 Há casos, no entanto, em que o AFD correspondente não pode ter menos estados do que 2 n, sendo n o número de estados do AFND correspondente. 21

Verifique para o seguinte AFND: 0,1 qo 1 0,1 q1 q2 0,1 0,1 0,1... q n - 1 qn Aceita cadeias cujo n-ésimo símbolo, a partir da direita, é 1. 22

Cuidado com os estados de aceitação! Muitas vezes, ao construir AFD, impedimos que ele aceite cadeias válidas. Por outro lado, ao construir AFND, as vezes fazemos com que eles aceitem cadeias que não deveriam aceitar. 23

Exemplo Seja um AFD A que aceita cadeias sobre {0,1}* de comprimento par q0 0, 1 q1 L(A)= {(0+1) 2n n=0,1,...} Seja um AFD B que aceita cadeias sobre {0,1}* que não contêm 0 s q0 0,1 0 qr 0,1 L(B)= 1* 1 24

Coloque A e B juntos, formando um AFND AB 1 0 qr 0,1 q0 0, 1 0,1 q1 Poderíamos esperar que AB aceitasse a linguagem união das duas anteriores. Mas vemos que ela aceita não apenas essa união, mas qualquer cadeia exceto aquelas com número ímpar de 0 s e nenhum 1. L(AB)={0,1}* - {0 2n+1 n 0} 25

Estados de não-aceitação em AFD A definição estrita de um AFD EXIGE que todo estado tenha uma transição para cada símbolo de entrada. Se seguirmos esta definição muitos exemplos vistos na seção de AFD não eram AFD no senso estrito. Porém, temos a facilidade de criar um estado de nãoaceitação (erro) para o qual podem ir todas as entradas não necessárias na definição de uma linguagem. 26

AFD com estado de não-aceitação M = ({q0,q1, erro}, {A..Z,a..z,0..9,_}, q0,, {q1}) AF que reconhece identificadores em Pascal: : D erro Letra seguida de Letra ou Dígito: L (L+D)* 27

AF e Gramática Regular Teorema 2: As linguagens aceitas por AF são exatamente aquelas geradas por Gramáticas Regulares. a) Para cada GR existe um AF tal que L(GR) = L(AF) b) Para cada AF existe uma GR tal que L(AF) = L(GR) 28

Prova: a) Para cada GR existe um AF tal que L(GR) =L(AF) Se A Vn então f(q A, a) = q B sempre que A ab (não determinismo: A ab ;A ac): Se A a então f(q A, a) = q final Se S então F = {q final, q S } Assim: Q = Vn {q final } = Vt {Voca q 0 = q S F = {q S, q final } S ou F = {q final }, c.c. f(q final, a) = q rej ; a Vt 29

b) Para cada AF existe uma GR tal que L(AF) = L(GR) Para cada estado q i Q, criamos um Q i Vn; Se f(q i, a) = q j então Q i aq j Se f(q i, a) =q j e q j F então Q i a Vn = Q ; Vt = ; S = q 0 30

Exemplo Ex.: GR AFND AFD GR' G = ({S, B}, {0, 1}, P, S) S 0B B 0B 1S 0 L(G) = 00 + (0 + 1) + 0 + T2(a): GR AFND 31

T1: AFND AFD 32

T2(b): AFND GR (não se leva em conta o estado de rejeição) GR': S 0B B 0B 0 1S B 0B 0 (repetido) L(GR) = L(GR') 33

Um AF não é um programa......mas serve como um bom modelo. Vejamos como podemos implementar um AFD: de forma direta: escrevendo um código que simule as transições. controlado por tabela: simulador universal de AFD (veja Teoria dos Autômatos, Autômatos Finitos, Implementação de Autômatos Finitos em http://www.icmc.usp.br/~gracan/teoria/teoria.html ) 34

Implementando Autômatos Finitos por Código Direto Exemplo: C: conjunto dos caracteres 35

program AF1; type estado = (s0, s1, s2); var s: estado; c: char; F: set of estado; function g(s:estado;c:char):estado; begin case s of s0: case c of '0': g:=s0; '1': g:=s1; else g:=s2 end; s1: case c of '0': g:=s0; '1': g:=s1; else g:=s2 end; end end; {g} begin {progr. pc.} F:= [s1]; s:= s0; while not eof do begin read(c); s:= g(s,c) end; if s in F then writeln('cadeia aceita') else writeln('cadeia rejeitada') end. Método direto: específico, eficiente; cresce com o número de estados. É necessário modificar o programa para cada alteração no autômato. 36

Controle por Tabela de Transição Apl_Trans: Transição 1 2 3 4 5 6 Caracter lido {0} {1} C - {0, 1} {0} {1} C - {0, 1} Próximo Estado s0 s1 s2 s0 s1 s2 7 C s2 Prim_Trans: Estado s0 s1 s2 Transição 1 4 7 37

Interpretador de tabelas "universal" function g(s:estado, c:char): estado; var t: 1.. Ntrans; begin t := Prim_trans[s]; while not(c in Apl_trans[t]. Conjcar) do t := t + 1; g := Apl_trans[t].prox_estado end; 38

Resumo Parcial AFD: conjunto finito de estados e conjunto finito de símbolos de entrada. Uma função determina como o estado se altera toda vez que um símbolo é processado. Linguagem de um AF: Um AF aceita cadeias. Uma cadeia é reconhecida se, começando no estado inicial, as transições levam a um estado de aceitação. AFND: difere do AFD pelo fato de que pode ter qualquer número de transições (inclusive zero) para os estados seguintes, a partir de um dado estado e de um dado símbolo de entrada. Construção de subconjuntos: tratando conjuntos de estados de um AFND como estados de um AFD, é possível converter qualquer AFND em um AFD que aceite a mesma linguagem. 39