Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Teoria da.

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Linguagens Livre-de-contexto
FAPE - Curso de Ciência da Computação
FAPE - Curso de Ciência da Computação
Fluxo em Redes Prof. Ricardo R. Santos.
Variantes de Máquina de Turing
INTRODUÇÃO À LÓGICA DIGITAL
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
II – Análise léxica DEI Conversão de expressões regulares em autómatos finitos determinísticos mínimos Bibliografia aconselhada: Aho, Sethi e Ullman –
I - Noções dum compilador
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
Prof. Yandre Maldonado e Gomes da Costa
Linguagens Formais e Autômatos
TEORIA DA COMPUTAÇÃO Parte III  Máquina de Turing
Teoria da Computação FIC– Ciência da Computação
Análise Léxica (Parte 2)
3 AUTÓMATOS FINITOS.
Sinais e Sistemas – Capítulo 4
Ling. Formais e Autômatos Autômatos finitos
Equivalência de Autômatos
Lema do Bombeamento – Gramáticas Livres do Contexto
Linguagens Livres de Contexto
Strings, Linguagens, Autômatos
Linguagens Não Decidíveis
esquerda p/ direita,read only
Linguagens e Máquinas WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE
autômatos finitos com transições e
Identificando Linguagens Não Regulares
Polinômios Prof. Marlon.
Linguagem de Prog. e Programas
Informática Teórica Engenharia da Computação
Lema do Bombeamento Linguagens Livres de Contexto
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Compiladores, Aula Nº 5 João M. P. Cardoso
Lema do Bombeamento Linguagens Livres de Contexto
Erick Vagner Cabral Igor Lucena Vitor Baptista
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
SIPSER – Capítulo 3: A tese de Church-Turing
Informática Teórica Engenharia da Computação
Ling. Formais e Autômatos AFN-ε
Teoria da Computação Aula 1 Prof. Fabiano Sabha.
Campus de Caraguatatuba Aula 8: Noções Básicas sobre Erros (2)
Inteligência Artificial
LFA: Unidade 03 – Parte B Engenharia/Ciência da Computação
Estado Final Único para NFAs e DFAs
Redução.
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Prof. André Luis Roland Tancredo Engenheiro da Computação e Pesquisador em Desenvolvimento Tecnológico para Semicondutores pelo CNPq Especialista em Microeletrônica.
Linguagens Formais - aula 02
Computabilidade e Linguagens Formais
Computabilidade e Linguagens Formais
Engenharia/Ciência da Computação
Algoritmos e Programação I
Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Informática Teórica Engenharia da Computação
Transcrição da apresentação:

Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Teoria da Computação TC 2005.1

TC: Questões Centrais Quais as capacidades e limitações fundamentais dos computadores? O que pode e o que não pode (problema) ser resolvido por computadores? O que faz alguns problemas serem computacionalmente mais difíceis que outros?

TC: Áreas Centrais Teoria dos Autômatos Computabilidade definição e propriedades de modelos matemáticos de computação. Computabilidade tese de Church-Turing (algoritmos), decidibilidade e indecidibilidade Complexidade Computacional classificação de problemas como fáceis ou difíceis (polinomiais x exponenciais).

Modelos Computacionais Autômatos Finitos Bom modelo para computadores com capacidade de memória reduzida. Fazem parte de vários dispositivos eletro-mecânicos do dia-a-dia.

Controladores Ex: Controlador de uma porta automática Visão aérea de uma porta automática

Estado O controlador pode estar em 2 estados: aberto (significando porta aberta) fechado (significando porta fechada) O controlador passa de um estado para outro dependendo do estímulo (entrada) que recebe:

Entrada Existem 4 condições de entrada possíveis: Frente : significando que uma pessoa está em pé sobre o tapete da frente; Retaguarda: significando que uma pessoa está em pé sobre o tapete de dentro; Ambos: significando que existem pessoas sobre os 2 tapetes; Nenhum: significando que ninguém está sobre os tapetes.

Diagrama de Estados Representação da situação: Diagrama de estados

Tabela de Transição Tabela de transição de estado Obs: Quantos bits de memória são necessários?

Computação Exemplo: Controlador inicia no estado fechado e recebe seguinte série de sinais de entrada: frente, retaguarda, nenhum, frente, ambos Série de estados: fechado (inicio), aberto, aberto, fechado, aberto, aberto

Aplicações Controladores para: Lavadoras de louça/roupa; Termômetros eletrônicos; Relógios digitais; Calculadoras; Máquinas de venda automática. São exemplos de controladores com memória limitada e que podem ser descritos por um Autômato Finito.

Autômato Finito Autômatos finitos são dispositivos formais úteis para: Reconhecer padrões em dados; Projetar uma nova linguagem para uma aplicação especifica; Processamento de voz; Reconhecimento ótico de caracteres; Controle;

Autômato Finito Vamos olhar os Autômatos finitos a partir de uma perspectiva matemática: Definição precisa. Definição abstrata. Sem nenhuma referencia a qualquer aplicação em particular. Vamos descrever e manipular AF’s e apresentar resultados teóricos que descrevem seu poder e limitação.

Autômato Finito Um autômato finito M1: (diagrama de estados) Observações: M1 tem 3 estados, q1, q2, q3 ; M1 inicia no estado q1 ; M1 tem um estado final, q2 ; Os arcos que vão de um estado p/ outro chamam-se transições.

Observações(continuação): Autômato Finito Observações(continuação): O autômato finito M1 recebe os símbolos de entrada um por um; Depois de ler cada símbolo, M1 move-se de um estado para outro, de acordo com a transição que possui aquele símbolo como seu rótulo; Quando M1 lê o ultimo símbolo ele produz uma saída: aceita se M1 está no estado final e não-aceita se M1 não estiver.

Autômato Finito Ex: entrada 1101, M1 procede como segue: Inicia no estado q1. Lê 1, segue transição de q1 p/ q2. Lê 1, segue transição de q2 p/ q2. Lê 0, segue transição de q2 p/ q3. 1 1 q1 q2 q3 Lê 1, segue transição de q3 p/ q2. 1 Pára c/ saída aceita.

Autômato Finito Experimente: 1, 01, 11, 0101 (em M1) Podemos deduzir que : M1 aceita qualquer cadeia que termine com 1 (vai p/ o estado final q2 toda vez que lê 1); M1 aceita qualquer cadeia que termine c/ um número par de zeros que seguem o último 1; M1 não aceita cadeias como 0, 10, 101000.

Autômato Finito Definir um AF significa definir: Um conjunto finito de estados; Um alfabeto de entrada que indica os símbolos de entrada permitidos; Um conjunto de regras de movimento que indicam como ir de um estado p/ outro, dependendo do símbolo de entrada; Um estado escolhido como estado inicial; Um conjunto de estados escolhidos como estados finais (de aceitação);

Autômato Finito Definição formal: Um AF M é uma 5-tupla < Q, , , q0, F >, onde: Q é um conjunto finito e não-vazio chamado de conjunto de estados;  é um conjunto finito e não-vazio chamado de alfabeto;  : Q    Q é a função de transição do autômato; q0  Q é o estado inicial; e F  Q é o conjunto de estados finais.

Função de transição: representações : Q    Q

Autômato Finito Vamos estender  para ´ : Q  *  Q : ´(q, ) = q ´(q, a) = (q, a) ´(q, wa) = (´(q, w), a) Exemplo: ´(q1, 011) = (´(q1, 01), 1) = ((´(q1, 0), 1), 1) = (((q1, 0),1 , 1) = ((q1, 1), 1) = (q2, 1) = q2

Computação de um AF Seja M um AF M = < Q, , , q0, F > e w  *. Uma computação de M a partir de w é uma sequência: c0, c1, ..., cn , onde: co = <qo, w> cn = <qj, l>, qj  Q cj+1= <d(cj, au), u> , a   e u  *.

Computação de um AF Seja w = 001: c0 = <q1, 001> 1 c3 = <q2, l> 1 q1 q2 q3 0,1

Palavra aceita por um AF Seja M = <Q, , , q0, F> um AF e seja w = w1w2w3 ... wn  * , wi  S, 1 i  n. Dizemos que M aceita w sse existe uma seqüência de estados r0, r1, ... , rn tal que: r0 = q0 ;  (ri, wi+1) = ri+1 para i = 0, 1, ..., n-1; rn  F. Ou seja, M aceita w sse a computação de M para a entrada w termina em um estado final, ou seja, ’(q0, w)  F.

Linguagem reconhecida por um AF Seja M um AF <Q, , , q0, F>. Então, a linguagem reconhecida por M, L(M), é definida como: L(M) = {w  * : ’(q0, w )  F}. Ou seja, L(M) é o conjunto de todas as palavras aceitas por M. Uma linguagem reconhecida por um AF é dita ser uma linguagem regular.

Autômato Finito Exemplo: M2 recebe strings no alfabeto {0,1} representando mensagens. Se o último símbolo recebido de uma mensagem é 1, significa que houve um erro na transmissão e deve ser sinalizado por M2. (L(M2) = ?)

Autômato Finito Troque os estados final e não final de M2 e veja o que resulta: (L(M3)=?)

Autômato Finito M4 : L(M4) = ?

Autômato Finito M5 :  = { RESET, 0, 1, 2 } L(M5) = ? Exemplo: w L(M5): w = 10<RESET>22<RESET>012 L(M5) = ?

Operações Regulares Teorema 1 A classe das linguagens regulares é fechada pela operação de união. Isto é, se A e B são linguagens regulares, então A  B também é regular.

Teorema 1 Prova: Sejam A1 = L(M1), onde M1 = <Q1, , 1, q1, F1> e A2 = L(M2), onde M2 = <Q2, , 2, q2, F2> Construa M = <Q, , , q0, F>, tal que A1  A2 = L(M), da seguinte forma: Q = Q1 x Q2 = {(r1, r2) : r1  Q1 e r2  Q2};  é o mesmo; ((r1, r2), a) = (1(r1, a), 2(r2, a)); q0 = (q1, q2); F = {(r1, r2) : r1  F1 ou r2  F2}. Mostre que L(M) = L(M1)  L(M2)

Operações regulares Teorema 2 A classe das linguagens regulares é fechada pela operação de concatenação. Isto é, se A1 e A2 são linguagem regulares, então A1 • A2 também é regular.

Idéia da prova Como no teorema anterior, começamos por 2 autômatos finitos M1 e M2 que reconhecem as linguagens A1 e A2, respectivamente. Construímos então um autômato finito M que deve aceitar uma entrada se ela pode ser “quebrada” em duas partes, onde M1 aceita a primeira parte e M2 a segunda. O problema é que M não sabe onde “quebrar” a entrada, isto é, onde a primeira parte termina e a segunda começa.

Não-determinismo Até agora, quando um AF está em um dado estado e lê o próximo símbolo da entrada, nós sabemos exatamente qual seu próximo estado (é bem determinado) :  : Q    Q é uma função cujo valor é um estado de Q. Máquinas que se comportam dessa forma são chamadas de determinísticas. Máquinas não-determinísticas são aquelas em que diversas escolhas podem existir para o próximo estado em qualquer ponto da execução.

Não-determinismo Exemplo: N1: Um estado pode ter zero, um ou mais arcos “saindo” para o mesmo símbolo do alfabeto; zero, um ou mais arcos podem sair de cada estado rotulados com .

Computação de um AFND Vamos considerar N1 com a entrada 01011 N1: A entrada é aceita porque um dos caminhos possíveis que o autômato segue termina em um estado que é um estado final. Então, a linguagem de um AFND é o conjunto das palavras que ele aceita.

Vantagens de usar um AFND Vantagens de se usar AFND: Todo AFND pode ser convertido para um AFD; É mais fácil de criar; É geralmente menor; É mais fácil de se provar propriedades dos AF’s.

Exemplo de um AFND Exemplo: N2: Que linguagem esse autômato reconhece? L(N2) = { w  {0,1}* : w = u1v, u  * , v  2}

AFND Definição formal: Seja P(Q) o conjunto potência (power set) de Q e seja  =   {}. Um Autômato Finito Não-Determinístico (AFND) é uma 5-tupla <Q, , , q0, F>, onde: Q é um conjunto finito de estados;  é um alfabeto finito;  : Q x   P(Q) é a função de transição; q0  Q é o estado inicial; e F  Q é o conjunto de estados de aceitação.

Exemplo de AFND Exemplo: A definição formal de N1 é <Q, , , q1, F>, onde: Q = {q1, q2, q3, q4};  = {0, 1};  é dada por:  {q4} q4 {q3} q3 q2 {q1, q2} {q1} q1 1   q1 é o estado inicial; e F = {q4}.

Equivalência entre AFD e AFND Teorema 3 Todo AFND tem um AFD equivalente.

Equivalência entre AFD e AFND Prova: Seja N = <Q, , , q, F> um AFND que reconhece uma linguagem A. Vamos construir um AFD M da seguinte forma: M = <Q’, , ’, q’, F’> , onde: Q’ = P(Q) : Todo estado de M é um sub-conjunto de estados de N; Para R  Q’ e a   : ’(R, a) = {q  Q | q  (r, a), para algum r  R}, ou seja, a união dos conjuntos (r, a) para cada possível r em R; q’ = {q 0}; F’ = {R  Q’ | R contém um elemento de F}. Obs: Não leva em conta transições com .

Equivalência entre AFD e AFND Introduzindo : Para qualquer estado R de M (ou seja, para qualquer sub-conjunto de Q) definimos: E(R) = Conjunto de todos os estados que posam ser atingidos de R através de arcos rotulados p/ , incluindo os membros de R. E(R) = { q : q pode ser alcançado de R se caminhando ao longo de 0 ou mais arcos rotulados por  }. Assim: ’(R, a) = {q  Q | q  E((r, a)) para algum r  R}. q 0 ’ = E( {q 0} ).

Equivalência entre AFD e AFND Exemplo: Seja N o AFND abaixo: Construir um AFD M equivalente à N.

Equivalência entre AFD e AFND M = <Q’, , ’, q’, F’>, tal que: Q’ = < , {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3} > q 0’ = E( {q 0} ) = E( {1} ) = {1, 3} F’ = { {1}, {1, 2}, {1, 3}, {1, 2, 3} } AFND N a  {1, 3} {1, 2} {1,2,3} {2, 3} {3} {1} {2} a,b b AFD M

Minimizando o AFD Retirando os estados {1} e {1, 2} pois são inacessíveis b  {1, 3} {1, 2} {1,2,3} {2, 3} {3} {1} {2} a,b a AFD M Obtemos a AFD M’ :  {1, 3} {1,2,3} {2, 3} {3} {2} a,b a b AFD M’

Equivalência entre AFD e AFND AFND N2 q000 q010 q001 q011 q110 q100 q101 q111 1 AFD correspondente

AFND’s e linguagens regulares Corolário Uma linguagem é regular se e somente se existe algum AFND que a reconheça.

Operações regulares: União Teorema 4 (versão 2 do teorema 1) Sejam A1 e A2 linguagens regulares. Então, A1  A2 é regular.

Prova (versão 2) Construir N = <Q, , , q0, F> tal que: Sejam N1 e N2 AFND’s tais que A1 = L(N1) e A2 = L(N2) N1 = <Q1, , 1, q1, F1> e N2 = <Q2, , 2, q2, F2> Construir N = <Q, , , q0, F> tal que:

É fácil ver que L(N) = L(N1)  L(N2) Prova (versão 2) (q,a) = 1(q,a) q  Q1 2(q,a) q  Q2 {q1, q2} q = q0 e a =   q = q0 e a   Q = {q0}  Q1  Q2 Q0 é o estado inicial de N. F = F1  F2  é da forma: É fácil ver que L(N) = L(N1)  L(N2)

Concatenação Teorema 5 Sejam A1 e A2 linguagens regulares. Então A1 • A2 é regular.

Prova Prova: Sejam N1 e N2 AFND’s tais que A1 = L(N1) e A2 = L(N2) N1 = <Q1, , 1, q1, F1> e N2 = <Q2, , 2, q2, F2> Construir N = <Q, , , q0, F> tal que:

Prova Q = Q1  Q2 q1  Q1 é o estado inicial de N: q1  Q1  Q2 O conjunto de estados de reconhecimento de N é F2  é da forma: (q,a) = 1(q,a) q  Q1 e q  F1 1(q,a) q  F1 e a   1(q,a)  {q2} q = q0 e a =  2(q,a) q  Q1 É fácil ver que L(N) = L(N1) • L(N2)

Expressão Regular Assim como uma expressão aritmética representa um número natural: (5 + 3) x 4 uma expressão regular representa uma linguagem: (0 + 1)  0*

Expressão Regular Na expressão (0 + 1)  0* : 0 representa o conjunto {0} 1 representa o conjunto {1} (0 + 1) representa o conjunto {0}  {1} = {0, 1} 0* representa {0}* Então (0 + 1)  0* representa a linguagem: {uv: u  {0, 1} e v = 0n, n0}

Expressão Regular Definição formal: Seja  um alfabeto Se a  , então a é uma expressão regular. Se  é a palavra nula, então  é uma expressão regular. Se  é o conjunto vazio, então  é uma expressão regular. Se R1 e R2 são expressões regulares, então (R1 + R2) e (R1  R2) são expressões regulares. Se R1 é uma expressão regular, então (R1*) é uma expressão regular.

Expressão Regular Definição: Definição: Se R é uma expressão regular, então L(R) é a linguagem que R representa/descreve. Ex.: L((a + b)) = {a, b} Definição: R1  R2 (equivalente) sse L(R1) = L(R2)

Expressão Regular Mas geralmente, Se  = {0, 1} , podemos usar  como abreviação para e expressão regular (0 + 1). Mas geralmente, Se  é um alfabeto, a expressão regular  descreve a linguagem consistindo de todas as palavras de comprimento 1 sobre esse alfabeto e a expressão regular * descreve a linguagem consistindo de todas as palavras sobre aquele alfabeto. Ex: (0  *) + (  1)

Expressões x Linguagens (0 + l)  (1 + l) {l, 0, 1, 01} 1*    * {l}

Propriedades R1  (R2  R3)  (R1  R2)  R3 (associativa) R1  (R2 + R3)  (R1  R2) + (R1  R3) (distributiva) (R1 + R2)  (R2 + R1) (comutativa) (R + )  R (R  l)  R

Expressão Regular Prova da 2: w  L(R1  (R2  R3)) sse existem x  L(R1) e y  L(R2  R3) tais que w = x.y existem x  L(R1) e (y  L(R2) ou y  L(R3)) tais que w = x.y existem x  L(R1) e y  L(R2) ou existem x  L(R1) e y  L(R3) tais que w = x.y existem x  L(R1) e y  L(R2) tais que w = x.y ou existem x  L(R1) e y  L(R3) tais que w = x.y sse w  L(R1  R2) ou w  L(R1  R3) sse w  L(R1  R2)  L(R1  R3)

Expressão Regular x Autômatos Finitos Se uma linguagem é descrita por uma expressão regular então ela é regular. Prova: Seja R uma expressão regular que descreve uma linguagem A. Vamos mostrar que todos os seis casos da definição indutiva de expressão regular levam a linguagens regulares. Teorema 6

Expressão Regular x Autômatos Finitos R = a , para algum a em S. Então, L(R) = {a} e o seguinte AFND reconhece L(R): a

Expressão Regular x Autômatos Finitos R = l Então, L(R) = {l} e o seguinte AFND reconhece L(R):

Expressão Regular x Autômatos Finitos Então, L(R) =  e o seguinte AFND reconhece L(R):

Expressão Regular x Autômatos Finitos R = R1+ R2 R = R1  R2 R = R1* Da definição indutiva de expressão regular e do fato que a classe é fechada por união, concatenação e estrela, podemos confirmar 4, 5 e 6 e concluir a prova do teorema.

Expressão Regular x Autômatos Finitos Exemplo: Converter (ab + a)* em um AFND. a 1. a b 2. b a l b 3. ab

Expressão Regular x Autômatos Finitos b 4. ab + a

Expressão Regular x Autômatos Finitos b (ab + a)* 5.

Expressão Regular x Autômatos Finitos Teorema 7 Se uma linguagem é regular então ela pode ser descrita por uma expressão regular. Prova: Procedimento para converter AF’s em expressões regulares. Vamos fazer uso do conceito de Autômato Finito Não-Determinístico Generalizado(AFNDG): AFNDG’s são AFND’s cujos arcos podem ser rotulados por expressões regulares além dos símbolos do alfabeto e .

AFNDG Por conveniência – Forma especial: O estado inicial tem setas levando a todos os outros estados, mas nenhuma seta de entrada; Há apenas um estado final, e este tem setas vindo de todos os outros estados, mas nenhuma partindo de si. Dessa forma, o estado inicial não pode ser o estado final; Com exceção dos estados final e inicial, todos os outros tem setas ligando a qualquer outro estado, e a si próprios.

AFNDG Como converter um AFNDG para a forma especial adicionar um novo estado inicial com arco  para o antigo estado inicial e um novo estado final com arcos  vindo dos antigos estados finais; se qualquer arco tem vários rótulos, substitua-os pelo rótulo igual à adição deles; adicione arcos rotulados por  entre estados que não tem arcos.

AFNDG Definição formal: Um AFNDG é uma 5 tupla <Q, , , qinicial, Ffinal> onde: Q é o conjunto de estados;  é o alfabeto de entrada; : (Q - {qfinal}) x (Q - {qinicial})  R; qinicial é o estado inicial; qfinal é o estado final.

AFNDG Definição: Um AFNDG aceita uma palavra w  * se w = w1w2w3...wk, onde cada wi é pertence a *, e existe uma seqüência de estados q0q1q2...qk tal que: q0 = qinicial é o estado inicial; qk = qfinal é o estado final; e Para cada i, wi  L(Ri), onde Ri = (qi-1, qi).

AFNDG Como converter um AFNDG na forma especial em uma expressão regular: Supondo o AFNDG com k estados. Se k = 2, o AFNDG tem apenas 1 arco que vai do estado inicial para o estado final. Esse arco é rotulado pela expressão regular que descreve a linguagem. Se k > 2, construir um AFNDG equivalente com k-1 estados. Esse passo pode ser repetido até que o AFNDG tenha 2 estados. Como ele tem um estado inicial e um estado final necessariamente distintos, então, k ≥ 2.

AFNDG Procedimento CONVERT(G): 1. Seja k o número de estados de G; 2. Se k =2, G deve consistir apenas de qinicio e qfinal.

AFNDG 3. Se k > 2, selecionamos o estado qelim  Q diferente de qinicial e qfinal, e temos G’ como o AFNDG < Q’, , ’, qinicial, qfinal >, onde Q’= Q - {qelim}, e para qualquer q  Q’-{qinicial}, tem-se ’ (qi, qj) = (R1) (R2)* (R3) + (R4), para R1 = ’(qi, qelim), R2 = (qelim, qelim), R3=(qelim, qj), e R4 = (qi, qj). 4. Compute CONVERTE(G’) e retorne este valor. 

AFNDG com novo estado inicial s e final a. Exemplo: AFD inicial AFNDG com novo estado inicial s e final a.

AFNDG Cont. do exemplo: Remoção do estado 2 e atualização dos rótulos. Resultado obtido seguindo o passo 3 do procedimento CONVERT: qi = 1, qj = a e qelim = 2; R1 = b; R2 = a  b; R3 = ; R4 = . Então, o novo rótulo para a seta indo de 1 até a é a expressão regular b(a  b)*. Remoção do estado 1 e atualização do rótulo. O rótulo é a expressão regular que representa o AFD.

Expressão Regular x Autômatos Finitos Teorema 8 Uma linguagem é regular se e somente se ela pode ser descrita por uma expressão regular. Prova: Teoremas 6 e 7.

Lema do Bombeamento Toda linguagem regular tem uma propriedade especial: Toda palavra na linguagem contém uma seção (pedaço) que pode ser repetida qualquer número de vezes com a palavra resultante também pertencendo à linguagem. Se podemos mostrar que uma linguagem não tem esse propriedade então a linguagem garantidamente não é regular.

Lema do Bombeamento Se A é uma linguagem regular, então existe um número p (o comprimento do bombeamento) tal que. Se w  A e |w| ≥ p, então w = xyz satisfazendo as seguintes condições: Para cada i ≥ 0, xyiz  A |y| > 0 |xy| ≤ p

Lema do Bombeamento Prova (idéia): Seja M = <Q, , , q, F> um AFD que reconheça A. Seja p o número de estados de M. Se s  A tem comprimento no mínimo igual a p, |s|  p, considere a seqüência de estados que M assume quando computando s: q1, q3, q20, q9, q17, q9, q6, ..., q35, q13 Se |s| = n, a seqüência de estados acima tem comprimento n + 1.

Lema do Bombeamento Prova (idéia): Como n ≥ p, então n+1 > p. (lembrar que p é o número de estados de M), então, a seqüência de estados acima deve necessariamente conter um estado repetido (princípio da casa de pombos). s = s1 s2 s3 s4 s5 s6 ... sn q1 q3 q20 q9 q6 q17 q35 q13

Lema do Bombeamento Vamos dividir s em três pedaços: x, y e z: O pedaço x é a parte de s que vai do estado inicial q1 até o estado q9 (x ocupa M do estado q1 até q9). O pedaço y é a parte de s contida entre as duas ocorrências de q9 (y ocupa M de q9 até de volta a q9). O pedaço z é a parte remanescente de s ( z ocupa M de q9 até o estado de reconhecimento q13).

Lema do Bombeamento Condição 1: Condição 2: Condição 3: M aceita a entrada xz (xy0z) M aceita a entrada xyiz (i ≥ 1) Condição 2: y é a parte de s construída entre as duas ocorrências de q9: |y| > 0. Condição 3: Os primeiros p+1 estados na seqüência devem conter uma repetição. Então, |xy| ≤ p.

Tradutor de Estado Finito

Tradutor de Estado Finito (TEF) Definição: Um Tradutor de Estado Finito (TEF) é uma 6-tupla <, G, Q, q0, ,  >, onde:  é alfabeto de entrada; G é o alfabeto de saída; Q é o conjunto de estados; q0  Q é o estado inicial;  : Q    Q; e  : Q    G

Tradutor de Estado Finito (TEF) Exemplo: B = <{a, b}, {0, 1}, {q0, q1}, q0, ,  >, onde:

Tradutor de Estado Finito (TEF) Da mesma forma como para ’ : ’(q, ) =  ’(q, aw) = (q, a). ’((q, a), w) Definição: Dado um TEF M = <, , Q, q0, ,  >, a função de transição para M, fM, é a função fM : *   * definida por fM(w) = ’(q0, w). Obs.: Note que fM preserva o comprimento, isto é, |fM(w)| = |w|.

Tradutor de Estado Finito (TEF) Exemplo: