Estaba jugando el otro día en este sitio web: http://regexcrossword.com/ y me pregunté cuál era la mejor manera de resolverlo.
¿Puedes resolver el siguiente problema en tiempo polinómico o es NP-hard?
Dada una cuadrícula NxM con N expresiones regulares para las columnas y M para las filas, encuentre cualquier solución a la cuadrícula de modo que se satisfagan todas las expresiones regulares, o diga que no existe una solución.
complexity-theory
np-hard
regular-expressions
Glen Takahashi
fuente
fuente
Respuestas:
El problema es NP-hard.
Mostramos esto reduciendo la cubierta del vértice:
Traducimos esto en un crucigrama regex con columnas y | V | filas de la siguiente manera:El | miEl | +1 El | VEl |
Todas las columnas, excepto la primera, corresponden a un borde. Obtienen una expresión regular .0 0∗1 ( 0 | 1 )∗
Todas las filas corresponden a un vértice. Obtienen una expresión regular que les permite escribir
un en la primera columna y cada columna correspondiente a un borde incidente a ese nodo y ceros en todas las otras columnas, o1
Finalmente, la primera columna cuenta el tamaño de la cubierta del vértice. Obtiene una expresión regular, que permite a lo sumo más.k
La correspondencia entre las soluciones al crucigrama regex y las cubiertas de vértice debería ser obvia.
Ejemplo:
Encuentre una cubierta de vértice de tamaño 2 para el siguiente gráfico:
fuente
La pregunta sigue siendo NP completa incluso cuando todas las expresiones regulares son iguales. http://arxiv.org/abs/1411.5437
fuente