Brzozowski的算法可以扩展到Moore自动机,但是其时间复杂度通常是指数级的。还有其他用于最小化摩尔自动机的算法吗?这些算法的运行时间是多少?
Brzozowski的算法可以扩展到Moore自动机,但是其时间复杂度通常是指数级的。还有其他用于最小化摩尔自动机的算法吗?这些算法的运行时间是多少?
Answers:
最初的DFA最小化算法实际上是为Moore Machine设计的,这是由Moore Machines明显更明显的行为指导的。但是,由于我是在事后发现历史证据的,因此此处介绍的算法是DFA最小化的重构。
维基百科之后(带有一些符号更改):
甲摩尔机可以被定义为一个6元组组成如下:
- 有限状态集
- 起始状态(也称为初始状态),它是Q的元素
- 称为输入字母Σ的有限集
- 称为输出字母Λ的有限集
- 转换函数将状态和输入字母映射到下一个状态
- 输出函数将每个状态映射到输出字母
根据这个定义,摩尔机是确定性有限状态传感器。
对于最小化摩尔自动机,我没有任何参考。但是,很难想象要从确定性有限状态自动机所使用的算法中衍生出一种算法。
DFA最小化的思想是基于常规语言的Myhill-Nerode表征。
给定一个语言,和一对字符串的X和ÿ,定义一个区分扩展是一个字符串Ž使得两个串中的正好一个X Ž和ÿ Ž属于大号。定义的关系 ř 大号由规则上的字符串X - [R 大号 ý当且仅当不存在用于区别扩展X和ÿ。很容易证明 R L是字符串上的等价关系,因此它将所有字符串的集合划分为等价类。
。
因此,只要显示出两个不同的状态都包含等效字符串,DFA的最小化实际上就是合并状态(被视为等效字符串集)。
。
在重新定义换能器T的等价关系为,最好地理解了摩尔自动机的扩展。关系R L 与将来的输入是否等效地导致接受状态有关。Moore自动机的R T等价关系与将来的输入是否会产生相同的输出有关。
。
以下算法模仿了DFA最小化的Moore算法。
当没有剩余的类别需要拆分时,其余的状态类别将构成最小摩尔机的状态。
通过构造,类中的所有状态都具有与该类的输出相同的输出。
,与作为该准则的DFA最小化算法相同。
对于摩尔机的最小化,我没有任何参考。它可能包含在他的论文中:
摩尔,爱德华·F(1956)。“ Gedanken实验在顺序机器上”。自动机研究,数学研究纪事(新泽西州普林斯顿:普林斯顿大学出版社)(34):129-153。
本文是介绍摩尔机的主要参考资料。它也是 Moore DFA最小化算法。因此,如果至少没有在该论文中建议将算法应用于摩尔定律最小化,那将是令人惊讶的。我确实检查了这篇论文,并且提出的最小化算法的版本实际上是针对Moore机器的,而不是针对DFA的。论文写得很好,但是时间的风格使它读起来有点困难。有趣的是,本文已经概述了有限状态机的Myhill-Nerode理论的许多思想。
使用正则表达式导数的Brzozowski算法的一种版本在第2章第12章第4节中给出,在此归功于[4]。有关后续换能器的更一般情况,请参见[1]和[3](术语有些过时,术语“ 顺序换能器”如今的一词可能更合适)。
[1] C. Choffrut,最小化后续换能器:一项调查,Theoret。比较 科学 292(2003),131-143。
[2] S. Eilenberg,自动机,语言和机器,第一卷。A,学术出版社,1974年。
[3] J.-E. Pin,有关顺序函数的教程。(幻灯片)
[4] GN Raney,顺序函数,JACM 5(1958),177-180。
Brzozowski的算法是一个不好的起点(如果您担心渐近最坏情况下的运行时)。甚至Wikipedia也告诉您:
正如Brzozowski(1963)所观察到的,反转DFA的边缘会产生非确定性的有限自动机(NFA),以反转原始语言,然后使用标准功率集构造(仅构造可到达的状态)将NFA转换为DFA。转换后的DFA)导致使用相同反向语言的最小DFA。第二次重复此反向操作将为原始语言生成最小的DFA。Brzozowski算法的最坏情况下的复杂度是指数级的,因为在某些常规语言中,反转的最小DFA大于该语言的最小DFA的指数级[6],但它的性能通常比这种最坏情况所提示的要好。
该算法甚至在DFA上也具有指数最坏情况下的运行时,因为它会为逆向计算自动机,该自动机可能必须成倍地增加。因此,您的问题并不出在传感器的扩展上。
尝试采用其他DFA最小化算法。