Provar que o idioma é regular ou não regular


8

Deixei Lser uma linguagem regular. Prove que:

  1. L+={w:u|u|=2|w|wuL}

  2. L++={w:u2|u|=|w|wuL}

  3. L+={w:u,v|u|=|w|=|v|uwvL}

são regulares e:

  1. L++={uv:w|u|=|w|=|v|uwvL}

não é regular.

Parece muito difícil para mim. Suponho que 1-3 sejam semelhantes (mas posso estar errado), mas não sei como abordar. A idéia geral é geralmente modificar a máquina de estados finitos paraLpara aceitar outro idioma. Mas essas construções geralmente são muito sofisticadas e eu ainda não consigo fazer isso sozinha.



Não tenho certeza de que suas afirmações estejam corretas, porque pelo teorema de Myhill-Nerode parece que as três primeiras línguas têm infinitas classes de equivalência! para o primeiro: tomewi seja o i-ésimo em L+ e wi+1 seja a (i + 1) -ésima palavra, para cada i que puder escolher ui para mostrar que existe uma palavra que separa as classes de wi e wi+1
Fayez Abdlrazaq Deab

@Fayez E se, por exemplo, L=Σ? EntãoL+=Σpossui apenas uma classe de equivalência. Examine sua prova e veja o que está errado.
Yuval Filmus

A @Bartek e qualquer outra pessoa que está votando para fechar: metade da questão é realmente provar que certas operações em idiomas conservam a propriedade de serem regulares.
Yuval Filmus

Respostas:


5

Aqui está uma prova de que o idioma L0={w:u|u|=|w|uwL}é regular. Pode ser modificado para mostrar que os três primeiros da sua lista são regulares. (Observe que eu mudeiwu para uw.) Dado um DFA para L, criamos um NFA para L0. A primeira coisa que a NFA faz é adivinhar (faça umaϵ mover) um estado q, cuja semântica pretendida é o estado em que o DFA para L acaba depois de ler u. Em seguida, ele executa simultaneamente duas cópias do DFA paraL, um começando no estado inicial e outro começando em q. Ao ler um símboloa, ele se move de acordo com um símbolo arbitrário no primeiro e se move de acordo com ano segundo. Um estado está aceitando se a primeira cópia estiver no estadoq e o segundo está em um estado de aceitação.

Para a final, considere o idioma L=a+b+c+e cruzar L++ com a+c+.


Eu não vejo isso. L=a+b+c+L++a+c+={ancm:n+m20}, que é claramente um idioma comum. Mas suponho que estou errado :) Você pode me indicar a direção certa?
xan

Consegui modificar sua construção de L0 e até remover εmove para que fique mais elegante (na minha opinião). Portanto, os três primeiros problemas foram resolvidos e obrigado por isso! :) Mas a única coisa que peço é esclarecer a última e minhas preocupações no comentário acima. Eu ficaria muito agradecido.
xan

Quando eu computo L++a+c+Eu recebo outra coisa. Observe que toda palavra emL deve conter um b.
Yuval Filmus

Desculpe, mas não sei calcular L++a+c+. Suponho que o resultado seja{ancn:nN}o que nos dá o que queremos, mas simplesmente não sei como justificar isso.
xan

Ok, eu posso ver agora :-)
xan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.