最小化摩尔自动机的算法


11

Brzozowski的算法可以扩展到Moore自动机,但是其时间复杂度通常是指数级的。还有其他用于最小化摩尔自动机的算法吗?这些算法的运行时间是多少?


您指的是哪种Brzozowski的算法?使用正则表达式的导数的那个?
J.-E.

2
欢迎来到SE计算机科学。由于您显然还没有阅读该网站的介绍,因此您应该了解,这是一项合作的工作,它基于提出问题的用户与提供答案或评论的用户之间的技术交流。因此,最好是回答用户要求在评论中提供更多详细信息的意见,对好的答案或好的评论(或其他有趣的问题或您阅读的答案)进行投票,并最终通过单击“选中答案左侧的“检查符号”(如V)。
babou 2015年

答案对您有用吗?
2015年

Answers:


6

最初的DFA最小化算法实际上是为Moore Machine设计的,这是由Moore Machines明显更明显的行为指导的。但是,由于我是在事后发现历史证据的,因此此处介绍的算法是DFA最小化的重构。

维基百科之后(带有一些符号更改):

摩尔机可以被定义为一个6元组组成如下:(Q,q0,Σ,Π,δ,γ)

  • 有限状态集Q
  • 起始状态(也称为初始状态),它是Q的元素q0Q
  • 称为输入字母Σ的有限集Σ
  • 称为输出字母Λ的有限集Λ
  • 转换函数将状态和输入字母映射到下一个状态 δ:Q×ΣQ
  • 输出函数将每个状态映射到输出字母 γ:QΠ

根据这个定义,摩尔机是确定性有限状态传感器。

对于最小化摩尔自动机,我没有任何参考。但是,很难想象要从确定性有限状态自动机所使用的算法中衍生出一种算法。

DFA最小化的思想是基于常规语言Myhill-Nerode表征

给定一个语言,和一对字符串的Xÿ,定义一个区分扩展是一个字符串Ž使得两个串中的正好一个X Žÿ Ž属于大号。定义的关系 ř 大号由规则上的字符串X - [R 大号 ý当且仅当不存在用于区别扩展Xÿ。很容易证明 R LLxyzxzyzLRLxRLyxyRL是字符串上的等价关系,因此它将所有字符串的集合划分为等价类。

LRLLRL

qWqRL

LWqRL

因此,只要显示出两个不同的状态都包含等效字符串,DFA的最小化实际上就是合并状态(被视为等效字符串集)。

O(n2)O(nlogn)

在重新定义换能器T的等价关系为,最好地理解了摩尔自动机的扩展。关系R L 与将来的输入是否等效地导致接受状态有关。Moore自动机的R T等价关系与将来的输入是否会产生相同的输出有关。RTTRLRT

TxyzT(xz)=T(x)uT(yz)=T(y)vuvzxy

RTΣ

以下算法模仿了DFA最小化的Moore算法。

PQSe

eΠ:Se={qQγ(q)=e}

P

S
   aΣ,
     SP,qS,δ(q,a)S
     SSi
      SiSPqSi,δ(q,a)S
      SiSP

当没有剩余的类别需要拆分时,其余的状态类别将构成最小摩尔机的状态。

通过构造,类中的所有状态都具有与该类的输出相同的输出。

aΣ

n=|Q|s=|Σ|
nO(sn2),与作为该准则的DFA最小化算法相同。

对于摩尔机的最小化,我没有任何参考。它可能包含在他的论文中:

摩尔,爱德华·F(1956)。“ Gedanken实验在顺序机器上”。自动机研究,数学研究纪事(新泽西州普林斯顿:普林斯顿大学出版社)(34):129-153。

本文是介绍摩尔机的主要参考资料。它也是 Moore DFA最小化算法。因此,如果至少没有在该论文中建议将算法应用于摩尔定律最小化,那将是令人惊讶的。我确实检查了这篇论文,并且提出的最小化算法的版本实际上是针对Moore机器的,而不是针对DFA的。论文写得很好,但是时间的风格使它读起来有点困难。有趣的是,本文已经概述了有限状态机的Myhill-Nerode理论的许多思想。

O(snlogn)


@Raphael参考...好吧,您很幸运,我重新设计了算法,因为我没有访问库的权限。但是既然您要求参考,我就给您一个参考。你应该喜欢它。但是我不确定我会在教学中使用它。
babou 2015年

@Raphael本文的演示很有趣,它试图变得非常直观,比代数更具操作性。我不记得Myhill和Nerode(两年后的1958年)所作贡献的所有细节,而且我没有足够仔细地阅读该论文(我只是略读了一下),但我想知道该理论是否应该归因于Moore?好。
babou 2015年

2

使用正则表达式导数的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。


@DW感谢您的编辑。刚刚好。
J.-E.

1

Brzozowski的算法是一个不好的起点(如果您担心渐近最坏情况下的运行时)。甚至Wikipedia也告诉您:

正如Brzozowski(1963)所观察到的,反转DFA的边缘会产生非确定性的有限自动机(NFA),以反转原始语言,然后使用标准功率集构造(仅构造可到达的状态)将NFA转换为DFA。转换后的DFA)导致使用相同反向语言的最小DFA。第二次重复此反向操作将为原始语言生成最小的DFA。Brzozowski算法的最坏情况下的复杂度是指数级的,因为在某些常规语言中,反转的最小DFA大于该语言的最小DFA的指数级[6],但它的性能通常比这种最坏情况所提示的要好。

该算法甚至在DFA上也具有指数最坏情况下的运行时因为它会为逆向计算自动机,该自动机可能必须成倍地增加。因此,您的问题并不出在传感器的扩展上。

尝试采用其他DFA最小化算法。

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.