En la primera parte, mostramos un algoritmo exponencial para decidir la circularidad. En la segunda parte, mostramos que este es un problema difícil. En la tercera parte, mostramos que cada lenguaje circular es una unión de lenguajes de la forma r + (aquí r podría ser la expresión regular vacía); La unión no es necesariamente disjunta. En la cuarta parte, exhibimos un lenguaje circular que no se puede escribir como una suma disjunta ∑ r + i .r+r∑ r+yo
Editar: incorporó algunas correcciones después de los comentarios de Mark. En particular, mis anteriores afirmaciones de que la circularidad está completada con coNP o NP-hard están corregidas.
Editar: Se corrigió la forma normal de ∑ r ∗ i a ∑ r + i . Exhibió un lenguaje "inherentemente ambiguo".∑ r∗yo∑ r+yo
Continuando con el comentario de Peter Taylor, aquí se explica cómo decidir (extremadamente ineficientemente) si un lenguaje es circular dado su DFA. Construya un nuevo DFA cuyos estados sean n -tuplas de los estados anteriores. Este nuevo DFA ejecuta n copias del antiguo DFA en paralelo.nortenorte
Si el lenguaje no es circular, entonces hay una palabra w tal que si lo ejecutamos a través del DFA repetidamente, comenzando con el estado inicial s 0 , entonces obtenemos estados s 1 , ... , s n tal que s 1 está aceptando pero uno de los otros no está aceptando (si todos lo están aceptando, entonces la secuencia s 0 , ... , s n debe hacer un ciclo para que w ∗ esté siempre en el lenguaje). En otras palabras, tenemos una ruta desde s 0 , ... , s nws0 0s1, ... , snortes1s0 0, ..., snortew∗- 1 a s 1 ,..., s n donde s 1 está aceptando pero uno de los otros no está aceptando. Por el contrario, si el lenguaje es circular, eso no puede suceder.s0 0, ... , sn - 1s1, ... , snortes1
Así que hemos reducido el problema a una simple prueba de accesibilidad dirigida (solo marque todas las n- tuplas "malas" posibles).norte
El problema de la circularidad es muy difícil. Supongamos que tenemos una instancia de 3SAT con n variables → x y m cláusulas C 1 , ... , C m . Podemos suponer que n = m (agregar variables ficticias) y que n es primo (de lo contrario, encontrar un primo entre n y 2 n usando la prueba de primalidad AKS, y agregar variables ficticias y cláusulas).norteX⃗ metroC1, ... , Cmetron = mnortenorte2 n
Considere el siguiente lenguaje: "la entrada no tiene la forma → x 1 ⋯ → x n donde → x i es una asignación satisfactoria para C i ". Es fácil construir un O ( n 2 ) DFA para este lenguaje. Si el idioma no es circular, entonces hay una palabra w en el idioma, cuyo poder no está en el idioma. Como las únicas palabras que no están en el idioma tienen una longitud n 2 , w debe ser de longitud 1 o n . Si es de longitudX⃗ 1⋯ x⃗ norteX⃗ yoCyoO ( n2)wnorte2w1norte1 , considere w n en su lugar (todavía está en el idioma), de modo que w esté en el idioma y w n no esté en el idioma. El hecho de que w n no esté en el idioma significa que w es una tarea satisfactoria.1wnortewwnortewnortew
Por el contrario, cualquier tarea satisfactoria se traduce en una palabra que demuestra la no circularidad del idioma: la tarea satisfactoria w pertenece al idioma pero w n no. Por lo tanto, el lenguaje es circular si la instancia de 3SAT no es satisfactoria.wwnorte
En esta parte, discutimos una forma normal para los lenguajes circulares. Considere algunas de DFA para un lenguaje circular L . Una secuencia C = C 0 , ... es real si C 0 = s (el estado inicial), todos los demás estados aceptan, y C i = C j implica C i + 1 = C j + 1 . Por lo tanto, cada secuencia real es eventualmente periódica, y solo hay finitamente muchas secuencias reales (ya que el DFA tiene muchos estados).LC=C0,…C0=sCi=CjCi+1=Cj +1
Decimos que una palabra se comporta de acuerdo con CC si la palabra toma el DFA del estado c i al estado c i + 1 , para todo i . El conjunto de todas esas palabras E ( C ) es regular (el argumento es similar a la primera parte de esta respuesta). Tenga en cuenta que E ( C ) es un subconjunto de L .cici+1iE(C)E(C)L
Dada una secuencia real C , defina C k como la secuencia C k ( t ) = C ( k t ) . La secuencia C k también es real. Dado que solo hay finitamente muchas secuencias diferentes C k , el lenguaje D ( C ), que es la unión de todos E ( C k ), también es regular.CCkCk(t)=C(kt)CkCkD(C)E(Ck)
Afirmamos que D ( C ) tiene la propiedad de que si x , y ∈ D ( C ) entonces x y ∈ D ( C ) . De hecho, suponga que x ∈ C k y y ∈ C l . Entonces x y ∈ C k + l . Por lo tanto, D ( C ) = D ( C ) + se puede escribir en la forma rD(C)x,y∈D(C)xy∈D(C)x∈Cky∈Clxy∈Ck+lD(C)=D(C)++ para alguna expresión regular r .r+r
Cada palabra w en el lenguaje corresponde a alguna secuencia real C , es decir, existe una secuencia real C que w se comporta según. Por lo tanto L es la unión de D ( C ) sobre toda la secuencia real de C . Por lo tanto, cada lenguaje circular tiene una representación de la forma ∑ r + i . Por el contrario, cada lenguaje es circular (trivial).wCCwLD(C)C∑r+i
Considere el lenguaje circular L de todas las palabras sobre a , b que contienen un número par o un 's o un número par de b ' (o ambos). Mostramos que no puede escribirse como una suma disjunta ∑ r + i ; por "disjunto" queremos decir que r + i ∩ r + j = ∅ .La,bab∑r+ir+i∩r+j=∅
Deje N i sea el tamaño de la algunos DFA para r + i , y N > max N i ser algún extraño entero. Considere x = a N b N ! . Como x ∈ L , x ∈ r + i para algunos i . Por el lema de bombeo, podemos bombear un prefijo de x de longitud como máximo N . Por lo tanto, r + i genera z = a N !Nir+iN>maxNix=aNbN!x∈Lx∈r+iixNr+ib N ! . Del mismo modo, y = a N ! b N es generado por algunos r + j , que también genera z . Tenga en cuenta que i ≠ j desde x y ∉ L . Por lo tanto, la representación no puede ser disjunta.z=aN!bN!y=aN!bNr+jzi≠jxy∉L