非确定性有限自动机(NDFA)能否在次指数时空中有效地转换为确定性有限自动机(DFA)?


16

二十年前,我构建了一个正则表达式包,其中包括从正则表达式到有限状态机(DFA)的转换,并支持许多封闭的正则表达式操作(Kleene star,串联,反向,设置操作等)。我不确定包装的最坏情况。

DFA具有与NDFA相同的表达能力,因为n状态NDFA可以轻松转换为具有2 ^ n个状态的DFA。但是,对于这种转换,是否有不需要状态呈指数爆炸的下界保证?

我无法提出带有正则表达式或NDFA的示例,但是我并没有花太多时间在思考它。我猜正则表达式(((((e | A | B | C)*(e | D | E | F))*(e | G | H | I))*(e | J | K | L | M))*(混合了许多交替和Kleene星)将具有线性大小的NDFA,但具有扩展的DFA。


您想接受作为输入的NFA类是否有任何限制?一些限制导致更好的上限。
安德拉斯·萨拉蒙(AndrásSalamon)2010年

不是很重要的一点,但是ndfa是否需要自己的标签?
列夫·雷津

是的,有限制。通过将正则表达式视为广义过渡图,可以直接从正则表达式构造NFA。seas.upenn.edu/~cit596/notes/dave/regexp-nfa4.html
Moise 2010年

Answers:


15

已知的是,对于每对土黄号码n,a,使得n <= a <= 2^n,存在最小NDFA用n状态,其相应的等效最小的DFA具有a状态(在四个字母的字母表)。

请参阅此处的文章:固定字母表上的最小非确定性有限自动机的确定性爆炸

论文摘要:

我们表明,对于所有n和α使得n≤α≤2 ^ n,存在具有四个字母输入字母的n个状态的最小非确定性有限自动机,其等效的最小确定性有限自动机恰好具有一个状态。因此,对于四字母的字母,不存在“魔术数字”,即层次结构中的空洞。这改善了Geffert对于大小为n + 2的不断增长的字母所获得的类似结果(Proc。7th DCFS,意大利科莫,23-37)。

因此,我想您的问题的答案是,不会。


问题是要在次指数时间和空间上运行“算法”以转换NFA。
Marcos Villagra

@Marcos:如果您的输出是指数型的,则可能无法使算法在亚指数时间内运行。
Aryabhata

1
这是一个普遍的结果。如果对输入NFA的类别存在已知限制,则可能会做得更好。
安德拉斯·萨拉蒙(AndrásSalamon)2010年

@Andras:同意,但是考虑到这可能与编程有关(它将支持Kleen *等),我怀疑输入NFA的集合是否将限制为适当的子集。
Aryabhata

5
这一结果最近得到了加强,使用三个字母表,以及结构都有点简单:portal.acm.org/...

13

在DFA大小和NFA大小之间呈指数分隔的语言的经典示例是以下有限语言:长度恰好为2n的二进制字符串,其中前一半不等于后一半。NFA会猜测上半部分和下半部分不一致的索引i。例如,DFA的下限来自通信复杂性。


8

在最坏的情况下,与NFA对应的最小DFA具有2 ^ n个状态,因此您不能保证任何事情。没有一个建设性的例子,其理由是,在NFA中,读取特定的输入字符串后,您可以处于任意状态的子集,并且每个此类子集在观察一个字符时的行为可能有所不同。假设一种语言的字母(a和b)中有两个字符,而NFA N的n状态以s_0的接受状态开头。现在枚举N个状态的所有子集,并构建转换表,以便从子集S_i观察“ a”将带您到子集S_i + 1,而观察b则将您带到S_i-1子集(我认为这对于某些枚举是可行的)。现在,该自动机具有n个状态,并接受ma和nb的序列,使得mn = 0 mod 2 ^ | N |,不能用小于2 ^ | N |的DFA表示 状态(因为可能需要循环NFA N的所有状态子集)。


是否可以将其变成一个论点,说“如果在NFA中避免了(一件坏事),那么DFA的状态数将成指数级”?
安德拉斯·萨拉蒙(AndrásSalamon)

1
@安德拉斯,是的。“如果在NFA中避免使用不确定性,则DFA的状态数将成指数级”。
P切碎

2
帕维尔,是的,显然。是否有任何非平凡的属性可以被有效地识别,从而保证了指数级的爆炸?
安德拉斯·萨拉蒙(AndrásSalamon)2010年
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.