Eu estava brincando no outro dia neste site: http://regexcrossword.com/ e isso me fez pensar em qual seria a melhor maneira de resolvê-lo.
Você pode resolver o seguinte problema em tempo polinomial ou é NP-difícil?
Dada uma grade NxM com N expressões regulares para as colunas e M para as linhas, encontre qualquer solução para a grade, de modo que todas as expressões regulares sejam satisfeitas, ou diga que não existe solução.
complexity-theory
np-hard
regular-expressions
Glen Takahashi
fonte
fonte
Respostas:
O problema é NP-difícil.
Mostramos isso reduzindo a cobertura de vértices:
Nós traduzimos isso em palavras cruzadas regex com coluna e|E|+1 linhas da seguinte maneira:|V|
Todas as colunas, exceto a primeira, correspondem a uma aresta. Eles recebem um regex .0 0∗1 ( 0 | 1 )∗
Todas as linhas correspondem a um vértice. Eles recebem um regex que permite escrever
um na primeira coluna e cada coluna correspondente a um incidente de borda nesse nó e zera em todas as outras colunas, ou1
Finalmente, a primeira coluna conta o tamanho da capa do vértice. Obtém um regex, que permite no máximo .k
A correspondência entre soluções para as palavras cruzadas regex e capas de vértice deve ser óbvia.
Exemplo:
Encontre uma cobertura de vértice de tamanho 2 para o seguinte gráfico:
fonte
A questão permanece NP-completa, mesmo quando todas as expressões regulares são iguais. http://arxiv.org/abs/1411.5437
fonte