【发布时间】:2013-04-19 00:20:13
【问题描述】:
我正在查看将 DFA 转换为正则表达式的时间复杂度分析 Ullman 等人的“自动机理论、语言和计算简介”,第 2 版,第 151 页。此方法有时称为transitive closure method。我不明白他们是如何在 O((n^3)*(4^n)) 时间复杂度中得出 4^n 表达式的。
我知道 4^n 表达式关于空间复杂度是成立的,但是,关于时间复杂度,我们似乎在每次迭代中只对每对状态执行四个恒定时间操作,使用之前迭代的结果。我到底错过了什么?
【问题讨论】:
-
他们没有在书中给出理由吗?
-
他们可能在(合理的)假设下运行,即您无法在 n 时间内创建大小为 n 的对象。如果输出可能需要 4^n 空间,那么他们可能会争辩说创建它至少需要 4^n 时间。
-
@templatetypedef 也许,但我目前不这么认为。在每对状态的每次迭代中,该算法仅采用在先前迭代中计算的四个正则表达式并将它们连接成一个更大的正则表达式;不涉及重新计算,然后可以用 4^n 严重过度近似。
-
@FrankieTheKneeMan 不是;很模糊。
标签: regex algorithm time-complexity automata