regex golf NP-Complete吗?


27

最近的XKCD摘录最近的博客文章所示来自Peter Norvig(以及Slashdot故事中的后者),“ regex golf”(可能更好地称为正则表达式分离问题)是定义可能的最短正则表达式的谜题,该正则表达式接受集合A中的每个单词,而在其中不包含任何单词B集。Norvig的帖子中包含用于生成合理的简短候选者的算法,他指出他的方法涉及解决NP完全集覆盖问题,但他也要小心地指出,他的方法并未考虑所有可能的正则表达式,当然,他不一定是唯一的算法,因此不能保证他的解是最优的,而且其他确定的多项式时间算法也有可能找到等效或更好的解。

为了具体起见并避免解决优化问题,我认为正则表达式分隔的最自然表达是:

给定在某个字母两组(有限)字符串和,是否存在长度的正则表达式,该正则表达式接受每个字符串并拒绝每个字符串?ABΣkAB

是否知道有关此特定分离问题的复杂性?(请注意,由于我已将和指定为有限的字符串集,因此问题的自然大小概念是和中所有字符串的总长度;这会淹没任何贡献)。在我看来,它很可能 NP完全的(实际上,我希望这种减少是某种掩护性问题),但是一些搜索并没有发现任何特别有用的东西。一种一种ķ


4
甚至在NP中吗?给定正则表达式,如何检查多项式时间内的单词是否在所描述的语言中?标准方法-转换为NFA,然后转换为DFA并进行检查-花费的指数时间为(?)。ķ
拉斐尔

1
应该是PSPACE完整的;请参阅ggramlich.github.io/Publications/approximationSTACS05Pres.pdfciteseerx.ist.psu.edu/viewdoc/(Gramlich、Schnitger,最小化NFA和正则表达式,2005年) (PS:我将其发布为评论,因为答案应该可以解释原因,但目前我没有时间这样做;也许其他人可以使用该参考资料并说明其工作原理)
rgrig 2014年

1
对于TCS中理解的正则表达式,问题在于NP(多项式大小的证明以及可在多项式时间内验证的将是正则表达式本身)。如果我们对正则表达式使用例如PCRE,那么它(可能)不在NP中,因为即使测试成员资格也很难达到NP(perl.plover.com/NPC/NPC-3SAT.html)。
Mike B.

1
@MikeB .:您如何精确地计算多项式时间?您看到@Raphael的评论了吗?
rgrig 2014年

5
(1)您可以在P中运行确定性算法以测试NFA的隶属度(从起始状态开始,并记住使用该单词符号后可能进入的所有状态。到达末尾,检查是否至少达到了一个最终状态。)(2)取决于“正则表达式”的定义-我们使用的是计算机科学家之一还是程序员?我们只允许使用常规语言,还是只允许使用上下文敏感的语言(或其子集)?
Mike B.

Answers:


15

假设正则表达式的TCS变量,问题确实是NP完全的。

我们假设我们的正则表达式包含

  • 来自字母,彼此匹配,Σ
  • ,表示并集,+
  • ,表示串联,
  • ,表示Kleene-Star,
  • ,匹配空字符串λ

没什么 正则表达式的长度定义为的字符数。就像在漫画中一样,如果正则表达式匹配单词的子字符串,我们会认为它与单词匹配。(更改任何这些假设都只会影响以下结构的复杂性,而不会影响总体结果。)Σ

正如评论中所解释的那样,它在NP中是很简单的(将候选RE转换为NFA并在B的所有单词上进行验证)。一种B

为了显示NP硬度,我们减少Set覆盖:

给定一个宇宙和收集ç的子集的ü,有一组ç 'Ç尺寸ķ使得小号C ^ '小号= úUCUCCkSCS=U

我们将Set Cover的输入转换为regex golf的输入,如下所示:

  • 包含 C中每个子集一个字符和一个附加字符(以下用 x表示)。ΣCx
  • 包含每个 U元素 e的一个单词。该词完全由代表 C中包含 e(任意顺序)的子集的字符组成。AeUCe
  • 包含单词 xBx
  • 简单地结转。k

这种减少显然以P为单位,并且等效也很容易看到:

  • 如果是布景实例的解,则正则表达式c 1 + + c k是正则表达式高尔夫的解。c1,,ckc1++ck
  • 匹配空子词的正则表达式将匹配。因此,任何解决高尔夫问题的正则表达式都必须包含A中每个单词中的至少一个字母。因此,如果高尔夫球实例是可解的,则从Σ中最多有k个字母的集合,以便A中的每个单词都被这组字母覆盖。通过构造,来自C的对应子集集合是该集合覆盖实例的解决方案。xAkΣAC

1
非常好,为完整性起见,我加2点:(1)作为问题说明的附加假设,B必须是有限集(并且所有元素都被明确枚举?)(2)RE候选的大小为O ñ ,因为一个1 + 一个2 + 一个是在尺寸的有效候选Ô Ñ ,所以对于每个较大的ķ答案是平凡真。ABO(n)a1+a2+...,aiAO(n)k
Mike B.

2
@Mike B .:(1):问题中给出了B的有限性。在复杂性理论中,穷举列表是表示有限集的默认方式。如果要使“ NP中的”部分严格,则(2)确实是必需的参数。AB
FrankW 2014年
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.