Provas usando o lema de bombeamento regular

8

Eu tenho duas perguntas:

  1. Eu considero o seguinte idioma

    L1={w{0,1}u{0,1}:w=uuR}.
    Em outras palavras wnão é palíndromo com comprimento uniforme. Eu provei que esse idioma NÃO é regular, provando que seu complemento não é regular. Minha pergunta é como provar usando o lema de bombeamento sem usar o complemento.
  2. Deixei

    L2={w{0,1}w has same number of 101 substrings and 010 substrings}.
    Eu provei que esse idioma não é regular usando classes de equivalência. Como posso provar isso usando o lema de bombeamento?

Muito obrigado pela edição :)

vidente
fonte
Nota. Meu navegador não mostra o sinal "não existe" na descrição deL1. Não se preocupe: ele está lá na fonte e a mudança de navegador ajudou.
Hendrik Jan

Respostas:

7

Nem todos os idiomas não regulares são reprovados no teste do lema de bombeamento. A Wikipedia tem um exemplo irritantemente complexo de uma linguagem não regular que pode ser bombeada. Portanto, mesmo que um idioma não seja regular, talvez não possamos provar esse fato usando o lema de bombeamento.

Mas podemos usar o lema de bombeamento para provar que seu primeiro idioma não é regular. Não tenho certeza sobre o segundo.

Afirmação: L1 não é regular.

Prova: pelo lema de bombeamento. Deixeipseja o comprimento do bombeamento. (Vou usar o alfabeto{a,b} ao invés de {0,1}.) E se p=1, então pegue a string abbaa, que está em L1 e bombeá-lo para aabbaa que não está em L1, tão L1 não seria regular.

E se p>1, então pegue a string apbbaN. (Vamos descobrir o que queremosN para ser posterior.) Em seguida, considere qualquer divisão da string em xyz Onde x=apk, y=ake z=bbaN.

Agora vamos bombear essa corda ivezes. (Vamos descobrir o que queremosi para ser mais tarde.) Recebemos a string xyiz, que dá apkaikbbaN=apk+ikbbaN.

Agora vamos voltar. Primeiro, escolhemosN. Então, alguma escolha dekfoi feito. Então, escolhemosi. Queremos descobrir o queN escolher para que, para qualquer escolha de k[1,p], podemos escolher um i que torna essa string um palíndromo, tornando o número de as à esquerda é igual ao número à direita. (Ele sempre terá um comprimento uniforme.)

Então, queremos sempre conseguir isso pk+ik=N. Se brincarmos com a matemática, achamos que devemos escolherN=p+p! e escolher i=p!/k+1.

Então, para recapitular, escolhemos N=p+p! e escolheu a string apbbaN. Então alguma escolha dek foi feito para que a corda fosse composta de apkybbaN Onde y=ak. Então nós escolhemosi=p!/k+1. Nós bombeamos a corda para obterapkyibbaN=apkaikbbaN=apk+ikbbaN.

Mas sabemos que pk+ik=pk+(p!k+1)k=pk+p!+k=p+p!. EN=p+p!. Então o número deas em ambas as extremidades é o mesmo; portanto, a cadeia é um palíndromo de comprimento par; portanto, não está L1, tão L1 não é regular.

usul
fonte
Resposta perfeita!
farseer
Muito obrigado pela ajuda. A idéia quer escolher uma corda com sabedoria.
farseer
Eu gostaria de dar uma resposta para os dois idiomas, mas o segundo parece doloroso! A abordagem que me levou à resposta na primeira foi tentar provar queL1é realmente bombeável - quando cheguei ao caso final e não consegui provar, comecei a ver como construir a string acima.
usul
@usul como você chegou a isso: N=p+p!, i=p!/k+1i=p!/k+1?
Dima Knivets
3

Para a primeira pergunta, a string 0p12p0p+p!é um contra-exemplo adequado. Seja qual for o comprimento dey é, deve ser um fator de p!, então bombeamos o suficiente e obtemos p+p! zeros no início.

Luke Mathieson
fonte
1

Depois de muito pensar, acho que respondi 2.

escolhemos string (010) ^ N (101) ^ N, em que N está bombeando o comprimento. Não importa o que y escolhermos, xy ^ 0z terá mais 101 do que 010. a idéia é que só podemos adicionar mais 101 sub-strings na primeira parte da string ou remover algumas sub-strings 010.

vidente
fonte
Infelizmente, parece não funcionar :( A cadeia 010010101101 (N = 2) possui três (!) Ocorrências de cada uma. Excluindo a terceira letra, obtemos 01010101101, que ainda possui três ocorrências de 010. Observe a sobreposição. Ainda estou intrigado. ...
Hendrik Jan
Sim! Mas temos 4 ocorrências de 101! Então, quantidade de 101 sub-strings! = Quantidade de 010
vidente
Opa Desculpa. Eu deveria ter lido o que você disse exatamente: "adicione mais 101 substrings". +1 (caso encerrado)
Hendrik Jan