Sabe-se que o idioma das palavras que contêm número igual de 0 e 1 não é regular, enquanto o idioma das palavras que contêm número igual de 001 e 100 é regular ( veja aqui ).
Dadas duas palavras , é decidível se o idioma das palavras que contêm o mesmo número de e é regular?
regular-languages
undecidability
sdcvvc
fonte
fonte
Respostas:
Dadas duas palavras , w 2 , é decidível se a linguagem L de palavras contendo número igual de w 1 e w 2 é regular?w1 w2 L w1 w2
Primeiro, algumas definições:
elas poderiam ser mais concisas e as notações poderiam ser melhoradas se fossem usadas em provas. Este é apenas um primeiro rascunho.
Dadas duas palavras e w 2 , dizemos que:w1 w2
sempre ocorrecom w 2 , observado w 1 ◃ w 2 , sew1 w2 w1◃w2
sempre co-ocorrecom w 2 , observado w 1 ◃ ▹w1 w2 , se cada um ocorrer sempre com o outro,w1◃▹w2
e w 2 ocorrem independentemente, observado w 1 ▹ ◃w1 w2 , se nem sempre um ocorre com o outro,w1▹◃w2
sempre ocorre m vezes ou maisdo que w 2 , observou w 1 ◃ m w 2 , sse para qualquer cadeia s tais que s = x w 2w1 m w2 w1◃mw2 s com | X | , | y | | ≥ ∣ w 1 ∣ + ∣ w 2 ∣ existem m outras decomposições s = x i w 1 y is=xw2y ∣x∣, ∣y∣| ≥∣w1∣+∣w2∣ m s=xiw1yi para
tal que i ≠ j implica x i ≠ x j .i∈[1,m] i≠j xi≠xj
Essas definições são construídas para que possamos ignorar o que acontece nas extremidades da cadeia de caracteres onde e w 2 devem ocorrer. Os efeitos de limite no final da string precisam ser analisados separadamente, mas representam um número finito de casos (na verdade, acho que esqueci um ou dois sub-casos de limite na minha primeira análise abaixo, mas isso realmente não importa). As definições são compatíveis com a sobreposição de ocorrências.w1 w2
Há quatro casos principais a serem considerados (ignorando a simetria entre e w 2 ):w1 w2
Ambas as palavras se juntam necessariamente, exceto, possivelmente, no final da string. Trata-se apenas de pares dos formatos e 01 i , ou 0 i 1 e 10 i . Isso é facilmente reconhecido por um autômato finito que apenas verifica a ocorrência de ocorrências isoladas nas duas extremidades da cadeia, para garantir que exista uma ocorrência isolada nas duas extremidades ou nas extremidades. Há também o caso degenerado quando w 1 = w 2 : então a linguagem L é obviamente regular.
, mas não w 2 ◃ w 1 Uma das 2 palavras não pode ocorrer sem a outra, mas o inverso não é verdadeiro (exceto possivelmente no final da cadeia). Isso acontece quando:w1◃w2 w2◃w1
é uma substring de w 2 : então um autômato finito pode apenas verificar se w 1 não ocorre fora de uma instância de w 2 .w1 w2 w1 w2
e w 2 = v 1 j para alguma palavra v ∈ { 0 , 1 } ∗ , v ≠ 01 i : então, um autômato finito verifica como no caso anterior que w 1 não ocorre separado de w 2 . No entanto, o autômato permite contar uma instância extra de w 1 que permitirá a aceitação se w 2w1=1i0 w2=v1j v∈{0,1}∗ v≠01i w1 w2 w1 w2 é um sufixo da sequência. Existem outros três casos simétricos (simetria 1-0 e simetria esquerda-direita).
Uma das 2 palavras ocorre duas vezes na outra. Isso pode ser reconhecido por uma automação finita que verifica se a palavra menor nunca ocorre na string. Também é uma variante um pouco mais complexa que combina as duas variações do caso 2. Nesse caso, o autômato verifica se a cadeia menor 1 i 0 nunca ocorre, exceto possivelmente como parte de v na maior v 1 j como sufixo da string (e 3 outros casos por simetria).w1◃2w2
1i0 v v1j
As 2 palavras podem ocorrer independentemente uma da outra. Construímos uma sequencial-máquina generalizada (gsm) G que a saída de um quando reconhece uma ocorrência de w 1 e b durante o reconhecimento de uma ocorrência de w 2 , e esquece-se tudo o resto. O idioma L é regular apenas se o idioma G ( L ) for regular. Mas G ( L ) = { w ∈ { a , b } ∗ ∣ ∣ w ∣ aw1▹◃w2
G a w1 b w2 L G(L) que é claramente livre de contexto e não regular. Portanto, L não é regular.
Na verdade, temos L = G - 1 ( G ( L ) ) . Como linguagens regulares e linguagens livres de contexto são fechadas sob o mapeamento gsm e o mapeamento gsm inverso, sabemos também que L é livre de contexto.G(L)={w∈{a,b}∗∣ ∣w∣a=∣w∣b} L
L=G−1(G(L)) L
Uma maneira de organizar uma prova formal pode ser a seguinte. Primeiro, crie um PDA que reconheça o idioma. Na verdade, isso pode ser feito com uma máquina de 1 balcão, mas é mais fácil ter dois símbolos de pilha para evitar duplicar o controle finito. Então, para os casos em que deveria ser um FA, mostre que o contador pode ser delimitado por uma constante que depende apenas das duas palavras. Para os outros casos, mostre que o contador pode atingir qualquer valor arbitrário. Obviamente, o PDA deve ser organizado de modo que as provas sejam fáceis de transportar.
Representar o FA como um PDA com 2 símbolos de pilha é provavelmente a representação mais simples para ele. No caso não regular, a parte de controle finito do PDA é a mesma do GSM no esboço de prova acima. Em vez de emitir 'e ' b como o GSM, o PDA conta a diferença em número com a pilha.a b
fonte