Na primeira parte, mostramos um algoritmo exponencial para decidir a circularidade. Na segunda parte, mostramos que esse é um problema coNP. Na terceira parte, mostramos que toda linguagem circular é uma união de linguagens da forma r + (aqui r pode ser o regexp vazio); a união não é necessariamente disjunta. Na quarta parte, exibimos uma linguagem circular que não pode ser escrita como uma soma disjunta ∑ r + i .r+r∑ r+Eu
Editar: Incorporadas algumas correções após os comentários de Marcos. Em particular, minhas afirmações anteriores de que a circularidade é coNP-completa ou NP-difícil são corrigidas.
Editar: Corrigida a forma normal de ∑ r ∗ i a ∑ r + i . Exibiu uma linguagem "inerentemente ambígua".∑ r∗Eu∑ r+Eu
Continuando o comentário de Peter Taylor, veja como decidir (extremamente ineficientemente) se um idioma é circular, considerando seu DFA. Construa um novo DFA cujos estados sejam n- pares dos estados antigos. Este novo DFA executa n cópias do DFA antigo em paralelo.nn
Se o idioma não for circular, haverá uma palavra w, de modo que, se o passarmos pelo DFA repetidamente, começando com o estado inicial s 0 , obteremos os estados s 1 , … , s n de modo que s 1 esteja aceitando apenas um dos outros não está aceitando (se todos estão aceitando, então a sequência s 0 , … , s n deve alternar para que w ∗ esteja sempre no idioma). Em outras palavras, temos um caminho de s 0 , … , s nws0s1,…,sns1s0 0, … , SnW∗- 1 a s 1 ,…, s n em que s 1 está aceitando, mas um dos outros não está aceitando. Por outro lado, se o idioma é circular, isso não pode acontecer.s0 0, … , Sn - 1s1, … , Sns1
Portanto, reduzimos o problema a um simples teste de acessibilidade direcionada (basta verificar todos os n- tufos possíveis "ruins" ).n
O problema da circularidade é difícil de coNP. Suponha que recebamos uma instância 3SAT com n variáveis → x e m cláusulas C 1 , ... , C m . Podemos supor que n = m (adicione variáveis fictícias) e que n seja primo (caso contrário, encontre um primo entre n e 2 n usando o teste de primalidade da AKS e adicione variáveis e cláusulas fictícias).nx⃗ mC1, … , Cmn = mnn2 n
Considere o seguinte idioma: "a entrada não possui a forma → x 1 ⋯ → x n onde → x i é uma atribuição satisfatória para C i ". É fácil construir um O ( n 2 ) DFA para esse idioma. Se o idioma não for circular, haverá uma palavra w no idioma, cujo poder não está no idioma. Como as únicas palavras que não estão no idioma têm comprimento n 2 , w deve ter comprimento 1 ou n . Se for de comprimentox⃗ 1⋯ x⃗ nx⃗ EuCEuO ( n2)Wn2W1n1 , considere w n vez (ele ainda está no idioma), de modo que w é na linguagem e w n não está no idioma. O fato de que w n não está nos meios de linguagem que w é uma atribuição satisfatória.1WnWWnWnW
Por outro lado, qualquer atribuição satisfazer traduz em uma palavra comprovando a não circularidade da língua: a atribuição satisfazer w pertence à língua, mas w n não. Portanto, o idioma é circular se a instância 3SAT for insatisfatória.WWn
Nesta parte, discutimos uma forma normal para linguagens circulares. Considere algumas DFA para uma linguagem circular L . Uma sequência C = C 0 , ... é real se C 0 = s (o estado inicial), todos os outros estados estão aceitando, e C i = C j implica C i + 1 = C j + 1 . Assim, toda sequência real é eventualmente periódica, e há apenas muitas seqüências reais finitas (já que o DFA possui muitos estados finitos).euC= C0 0, …C0 0= sCi=CjCi+1=Cj+1
Dizemos que uma palavra se comporta de acordo com CC se a palavra leva o DFA de estado c i para o estado c i + 1 , para todo i . O conjunto de todas essas palavras E ( C ) é regular (o argumento é semelhante à primeira parte desta resposta). Note-se que E ( C ) é um subconjunto de L .cici+1iE(C)E(C)L
Dada uma sequência real C , defina C k como a sequência C k ( t ) = C ( k t ) . A sequência C k também é verdadeiro. Desde há apenas finitamente muitos diferentes seqüências C k , a linguagem D ( C ) , que é a união de todos E ( C k ) também é regular.CCkCk(t)=C(kt)CkCkD(C)E(Ck)
Afirmamos que D ( C ) tem a propriedade de que se x , y ∈ D ( C ) então x y ∈ D ( C ) . De fato, suponha que x ∈ C k e y ∈ C l . Então x y ∈ C k + l . Assim, D ( C ) = D ( C ) + pode ser escrito na forma rD(C)x,y∈D(C)xy∈D(C)x∈Cky∈Clxy∈Ck+lD(C)=D(C)++ para alguma expressão regular r .r+r
Cada palavra w nos corresponde língua para alguma seqüência verdadeira C , ou seja, não existe uma verdadeira seqüência C que w se comporta de acordo com. Assim G é a união de D ( C ) sobre toda a sequência verdadeira C . Portanto, toda linguagem circular tem uma representação da forma ∑ r + i . Por outro lado, todo idioma é circular (trivialmente).wCCwLD(C)C∑r+i
Considere a linguagem circular L de todas as palavras sobre a , b que contenham um número par ou a 's ou um número par de b ' s (ou ambos). Mostramos que não pode ser escrito como uma soma disjunta ∑ r + i ; por "disjunção" queremos dizer que r + i ∩ r + j = ∅ .La,bab∑r+ir+i∩r+j=∅
Let NiNi be the size of the some DFA for r+ir+i, and N>maxNiN>maxNi be some odd integer. Consider x=aNbN!x=aNbN!. Since x∈Lx∈L, x∈r+ix∈r+i for some ii. By the pumping lemma, we can pump a prefix of xx of length at most NN. Thus r+ir+i generates z=aN!bN!z=aN!bN!. Similarly, y=aN!bNy=aN!bN is generated by some r+jr+j, which also generates zz. Note that i≠ji≠j since xy∉Lxy∉L. Thus the representation cannot be disjoint.