Minimização; Lema do Bombeamento.

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Decidibilidade e Indecidibilidade
UNICAMP Universidade Estadual de Campinas Centro Superior de Educação Tecnológica Divisão de Telecomunicações Propagação de Ondas e Antenas Prof.Dr. Leonardo.
INFORMAÇÕES COMPLEMENTARES
Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS
Material pedagógico Multiplicar x 5 Clica!
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Operadores e Funções do LINGO
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Prof. Yandre Maldonado e Gomes da Costa
1 INQUÉRITOS PEDAGÓGICOS 2º Semestre 2003/2004 ANÁLISE GERAL DOS RESULTADOS OBTIDOS 1.Nº de RESPOSTAS ao inquérito 2003/2004 = (42,8%) 2.Comparação.
Sumário Bem ou serviço compósito = dinheiro Exercícios 2 Exercícios 3.
Sumário, aula 9 Elasticidade Elasticidade arco Elasticidade no ponto
1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 5.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Múltiplos Os múltiplos de um número inteiro obtêm-se multiplicando esse número por 0, 1, 2, 3, 4, 5, 6, ... Exemplos: M5= {0, 5, 10, 15, 20,
Curso de ADMINISTRAÇÃO
Resolução.
Análise de regressão linear simples: abordagem matricial
Relações Adriano Joaquim de O Cruz ©2002 NCE/UFRJ
Árvores.
EXPRESSÕES ARITMÉTICAS
EXPRESSÕES ARITMÉTICAS
Linguagens Livres de Contexto
BCC101 – Matemática Discreta
Strings, Linguagens, Autômatos
Linguagens Não Decidíveis
Problemas Algoritmicos
autômatos finitos com transições e
Identificando Linguagens Não Regulares
Polinômios Prof. Marlon.
FUNÇÃO MODULAR.
EXEMPLOS DE ESTRUTURAS PROTENDIDAS
Mecânica dos Sólidos não Linear
Técnica de Contagem.
Provas de Concursos Anteriores
PROGRESSÕES JUDITE GOMES
Renda até 2 SM.
Hamburgo, Alemanha Definir o caminho que irá permitir a Lions Clubs International alcançar o seu potencial pleno como organização.
Como aplicar leis da lógica
MECÂNICA - ESTÁTICA Cabos Cap. 7.
(CESPE/ Técnico Judiciário do TRT 17ª Região/ES) O Superior Tribunal de Justiça entende que o candidato aprovado em concurso público dentro do limite.
MECÂNICA - DINÂMICA Exercícios Cap. 13, 14 e 17. TC027 - Mecânica Geral III - Dinâmica © 2013 Curotto, C.L. - UFPR 2 Problema
Lema do Bombeamento Linguagens Livres de Contexto
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
Oferta e Demanda A Curva de Oferta
Conversão de um NFA para um DFA com um exemplo
Estruturas de Dados com Jogos
Linguagens Livres de Contexto
Lema do Bombeamento Linguagens Livres de Contexto
Lemas (Sudkamp)  .
Noções de trigonometria e funções trigonométricas
Coordenação Geral de Ensino da Faculdade
Coordenação Geral de Ensino da Faculdade
LIGAÇÕES QUÍMICAS GEOMETRIA MOLECULAR HIBRIDIZAÇÃO
Múltiplos de um número Sonia Regina de Souza Guedes.
Modelagem Estatística
Conceitos básicos em grafos
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Olhe fixamente para a Bruxa Nariguda
Sonia Regina de Souza Guedes
Máquina de Turing Universal
NOÇÕES DE PROBABILIDADE
Minimização de DFAs.
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Redução.
Transcrição da apresentação:

Minimização; Lema do Bombeamento.

Agenda Hoje Para as próximas aulas: Minimização de DFAs Lema do Bombeamento para Linguagens Regulares Para as próximas aulas: Leia Caps. 1.4 (Sipser)

Estados Equivalentes. Exemplo Considere os estados de aceitação c e g. Eles são ambos estados que, uma vez atingidos, nunca se sai deles, desde que se leia 0 ou 1. Q: Precisamos desses dois estados? 0,1 b c 1 0,1 1 a d e 0,1 1 1 f g

Estados Equivalentes. Exemplo R: Não, eles podem ser unificados como se mostra abaixo. Q: Existem outros estados que podem ser unificados, porque quaisquer sufixos subsequentes produzem o mesmo resultado? b 0,1 1 1 a d 0,1 e cg 1 1 f

Estados Equivalentes. Exemplo R: Sim, b e f. Note que se estamos em b ou f então: se o string termina, é rejeitado em ambos os casos se proxchar=0, aceita c/ qq sufixo em ambos os casos Se proxchar=1, rejeita c/ qq sufixo em ambos os casos Portanto, unifique b com f. b 0,1 1 1 a d 0,1 e cg 1 1 f

Estados Equivalentes. Exemplo Intuitivamente, dois estados são equivalentes se todos as computações subsequentes a partir deles são iguais. Q: Dê uma caracterização formal de equivalência entre estados. 0,1 1 a d 0,1 e cg 0,1 1 bf

Estados Equivalentes. Exemplo DEF: Dois estados q e q’ em um DFA M = (Q, S, d, q0, F ) são equivalentes (ou indistinguiveis) se, para quaisquer strings u  S*, os estados a que u leva, quando lido a partir de q ou de q’ são ambos de aceitação, ou ambos não são de aceitação. Estados equivalentes podem ser unificados em um único, sem que isso afete o comportamento de M.

Concluindo o Exemplo Q: Existem outras maneiras de simplificar o autômato abaixo? 0,1 1 a d 0,1 e cg 0,1 1 bf

Estados Inúteis R: Sim: elimine o estado d. A eliminação de estados inúteis (inatingíveis a partir do estado inicial) não altera a linguagem aceita. 0,1 a 0,1 e cg 0,1 1 bf

Algoritmo de Minimização. DEF: Um autômato é irredutível se Não contém estados inúteis, e não contém estados distintos equivalentes. O objetivo do algoritmo de minimização é criar um autômato irredutível a partir de um autômato dado. Pode-se mostrar que esse algoritmo de fato produz o menor DFA possível equivalente ao DFA original. Portanto o nome “minimização”. O algoritmo de minimização trabalha ao inverso do que vimos no exemplo anterior. Começa pelo menor número possível de estados e cria novos estados quando é forçado a isso. Vamos explicar com um jogo:

O Jogo MINIMIZAR 0. Todos os jogadores inúteis são eliminados. O jogo prossegue em rodadas. Começa com 2 times: ACEITA vs. REJEITA. Cada rodada consiste de sub-rodadas, uma para cada time. Dois membros de um time concordam se, para um dado rótulo, passam o bastão para o mesmo time. Caso contrário, discordam. Durante uma sub-rodada, membros que discordam são divididos em novos times maximais de membros concordantes entre si. O jogo TERMINA quando se passa uma rodada sem que nenhum time seja dividido.

O Jogo MINIMIZAR 0,1 b c 1 0,1 1 a d e 0,1 1 1 f g

Algoritmo de Minimização. (Refinamento da Partição) DFA minimize(DFA (Q, S, d, q0, F ) ) remova qq estado q não atingível a partir de q0 Partition P = {F, Q - F } boolean Consistent = false while (not Consistent ) Consistent = true for(every Set S,T  P e char a  S) Set temp = {q T | d(q,a)  S } if (temp != Ø && temp != T ) // S ,T não concordam Consistent = false P = (P -T ){temp, T-temp} // divide T return defineMinimizor( (Q, S, d, q0, F ), P ) Uma partição de Q é uma coleção de conjuntos disjuntos de estados de Q, cuja união é Q O método defineMinimizor é descrito no próxmo slide.

Algoritmo de Minimização. (Refinamento da Partição) DFA defineMinimizor(DFA (Q, S, d, q0, F ), Partition P ) Set Q’ = P // cada partição é um estado do autômato resultante // o estado inicial q’0 é a partição que contém q0 State q’0 = the set in P which contains q0 // F’ consiste das partições que contém apenas estados finais F’ = { S  P | S  F } // computa a nova função de transição d’ for (each S  P, a  S) define d’ (S,a) = the set T  P which contains the states d’(S,a) return (Q’, S, d’, q’0, F’ )

Minimização: Exemplo Considere o DFA

Minimização: Exemplo Versão miniatura

Minimização: Exemplo Divida em dois times. ACEITA vs. REJEITA

Minimização: Exemplo O rótulo 0 não causa divisão nos times

Minimização: Exemplo O rótulo 1 causa divisão do time maior em 2

Minimização: Exemplo Nenhuma divisão mais. TERMINOU!

Minimização: Exemplo. Resultado Os estados do autômato mínimo são os times resultantes. As transições entre esses estados são consolidadas. O estado inicial é o time que contém o estado inicial original.

Minimização: Exemplo. Compare 100100101

Minimização: Exemplo. Compare 100100101

Minimização: Exemplo. Compare 100100101

Minimização: Exemplo. Compare 100100101

Minimização: Exemplo. Compare 100100101

Minimização: Exemplo. Compare 100100101

Minimização: Exemplo. Compare 100100101

Minimização: Exemplo. Compare 100100101

Minimização: Exemplo. Compare 100100101

Minimização: Exemplo. Compare 100100101 ACEITA.

Minimização: Exemplo. Compare 10000

Minimização: Exemplo. Compare 10000

Minimização: Exemplo. Compare 10000

Minimização: Exemplo. Compare 10000

Minimização: Exemplo. Compare 10000

Minimização: Exemplo. Compare 10000 REJEITA.

Minimização: Prova O algoritmo apresentado produz um FA irredutível. Porque esse FA seria o menor FA possível que reconhece a linguagem aceita pelo FA original? Questão análoga em cálculo: Por que um mínimo local seria um mínimo global? Nem sempre é o caso!

Minimização: Prova THM (Myhill-Nerode): O algoritmo de minimização produz um autômato mínimo equivalente. Prova. Mostraremos que qq autômato irredutível é mínimo para a linguagem L que ele aceita: Dizemos que strings u,v S* são indistinguíveis se para todo sufixo x, ux L sse vx L . Note que se u ev são distinguíveis, os caminhos, a partir do estado inicial, rotulados por u e por v devem terminar em estados diferentes.

Minimização: Prova Consequentemente, o número de estados em um DFA para L deve ser pelo menos igual ao ao número de strings mutuamente distinguíveis de L. Mas um DFA irredutível tem a propriedade de que todo estado dá origem a outro string mutuamente distinguível do anterior! Portanto, qq outro DFA para L deve ter pelo menos tantos estados quantos os de um DFA irredutível.  Vejamos como essa prova funciona:

Minimização: Prova. Exemplo A “spanning tree” dos strings {e,0,01,00} é um conjunto de estados mutuamente distinguíveis (caso contrário ocorreria redundância, DFA teria sido reduzido). Qualquer outro DFA para L tem 4 estados. 0,1 a 0,1 e cg 0,1 1 bf

Lema do Bombeamento Motivação Considere a linguagem L1 = 01* = {0, 01, 011, 0111, … } O string 011 é dito bombeável em L1 porque podemos tomar a porção sublinhada e bombeá-la (repeti-la) tantas vezes quanto se queira, obtendo sempre strings em L1. Q: Quais dos seguintes strings são bombeáveis? 01111 01 Now it’s time to pump…

Lema do Bombeamento Motivação Bombeável: 01111, 01111, 01111, 01111, etc. Bombeável: 01 0 não bombeável Seja L2 a linguagem definida pelo autômato: Q: 01010 é bombeável? Now it’s time to pump… 1

Lema do Bombeamento Motivação A: Bombeável: 01010, 01010. Os substrings sublinhados correspondem a ciclos no FA! Ciclos do FA podem ser repetidos um no. de arbitrário de vezes: bombeamento. Seja L3 = {011,11010,000, e} Q: Que strings são bombeáveis? 1 Now it’s time to pump…

Lema do Bombeamento Motivação A:Nenhum! Quando um string pode ser bombeado (de modo não trivial), é sempre possível obter infinitos possíveis strings por meio desse bombeamento. Portanto, linguagens finitas não satisfazem a propriedade de bombeamento. O Lema do Bombeamento provê um critério para quando strings podem ser bombeados: Now it’s time to pump…

Lema do Bombeamento THM: Dada uma linguagem regular L, existe um número p (número de bombeamento) tal que qualquer string em L de comprimento  p é bombeável nos seus p primeiros simbolos. Em outras palavras, para todo u  L, tal que |u |  p, podemos escrever: u = xyz (x é um prefixo, z é umsufixo) |y |  1 (a parte do meio y é não vazia) |xy|  p (bomb. nos p primeiros simbolos) xyiz  L for all i  0 (a partey pode ser bombeada) Finite languages seem to present a problem as in a finite language no string is pumpable! Here, a close reading of the Theorem comes to the rescue. For finite languages you can Always choose p to be 1 more than the maximal length. For example, in the language {011101,10101,0,10001010010} set p = 12. It is vacuously true that any string for length 12 or more is pumpable since there are no strings of that length!

Lema do Bombeamento: Prova EX: Mostre que pal={xS*|x =x R} não é regular. Suponha pal regular Então ela tem um no. de bombeamento p Mas… considere o string 0p10p. Esse string pode ser bombeado nos p primeiros símbolos? A resposta é NÃO, porque qualquer aumento da primeira porção - 0p- resulta em um string que não é um palindromo. (2)(3) <contradição!> Portanto, nossa suposição (1) está errada e podemos concluir que pal não é uma linguagem regular

Lema do Bombeamento: Modelo De modo geral, para provar que L não é regular: Suponha L regular Então L tem um no. de bombeamento p Encontre um padrão de string envolvendo p, que pertença a L, e que não possa ser bombeado. Essa é a parte difícil. (2)(3) <contradição!> Portanto, a nossa suposição em (1) está errada e podemos concuir que L não é regular.

Lema do Bombeamento: Exemplo Como as partes 1, 2 e 4 são idênticas para qualquer prova usando o lema do bombeamento, os exemplos a seguir mostram apenas a parte 3 da prova.

Lema do Bombeamento: Exemplo EX: Mostre que L={a nb n| n = 0,1,2, … } não é regular. Parte 3) Considere a pb p. Por hipótese, a parte a ser bombeada deve estar contida nos p primeiros símbolos do string. Nesse caso, obteríamos um string com mais a’s do que b’s, que não corresponde ao padrão de strings de L.

Lema do Bombeamento: Exemplo Algumas vezes pode ser útil bombear para menos e não para mais, ou seja, simplesmente remover a parte y do padrão do string. Isso corresponde a tomar i = 0 no lema do bombeamento: EX: Mostre que {a mb n| m > n} não é regular. Part 3) Considere a p+1b p. Por hipótese, podemos bombear p/ menos um substring das p primeiras letras desse string. Como y é não vazio, isso resulta em um decréscimo do número de a’s no padrão, significando que o no. de a’s é menor ou igual ao no. de b’s. Portanto, o string resultante não pertence à linguagem!

Lema do Bombeamento: Exemplo Algumas vezes precisamos examinar o resultado do bombeamento com mais cuidado: EX: Mostre que {1n| n é primo} não é regular. Part 3) Dado p, escolhemos um número primo n maior que p. Considere 1n. Por hipótese, podemos bombear um substring dos p primeiros simbolos de 1n. Seja m o comprimento da parte bombeada. Bombeando i vezes, obtemos o string 1(n-m)+im =1n+(i-1)m. Q: Determine i de modo que o expoente não seja um número primo.

Lema do Bombeamento: Exemplo A: Tome i = n + 1. Então o string resultante do bombeamento é 1n+(i-1)m =1n+(n+1-1)m =1n+nm=1n(1+m) Portanto, o expoente não é um número primo (porque é divisível por n e por 1+m), significando que o string não pertence à linguagem.

Lema do Bombeamento: Prova Considere um grafo com n vértices. Suponha que você anda pelo grafo, visitando um certo número de vértices. Q: Quantos vértices você pode visitar, antes de ser forçado a visitar um mesmo vértice uma segunda vez?

Lema do Bombeamento: Prova A: Se voce visita n+1 vértices, necessariamente terá que visitar um deles mais de uma vez. Q: Porque?

Lema do Bombeamento: Princípio da Casa dos Pombos R: Princípio da Casa dos Pombos. Mais precisamente. Sua visita a n+1 vértices define a seguinte função: f : {1, 2, 3, … , n+1}  {conj. card. n } f (i ) = i-ésimo vértice visitado Como o domínio é maior que o codomínio, a função não pode ser injetora.

Lema do Bombeamento: Prova Considere agora o string aceito u. Como L é regular por hipótese, seja M o FA que aceita L. Seja p = |Q | = no. de estados de M. Suponha |u|  p. O caminho rotulado por u visita p+1 estados nos primeiros p símbolos. Então u deve visitar algum estado mais de uma vez. O sub-caminho de u conectando a primeira e a segunda visita a esse vértice é um loop, e nos dá a parte y que pode ser bombeada (contida nos p primeiros símbolos) Exercícios Sipser pag. 84: 1.17, 1.18