¿Es regex golf NP-Complete?

27

Como se ve en esta reciente tira de XKCD y esta reciente publicación de blogde Peter Norvig (y una historia de Slashdot con este último), "regex golf" (que podría llamarse el problema de separación de expresiones regulares) es el rompecabezas de definir la expresión regular más corta posible que acepte cada palabra en el conjunto A y ninguna palabra en la publicación del conjunto B. Norvig incluye un algoritmo para generar un candidato razonablemente corto, y señala que su enfoque implica resolver un problema de cubierta de conjunto completa de NP, pero también tiene cuidado de señalar que su enfoque no considera todas las expresiones regulares posibles, y, por supuesto, el suyo no es necesariamente el único algoritmo, por lo que no se garantiza que sus soluciones sean óptimas, y también es posible que algún otro algoritmo de tiempo polinomial pueda encontrar soluciones equivalentes o mejores.

En aras de la concreción y para evitar tener que resolver la cuestión de la optimización, creo que la formulación más natural de la separación de expresiones regulares sería:

Dados dos conjuntos (finitos) y de cadenas sobre algún alfabeto , ¿existe una expresión regular de longitud que acepte cada cadena en y rechace cada cadena en ?B Σ k A BABΣkAB

¿Se sabe algo sobre la complejidad de este problema particular de separación? (Tenga en cuenta que dado que he especificado y como conjuntos finitos de cadenas, la noción natural de tamaño para el problema es la longitud total de todas las cadenas en y ; esto empantana cualquier contribución de ). Me parece muy probable que sea NP completo (y, de hecho, esperaría que la reducción se deba a algún tipo de problema de cobertura), pero algunas búsquedas no han resultado nada particularmente útil.AA B kBABk

Steven Stadnicki
fuente
44
¿Es incluso en NP? Dada una expresión regular, ¿cómo verifica si una palabra está en el idioma descrito en tiempo polinómico? El enfoque estándar - transformarse a NFA, luego DFA y verificar - toma tiempo exponencial en (?). k
Raphael
1
debe ser PSPACE-complete; ver (Gramlich, Schnitger, Minimizing NFAs and Regular Expressions, 2005) en ggramlich.github.io/Publications/approximationSTACS05Pres.pdf y citeseerx.ist.psu.edu/viewdoc/… (PD: estoy publicando esto como un comentario, porque una respuesta debería explicar por qué, pero no tengo tiempo para hacerlo en este momento; quizás alguien más pueda usar la referencia y explicar cómo funciona)
rgrig
1
Para expresiones regulares como se entiende en TCS, el problema está en NP (un certificado de tamaño polinómico y verificable en tiempo polinómico sería la expresión regular misma). (Probablemente) no está en NP si usamos, por ejemplo, PCRE para expresiones regulares, porque incluso la prueba de membresía es NP-hard ( perl.plover.com/NPC/NPC-3SAT.html ).
Mike B.
1
@MikeB .: ¿Y cómo verificas exactamente el tiempo polinómico? ¿Viste el comentario de @Raphael?
rgrig
55
(1) Puede ejecutar un algoritmo determinista en P para probar la membresía de los NFA (comience en el estado inicial y recuerde todos los estados en los que puede estar después de consumir un símbolo de la palabra. Llegue al final, verifique si alcanzó al menos un estado final.) (2) Depende de la definición de "expresión regular": ¿utilizamos la de los informáticos o la de los programadores? ¿Permitimos solo idiomas regulares o (un subconjunto de) idiomas sensibles al contexto (por lo tanto, PCRE)?
Mike B.

Respuestas:

15

Suponiendo la variante TCS de regex, el problema es de hecho NP-completo.

Asumimos que nuestras expresiones regulares contienen

  • cartas de , que coinciden,Σ
  • + , denotando unión,
  • , denotando concatenación,
  • , que denota Kleene-Star,
  • λ , haciendo coincidir la cadena vacía

y nada más. La longitud de una expresión regular se define como el número de caracteres de . Como en la tira cómica, consideramos una expresión regular para que coincida con una palabra, si coincide con una subcadena de la palabra. (Cambiar cualquiera de estos supuestos solo debería influir en la complejidad de la construcción a continuación, pero no en el resultado general).Σ

Que esté en NP es sencillo, como se explica en los comentarios (verifique un candidato-RE traduciéndolo a un NFA y ejecutándolo en todas las palabras de y ).BAB

Para mostrar la dureza NP, reducimos la cobertura del conjunto:

Dado un universo y una colección de subconjuntos de , ¿hay un conjunto de tamaño para que ?C U C C k S C S = UUCUCCkSCS=U

Traducimos una entrada para Set cover en una para regex golf de la siguiente manera:

  • C xΣ contiene un carácter para cada subconjunto en y un carácter adicional (denotado a continuación).Cx
  • e U C eA contiene una palabra para cada elemento de de . La palabra consiste exactamente en los caracteres que representan subconjuntos en que contienen (en orden arbitrario).eUCe
  • xB contiene la única palabra .x
  • k simplemente se transfiere.

Esta reducción es obviamente en P y la equivalencia también es bastante simple de ver:

  • Si es una solución para la instancia de cobertura establecida, regex es una solución para regex golf.c 1 + + c kc1,,ckc1++ck
  • Una expresión regular que coincida con la subparte vacía coincidiría con . Por lo tanto, cualquier expresión regular para resolver el problema de golf tiene que contener al menos una letra de cada una de las palabras . Por lo tanto, si la instancia de golf es solucionable, hay un conjunto de letras como máximo de para que cada palabra en esté cubierta por este conjunto de letras. Por construcción, el conjunto correspondiente de subconjuntos de es una solución para la instancia de cobertura del conjunto.A k Σ A CxAkΣAC
FrankW
fuente
1
Muy bien, permítanme agregar 2 puntos, para completar: (1) Como una suposición adicional con respecto a la especificación del problema, y deben ser conjuntos finitos (¿y todos los elementos se enumeran explícitamente?) (2) El tamaño del candidato RE está en , dado que es un candidato válido con tamaño en , por lo que para cada mayor la respuesta es trivialmente verdadera. B O ( n ) a 1 + a 2 + . . . , a iA O ( n ) kABO(n)a1+a2+...,aiAO(n)k
Mike B.
2
@ Mike B .: (1): la finitud de y se da en la pregunta. En la teoría de la complejidad, el listado exhaustivo es la forma predeterminada de representar conjuntos finitos. (2) es de hecho un argumento obligatorio, si se quiere hacer que la parte "en NP" sea rigurosa. BAB
FrankW