regex填字游戏对NP有用吗?


13

前几天,我在这个网站上闲逛:http : //regexcrossword.com/,这让我想知道解决它的最佳方法是什么。

您可以在多项式时间内解决以下问题吗?还是NP难?

给定一个NxM网格,其中N个正则表达式用于列,M个用于行,请找到该网格的任何解决方案,以便满足所有正则表达式,或者说不存在任何解决方案。


尚未查看该站点,但是正则表达式的问题往往是PSPACE完整的,这一类至少与NP一样困难
jmite 2014年

1
@jmite猜测适合某些正则表达式的字符串是“容易的”,因为我们不必派生某些正则表达式的全局属性。实际上,我认为问题出在NP(请参见FrankW的回答下方的评论。)
Raphael

Answers:


11

问题是NP难。

我们通过减少顶点覆盖率来显示这一点:

G=(V,E)kVVkEV

|E|+1|V|

01(0|1)

所有行都对应一个顶点。他们得到一个正则表达式,可以写

  • 1

  • 0

k

正则表达式填字游戏和顶点覆盖的解决方案之间的对应关系应该很明显。

例:

为下图找到大小为2的顶点覆盖:

https://i.imgur.com/TY6sjjV.png

VA=0|10110

VB=0|11101

VC=0|10011

VD=0|11000

Counter=0|010|01010

E1=01(0|1)

E2=01(0|1)

E3=01(0|1)

E4=01(0|1)

VAVDCounterE1E4

VA,VBVC,VB

Counter0|010


2
由于我们可以(a)为正则表达式计算多项式大小的NFA并进行猜测b)解决方案,并且c)所有NFA的计算(线性大小)的计算,以及d)(在多项式时间内)验证计算是否适合猜测的单词,问题也在于NP。
拉斐尔

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.