MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3 Athos Coimbra Ribeiro NUSP: ****** 3 de Abril de 26 Problema.46 (itens a,c, e d) Solução a) L = { n m n m, n } Usamos o lema do bombeamento para mostrar que L não é regular. Esta é uma prova por contradição. Assuma que L é regular. p é o comprimento de bombeamento de L dado pelo lema do bombeamento. Escolhemos s = p p p. Pelo fato de s L e s p, o lema do bombeamento garante que s pode ser escrita da forma s = xyz, onde qualquer cadeia xy i z L para i. A cadeia y deve conter apenas caracteres devido à condição 3 do lema do bombeamento: xy p. Veja que para qualquer i, xy i z não pode pertencer a L pois o número de caracteres do lado esquerdo da cadeia, antes de uma sequência de caracteres, seria diferente do número de caracteres do lado direito da cadeia, após uma sequência de caracteres. Sendo xyyz / L, temos uma contradição, mostrando que L não é regular. c) L = { w w {, } não é um palíndromo } Para mostrar que L não é regular, usamos o fechamento por complemento: Dada uma linguagem regular A, seu complemento, A, também é regular.
prova: Suponha um autômato finito determinístico M que reconhece A da forma M = (Q, Σ, δ, q, F ) Existe então um autômato finito determinístico M c = (Q, Σ, δ, q, Q F ) que aceita exatamente todas as palavras em Σ que não são aceitas por M e não aceita nenhuma palavra em Σ que seja aceita por M, ou seja: M c é o autômato que aceita A, provando que A é regular. Provamos então que L não é regular e portanto, L também não é regular. L = { w w {, } é um palíndromo } Usamos o lema do bombeamento para mostrar que L não é regular. Esta é uma prova por contradição. Assuma que L é regular. p é o comprimento de bombeamento de L dado pelo lema do bombeamento. Escolhemos s = p p. Pelo fato de s L e s p, o lema do bombeamento garante que s pode ser escrita da forma s = xyz, onde qualquer cadeia xy i z L para i. A cadeia y deve conter apenas caracteres devido à condição 3 do lema do bombeamento: xy p. Veja que xyyz não é um palíndromo, pois ao realizar o bombeamento, o número de caracteres do lado esquerdo (antes do ) é diferente do número de caracteres do lado direito (após o ). Sendo xyyz / L, temos uma contradição, mostrando que L não é regular. Por fim, se o complemento de L, L, não é regular, L não é regular. d) L = {wtw w, t {, } +} Usamos o lema do bombeamento para mostrar que L não é regular. Esta é uma prova por contradição. Assuma que L é regular. p é o comprimento de bombeamento de L dado pelo lema do bombeamento. Escolhemos s = p p. Pelo fato de s L e s p, o lema do bombeamento garante que s pode ser escrita da forma s = xyz, onde qualquer cadeia xy i z L para i. A cadeia y deve conter apenas caracteres devido à condição 3 do lema do bombeamento: xy p. Veja que para qualquer valor i 2, a quantidade de caracteres antes do primeiro caractere em s é maior ou igual à quantidade de caracteres imediatamente após o primeiro caractere. Note que precisa estar em w, uma vez que o último caractere de s é. Assim, o primeiro w para que s tenha forma wtw deve incluir todos os caracteres antes do primeiro caractere e o primeiro 2
caractere. quando i > 2, independente de como se divida s na forma xy i z respeitando as condições do lema do bombeamento, não há uma quantidade de caracteres suficiente após o primeiro para que xy i z seja da forma wtw com w, t, de modo que para i > 2, xy i z / L. Note, além disto, quando i = 2, a quantidade de caracteres antes e depois do primeiro é igual, de modo que temos t =. Assim, temos uma contradição, mostrando que L não é regular. Problema 2.49 Solução a) B = { k y y {, } e y contém ao menos k s para k } Se B é regular, existe um DFA que reconhece B. Note que por definição, B é a linguagem que aceita qualquer cadeia que inicie com e possua 2 ou mais caracteres, visto que para w B, w com 2 ou mais caracteres sempre pode ser dividido em xy onde o número de caracteres em x é menor ou igual ao número de caracteres em y. Definimos então o autômato A que reconhece B:, q m, q q q 2 A = ({q, q, q 2, q m }, {, }, δ, q, {q 2 }) onde δ é dado pela tabela de transição a seguir: estado q q m q q q q 2 q 2 q 2 q 2 q m q m q m Tabela : tabela de transições Para provar a corretude de A, mostramos que w L A aceita w Primeiramente, mostramos 3
w L = A aceita w Assumimos uma palavra w L, ou seja, w inicia em e tem ao menos 2 caracteres. Mostramos que A aceita w por indução no número n de caracteres em w. Note que w deve ser da forma 2 n onde n é a enésima aparição do caractere. Base: Para n = 2, A aceita w, pois w é da forma. Veja que w é processado em A da seguinte forma: δ(q, ) = q δ(q, ) = q ou seja, o número de zeros em w não importa aqui δ(q, ) = q 2 δ(q 2, ) = q 2 ou seja, o número de zeros em w não importa aqui De modo que ao fim de w, A termina em q 2, que é estado final. Hipótese: A aceita w se w inicia em e o número de caracteres em w é igual a k. Passo de indução: Se A aceita w para w com k caracteres, mostramos que A aceita w com k + caracteres : Para k w é da forma 2 k Para k + w é da forma 2 k k+ Por hipótese, após a k-ésima aparição de em w, A se encontra em um estado de aceitação, independente inclusive de uma cadeia de zeros após o k- ésimo em w. Deste modo, temos que w para k + se encontra no estado de aceitação q 2 de A logo antes de ler k+ Segundo as transições de A, processamos: δ(q 2, ) = q 2 δ(q 2, ) = q 2 ou seja, o número de zeros em w não importa aqui de modo que A permanece em um estado de aceitação, finalizando a prova. Mostramos agora A aceita w = w L Se A aceita w, ao fim de w temos A em um estado final, ou seja: q 2. Para alcançar q 2 vindo de um estado inicial, as transições possíveis são δ(q, ) = q 2 δ(q 2, ) = q 2 δ(q 2, ) = q 2 4
deste modo, w pode terminar em qualquer cadeia em {, }, pois uma vez em q 2, qualquer entrada se mantém no estado final. Porém é necessária a transição por q, δ(q, ), visto que o estado inicial é q. Assim, sabemos que w deve ter forma do tipo x( ). Por sua vez, para que chegue em q vindo do estado inicial temos as seguintes transições δ(q, ) = q δ(q, ) = q de modo que x deve ser x =. Note que se w iniciar em, segue a transição δ(q, ) = q m e que não há transições saindo de q m para um estado diferente. Assim, temos w da forma ( ), que sempre pode ser dividida em 2 partes onde a parte da esquerda contém menos ou a mesma quantidade de caracteres do que a da direita, de forma que w L, finalizando a demonstração. b) C = { k y y {, } e y contém no máximo k s para k } Usamos o lema do bombeamento para mostrar que C não é regular. Esta é uma prova por contradição. Assuma que C é regular. p é o comprimento de bombeamento de C dado pelo lema do bombeamento. Escolhemos s = p p p. Pelo fato de s C e s p, o lema do bombeamento garante que s pode ser escrita da forma s = xyz, onde qualquer cadeia xy i z C para i. A cadeia y deve conter apenas caracteres devido à condição 3 do lema do bombeamento: xy p. Veja que para i =, xy i z não pode pertencer a C pois o número de caracteres do lado direito da cadeia, depois de uma sequência de caracteres, seria maior do que o número de caracteres do lado esquerdo da cadeia, antes de uma sequência de caracteres. Ficaria impossível dividir s no formato k y com o número de caracteres em y menor ou igual a k ao se bombear para baixo (i = ). Sendo xy z / C, temos uma contradição, mostrando que C não é regular. Problema 3 Converter a expressão regular ( ) ( ) para AFN. Solução A conversão a seguir é realizada utilizando o método apresentado em LEMMA.55, segunda edição do livro texto (Sipser). Para a expressão regular, temos: 5
Para a expressão regular, temos: Para a expressão regular, temos: Para a expressão regular ( ), temos: Para a expressão regular ( ), temos: Para a expressão regular, temos: Para a expressão regular ( ), temos: 6
Para a expressão regular ( ) ( ), temos: Finalmente, para a expressão regular ( ) ( ), temos: 7
Concluindo a conversão. Problema 4 No autômato generalizado da figura.67b, foi removido o estado 2, resultando no autômato da figura.67c. Foi então removido o estado para produzir o autômato da figura.67d, obtendo-se assim uma expressão regular final. Refazer o procedimento produzindo um autômato generalizado ao se remover o estado daquele da figura.67b. Deste autômato generalizado resultante, remova o estado 2 e produza um novo autômato generalizado final com dois estados. Compare a expressão regular obtida com aquela mostrada no livro. Solução a a,b b 2 Adicionamos estados inicial e final, s e a: 8
a a b b s 2 a Removemos o estado : a b a s b 2 a Finalmente, removemos o estado 2: a b(a b) s a de modo que a expressão regular obtida é igual à expressão regular do exemplo.67. a b(a b) 9