存在哪些用于构造DFA的算法,该DFA可以识别给定正则表达式描述的语言?


11

我的所有教科书都使用相同的算法来生成给定正则表达式的DFA:首先,制作一个可以识别正则表达式语言的NFA,然后使用子集(也称为“ powerset”)构造将NFA转换为等效的DFA( (可选)最小化DFA)。我也曾经听过一位教授提到其他算法。有人知道吗?也许是直接从正则表达式转换为DFA而没有中间NFA的代码?


欢迎来到cstheory,这是有关理论计算机科学(TCS)研究级问题的问答网站。您的问题似乎不是TCS中的研究级问题。请参阅常见问题解答以了解有关此含义的更多信息。您的问题可能适用于范围更广的计算机科学
卡韦

1
为什么您总是使用此模板注释?显然,至少有5个不同意您的观点。我建议您给这样的问题一个机会。
2013年

@AJed,我并不总是使用此评论。当问题对我来说似乎不合时宜时,可以使用它,但可能适合计算机科学。投赞成票并不意味着一个问题是话题性的,对我来说,这似乎不是一个研究级的问题,因此我认为此评论是适当的。(某人可以为问题写研究级答案的事实并不会使问题成为研究级。)ps:我认为这种讨论更适合理论计算机科学的Meta
卡韦

Answers:


13

有多种将正则表达式转换为有限自动机的算法。您可以直接从正则表达式转到DFA,而无需先生成任何其他自动机,而是在生成自动机时隐式地进行子集构造。直接获得确定性自动机的另一种选择是使用导数方法。

检查正则表达式是否表示包含所有字符串的语言是一个完整的PSPACE问题(请参阅此答案作为参考)。检查DFA是否接受该语言可以在多项式时间内完成,因此,如果您直接从正则表达式转到DFA,则可能会出现问题。

我对文献的理解是,我们可以选择允许我们定位爆炸的翻译。意思是,从正则表达式到有限自动机有多种方法,并且首选线性或多项式方法。通常,指数成本被推入自动机的确定中。

在确定正则表达式的子族方面已经进行了很多工作,我们可以从这些子族中有效地生成DFA。此工作线取决于您使用的翻译。意思是,您修复了从正则表达式到NFA的映射,并尝试表征映射到DFA的正则表达式。

从正则表达式中自动机的标准构造不是此类工作中的首选构造。选择的构造会产生与正则表达式的结构极为相似的自动机。这些构造使用正则表达式的派生概念。

正则表达式的派生,JA Brzozowski。1964年。

srara

正则表达式和有限自动机构造的偏导数,V。Antimirov。1995年。

如果您将自动机的状态视为从该状态接受的所有字符串的表示形式,则(偏)导数可让您将正则表达式视为state。与标准教科书结构相反,该教科书结构直观地将正则表达式视为自动机,而不是状态。

从正则表达式到确定性自动机,G。Berry和R. Sethi,1986年。

Berry和Sethi明确讨论了正则表达式与自动机状态和确定性之间的对应关系,他们将Brzozowski导数的概念与区分同一符号出现的想法结合在一起,从而将基于语法的正则表达式转换为有限元自动机。

一种明确的常规语言,A。Brüggemann-Klein和Derick Wood,1998年。

本文以Brüggemann-Klein的早期工作为基础,并研究了可以使用导数在多项式时间内生成DFA的情况。本文后面有大量工作。从Web技术的角度来看,这是很重要的,因为可以有效操纵的正则表达式(也称为DFA)对于处理SGML和XML很重要。

研究确定性正则表达式的其他特殊情况有很多工作。最近的一篇论文研究何时可以在线性时间内解决其中一些问题,该研究始于2012年。

线性时间中的确定性正则表达式,Benoit Groz,Sebastian Maneth,Slawomir Staworko。2012。


5
您已经在回答中提到了导数,因此还应该添加JA Brzozowski:正则表达式的导数,Journal of ACM 11(4):481–494(1964),因为他给出了将正则表达式转换为DFA的直接算法。 。
Neel Krishnaswami

3
我对此进行了辩论。但是以上所有三篇论文都直接基于该结果,因此我认为没有理由提及它。Brueggeman-Klein和Wood论文也有很多例子。如果我提到Brzozowski,我也应该提到Antimirov。我想避免进行调查,但也许我应该去做。说啥?
Vijay D

5
如果您有时间和精力,我认为冗长的类似调查的答案在这里非常合适。
David Eppstein

1
@VijayD:是的,我同意戴维的观点。简短的答案是可以的,但是如果您有能力,最好给出一个全面的答案。
Neel Krishnaswami
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.