寻找最小正则表达式是否是NP完全问题?


42

我在考虑以下问题:我想找到一个正则表达式,该表达式与一组特定的字符串(例如有效的电子邮件地址)匹配,而与其他字符串(无效的电子邮件地址)不匹配。

假设正则表达式是指定义明确的有限状态机,我对确切的术语并不熟悉,但让我们就一类允许的表达式达成一致。

我不想给它手工制作表达式,而是给它一些积极的例子和消极的例子。

然后,它应该提供一个与+匹配的表达式,拒绝-表达式,并且在某种明确定义的意义上是最小的(自动机中的状态数?)。

我的问题是:

  • 是否考虑过这个问题,如何以更具体的方式定义它并有效解决?我们可以在多项式时间内解决吗?NP是否完整,我们可以以某种方式近似吗?它适用于什么类型的表达式?我希望能有任何指向讨论该主题的教科书,文章或类似文章的指针。
  • 这与Kolmogorov的复杂性有什么关系吗?
  • 这与学习有任何关系吗?如果正则表达式与我的示例相符,并且由于其极小,我们能否在尚未看到的示例中说出它的泛化能力?哪种最小标准更适合于此?哪一个效率更高?这和机器学习有关系吗?同样,任何指针都会有所帮助...

抱歉给您带来麻烦的问题……向我指出正确的方向以解决这个问题。谢谢 !


2
以下页面似乎与该问题的学习方面非常相关:people.dsv.su.se/~henke/ML/MERLIN.html
伊藤刚(Tsuyoshi Ito)2010年

1
… 或者可能不是。无论如何,似乎有很多关于DFA学习的著作。
伊藤刚(Tsuyoshi Ito)2010年

Answers:


38

OPTkkP=NP

关于学习问题:Kearns和Valiant 证明您可以将RSA编码为DFA。因此,即使标记的示例来自均匀分布,能够推广到将来的示例(甚至来自均匀分布)也将破坏RSA。因此,我们认为在最坏的情况下,带有标记的示例对学习DFA(在PAC模型中)无济于事。这是学习的经典密码硬度结果之一。

由于我们称之为Occam的Razor定理,这两个问题是交织在一起。它基本上指出,如果我们有一个从给定类别中找到与该类别中的假设所标记的样本一致的最小假设的程序,则我们可以PAC学习该类别。因此,考虑到RSA硬度的结果,我们通常希望找到最小的一致DFA很难!

为了增加积极的学习效果,Angluin 证明,如果您可以自己编写示例,则可以学习DFA,但这需要额外的能力才能询问“我当前的假设正确吗?” 这也是学习方面的开创性论文。

要回答您的其他问题,这确实与Kolmogorov复杂度有关,因为当目标DFA的规范表示形式的复杂度较低时,学习问题将变得更加容易


3
您击败了我,获得了更强大的最新结果!您应该稍后再发布更好的答案!1!
伊藤刚(Tsuyoshi Ito)2010年

哎呀,对不起!我花了足够的时间来学习DFA,以至于我不得不跳:)
列夫·雷津

1
以防万一,我以前的评论是在开玩笑。当然,我很高兴看到一个更好的答案!
伊藤刚(Tsuyoshi Ito)2010年

1
所以换句话说,这个问题与DFA的定期最小化之间的主要区别在于是否存在负面示例,是吗?
Suresh Venkat 2010年

1
我不明白。如果没有负面例子,则最小的一致dfa只有1个状态-指向自身的接受状态...
列夫·雷津

13

我回答了与学习有关的问题。

在文献中似乎将此问题称为“ DFA学习”。

金[Gol78]表明,它是一个NP完全决定,给予ķ ∈ℕ和两个有限集合PÑ串,是否存在一个确定性有限状态自动机(DFA)至多ķ状态,它接受在每一个串PN中没有任何字符串。论文[PH01]似乎在讨论与此动机相关的问题(可能还有更多;当我试图在Google上找到相关论文时才出现)。

参考文献

[Gol78] E Mark Gold。从给定数据自动机识别的复杂性。 信息与控制,37(3):302-320,1978年六月 http://dx.doi.org/10.1016/S0019-9958(78)90562-4

[PH01] Rajesh Parekh和Vasant Honavar。通过简单的示例学习DFA。 机器学习,44(1-2):9-35,2001年7月 。http : //www.springerlink.com/content/kr2501h2442l8mk1/ http://www.cs.iastate.edu/~honavar/Papers/parekh- dfa.pdf


1
感谢您的答复,我正在寻找参考资料。我可以在这个网站上投票多个最佳答案吗?:)同样,即使我学习了多年的机器学习,我仍然错过了整个“ DFA学习”子领域,这让我感到很尴尬。
拉斯洛·科马

@steve:您只能接受一个答案,但是您可以根据需要投票支持多个答案。
Jukka Suomela 2010年

2
请注意,[Gold78]还指出可以在多项式时间内学习DFA(在标识的可学习性框架内进行限制)。另请参阅有关语法推理的最新书籍(pagesperso.lina.univ-nantes.fr/~cdlh/book_webpage.html)以获取概述。
mgalle 2010年

@mgalle:感谢您提供其他信息。
伊藤刚(Tsuyoshi Ito)2010年

8

在整个讨论中,已经假定找到一个最小的正则表达式等于找到一个最小的识别语言的FSM,但这是两件不同的事情。如果我没记错的话,可以在多项式时间内将DFA最小化,而找到一个表示给定正则语言的最小正则表达式则是PSPACE困难的。后者是属于自动机理论民俗学的那些结果之一,但是在任何地方都找不到其证据。我认为这是帕帕迪米特鲁(Papadimitrou)书中的练习。


1
正则表达式的长度和DFA中的状态数是不同的目标函数是正确的。我回答了有关DFA最小化的问题,因为它具有更好的属性(例如,具有最小状态数的唯一DFA),并且从提出问题的方式中我得到的印象是确切的目标函数是灵活的。
伊藤刚(Tsuyoshi Ito)2010年

随机评论:考虑到大小为f(n)的正则表达式可以由大小为O(f(n))的NFA模拟的事实,最小化正则表达式更像是最小化NFA,这显然更难。
张显治张显之


2

另请参见此堆栈溢出文章。您正在寻找的书似乎是Michael Sipser 撰写的《计算理论导论》

您要问几个不同的问题,所以一次回答一个:

Is finding a minimal Finite State Machine for a language L NP-complete?

不,不是。Stack Overflow帖子讨论了用于将FSM减小到最小大小的朴素n ^ 2算法。(从停止状态向后工作,在精确的意义上组合“相同”的状态。)

显然(我没有遵循链接),有一个n log n算法可以做到这一点。

I have a training set of strings, how do I find the minimal FSM 
that separates the good examples from the bad?

正如您所说的,您的训练集描述了一种有限的语言。有限的语言微不足道地映射到FSM-为您的语言中的每个字符串创建一个以停止状态结尾的线性状态集,而无需循环。然后,在生成的计算机上运行FSM最小化算法。

Is this a good way to build a classifier?

我不会这么说。最小化FSM不会改变其判别能力-这就是重点。最小FSM完全接受字符串集作为任何等效的非最小FSM。

通常,正则表达式不适合用于对新颖数据进行分类。对于任何有限的训练集,您将获得仅与该集中的正例匹配的RE / FSM,而不能将其推广到新数据。我从未见过尝试找到与某些训练语料匹配的无限常规语言的方法。

对于机器学习,您会寻找朴素的贝叶斯分类器,决策树,神经网络或其他更奇特的东西。罗素(Russell)和诺维格(Norvig)的《人工智能:一种现代方法》和其他任何一本书一样,都是找到机器学习技术概述的好地方(以及更多)。


2
我不同意这个答案。如果您仅采取所有积极的示例并构建仅接受这些示例而没有其他内容的FSM,则您的FSM可能很大。另一方面,接受所有正面示例而没有负面示例的最小FSM可能小得多。
Jukka Suomela 2010年

3
我认为最初的问题很清楚:“一个与+匹配,拒绝-且在某种定义明确的意义上最小的表达式”。
Jukka Suomela 2010年

5
@keith您的答案和我的答案之间的区别非常微妙。在构建dfa时,通过为示例中的每个字符串创建新状态,您将使用一种可能与最小化正负示例的最小dfa表示的语言不同的语言。因此,不幸的是,生成dfa然后将其最小化的算法无法实现!
列夫·雷津

1
我不确定我是否了解这种区别。如果我们有一组正面和负面的例子,那么我们就有一系列语言都满足这些约束。每个都有一个(一组)最小dfa。只要我返回最小尺寸的DFA,我选择哪种语言有什么关系。
Suresh Venkat 2010年

1
为了学习,您希望选择最小的DFA,因为它具有最佳的泛化能力。@kieth的过程不会在所有这些语言中选择最小的DFA,而仅是致力于使用其过程的语言中的最小DFA。
列夫Reyzin
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.