Encontrar la factorización máxima de los idiomas regulares


13

Deje que el lenguaje sea ​​regular.LΣ

Una factorización de es un par máximo ( X , Y ) de conjuntos de palabras conL(X,Y)

  • XYL
  • ,XY

donde | x X , y Y } .XY={xyxX,yY}

es máximo si para cada par ( X , Y ) ( X , Y ) con X Y L ya sea X X o Y Y .(X,Y)(X,Y)(X,Y)XYLXXYY

¿Existe un procedimiento simple para descubrir qué pares son máximos?

Ejemplo:

Deje . Se calcula el conjunto F = { u , v , w } :L=ΣabΣF={u,v,w}

  • u=(Σ,ΣabΣ)

  • v=(ΣaΣ,ΣbΣ)

  • w=(ΣabΣ,Σ)

donde .Σ={a,b}

Otro ejemplo:

y L = Σ * un Σ Factorización establece F = { q , r , s , t } conΣ={a,b}L=ΣaΣF={q,r,s,t}

  • q=(Σ,L)

  • r=(Σa,Σ+L)

  • s=(Σaa,ϵ+Σ+L)

  • t=(L,ϵ+L)


44
Recomiendo leer el siguiente artículo (especialmente la subsección 4.1) de Jacques Sakarovitch: perso.telecom-paristech.fr/~jsaka/PUB/Files/TUA.pdf
Cornelius Brand

1
Me pregunto si es posible que desee ser más específico sobre el problema, es decir, la última oración de su pregunta. ¿Nos dan y queremos probar si ( X , Y ) es máximo? ¿Nuestra tarea es enumerar todos ( X , Y ) que son máximos? Si es lo último, ¿está claro que esta lista es finita o de tamaño polinómico? Probablemente no tenga sentido pedir un algoritmo para enumerar todas las posibilidades si hay exponencialmente muchas de ellas. Además, ¿desea especificar cómo se representa el lenguaje L cuando se nos presenta y cómo se representa? (p. ej., DFA, NFA, regexp)X,Y(X,Y)(X,Y)LX,Y
DW

2
No entiendo tus ejemplos. ¿Se supone que son todos pares máximos? v no parece ser válido ...u,v,wv
Raphael

1
El ejemplo está tomado del artículo mencionado anteriormente. Se supone que son pares máximos. Asimismo, no entiendo como v se calcula ya que no parece ser necesariamente en L . Publicaré otro ejemplo. u,v,wvL
Laura

1
@Raphael, me parece que es válido. Dejar X = Σ a Σ , Y = Σ b Σ , ( X , Y ) es una factorización, ya que X Y = L (considere cualquier cadena que contenga una a , luego cualquier secuencia de a 'sy / o b 's, luego eventualmente a b : esta cadena debe tener algún punto donde aparezca la primera b , por lo que es un punto donde contiene unvX=ΣaΣY=ΣbΣ(X,Y)XY=Laabbbab ) Yo no tengo una prueba de que es máxima, pero no puedo encontrar ninguna conjuntos más grandes , que son una factorización de L . X,YL
DW

Respuestas:


8

Como se sugiere en los comentarios a la pregunta, intentaré dar una respuesta (lamentablemente parcial) a la pregunta, al menos en la medida en que haya entendido el problema por mí mismo (esto implica que es posible que encuentre errores, y si encuentra una manera de explicar de manera más breve o clara uno de los siguientes puntos, siéntase libre de editar la respuesta en consecuencia):

Primero, uno debe notar que en realidad no tenemos que calcular el autómata universal de un idioma si queremos calcular las factorizaciones de un idioma.

Del artículo mencionado en mi comentario ¹, hay una correspondencia 1-1 entre los factores izquierdo y derecho de un idioma regular, es decir, dado un factor izquierdo del idioma, el factor derecho correspondiente se determina de manera única y viceversa. Más precisamente, tenemos lo siguiente:

Deje que ser una factorización de L . Entonces Y = x X x - 1 L , X = y Y L y - 1 , es decir, cualquier factor izquierdo es una intersección de los cocientes derechos, y cualquier factor derecho es una intersección de los cocientes izquierdos. A la inversa, cualquier intersección de los cocientes izquierdos de L es un factor derecha de L , y cualquier intersección de cocientes adecuados de L es un factor izquierda de L .(X,Y)L

Y=xXx1L,X=yYLy1,
LLLL

Tenga en cuenta que para un lenguaje normal, solo hay un conjunto finito de cocientes izquierdo y derecho y, por lo tanto, el problema se reduce a calcular los cocientes izquierdo y derecho de un idioma, y ​​luego calcular su cierre estable , es decir, un mínimo superconjunto de los cocientes que se cierra bajo intersección. Estos son, precisamente, a continuación, los factores de la derecha y la izquierda factores, y luego por lo general es fácil ver por qué pares son subconjuntos de L .L

Ejemplo

Para ilustrar los puntos anteriores, considere el primer ejemplo en la pregunta (de la cual también creo que es incorrecto en el documento):

Deje . Ahora, los cocientes izquierdos de L son los conjuntos x - 1 L para x Σ * , es decir, esas palabras u en Σ * que puede ser prefijado con x , es decir, x u L . ¿Cuándo es y - 1 L = x - 1 L para distintas x , y ? Este es el caso si y solo si xL=ΣabΣLx1LxΣuΣxxuLy1L=x1Lx,yxy puede ser aumentada a las palabras en L con exactamente los mismos sufijos. Esto significa que, para ponerlo en términos más familiares, son equivalentes a Nerode, y los sufijos necesarios para agregar palabras a una clase de Nerode son precisamente los cocientes izquierdos respectivos.yL

Para , vemos que nuestras clases de equivalencia de Nerode sonL

  • , el conjunto de palabras que no contiene una b como factor y que termina con a , N1aba
  • , el conjunto de palabras que termina con b y no contiene una b como factor, y N2bab
  • , el conjunto de palabras que contiene una b como factor, es decir, N 3 = LN3abN3=L

Se pueden aumentar con los siguientes conjuntos (es decir, estos son los cocientes izquierdos de las palabras en las clases respectivas):

  • para x en N 1 consta de todas las palabras en L (cualquier palabra se puede aumentar con una palabra que contenga a b como factor y, por lo tanto, se convierte en una palabra en L ) y b Σ , es decir S 1 = L b Σ S1=x1LxN1LabLbΣS1=LbΣ
  • para x en N 2 es el lenguaje en sí, es decir, S 2 = L yS2=x1LxN2S2=L
  • para x en N 3 es obviamente Σ . Es decir, hemos encontrado tres factores de la derecha de L . Como S 2S 1S 3 , sucierre estable es trivial S 1 , S 2 , S 3 , y esos son precisamente los factores correctos.S3=x1LxN3ΣLS2S1S3S1,S2,S3

FL(P1,S1),(P2,S2),(P3,S3).

Ahora, para los factores izquierdos Pi, we use the equations of the beginning of this answer:

Pi=xSiLx1
.

P1LΣaP2ΣP3, we obtain L. You can see this by inspection (the most popular excuse for being too lazy to state a formal proof) or by explicitly computing the right quotients (which is fairly analogous, although not completely, to computing the left quotients). Our factorizations are thus given by FL=u,v,w where

  • u=(P1,S1)=(ΣabΣΣa,ΣabΣbΣ)
  • v=(P2,S2)=(Σ,ΣabΣ) and
  • w=(P3,S3)=(ΣabΣ,Σ)

Summary

To summarize (as you were asking for a simple procedure):

  • For computing the factorizations of a language L, first compute the left quotients of L.
  • You can do so, in the language of the paper, by constructing a minimal DFA A for L and then for each state q in A (corresponding, as a Nerode-equivalence class, to a left quotient) compute the future of q in A, thus obtaining one left quotient of the language for each state.
  • The collection of left quotients obtained in this way yields, in general, a subset SR of the right factors.
  • Compute then the -stable closure of SR, which can be done in practice by forming the intersection of any subset of SR and adding any subset obtained in this way to SR.
  • The set SR together with all the intersections from the previous step is then the set of right factors of L.
  • In order to obtain the left factors, we can compute the right quotients of L.
  • These are sets of the form Ly1, for yΣ. Now, these are again only finitely many, and for xy, we have Ly1=Lx1 if and only if for all uΣ, uxLuyL, that is they can be prefixed to words in the language with precisely the same set of strings.
  • To compute Lx1, consider those states q in A such that x is contained in the future of q. The union of the pasts of those states constitute one right quotient. Find all these quotients.
  • You know you are done when you have found as many left factors as you have right factors.
  • Find those pairs of left and right factors X,Y such that XYL. This is FL.

  1. The Universal Automaton by Lombardy and Sakarovitch (in Texts in Logic and Games, Vol 2: Logic and Automata: History and Perspectives, 2007)

3
¡Agradable! Tengamos en cuenta queUNsi is decidable for regular languages and that these factors X, Y end up being regular due to closure properties. Hence we can not only effectively compute the last bullet in the summary, but we can also filter out the maximal pairs.
Raphael
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.