为什么Ackermann函数与用于不相交集的union-find算法的摊销复杂性有关?

时间:2011-06-14 11:45:38

标签: set complexity-theory ackermann

有人可以直接解释为什么Ackermann函数http://en.wikipedia.org/wiki/Ackermann_function与用于不相交集http://en.wikipedia.org/wiki/Disjoint-set_data_structure的联合查找算法的摊销复杂性有关吗?

Tarjan的数据结构书中的分析不是很直观。

我也在算法导论中查了一下,但它看起来也太严谨和不直观了。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

应用于不相交的森林

来自Wikipedia

  

(关于发现和结合)这两个   技术相辅相成;   共同应用,摊销时间   每个操作只有O(α(n)),其中   α(n)是函数的反函数   f(n)= A(n,n),A是极端的   快速增长的阿克曼功能。   因为α(n)与此相反   函数,α(n)小于5   远程实用值n。从而,   每个摊销的运行时间   操作实际上很小   恒定。

为什么阿克曼?

来自Kruskal algoritm

  

功能lg * n

     

请注意,lg * n增长非常缓慢   功能,比lg n慢得多。在   事实是慢于lg lg n或任何   有限组成的lg n。它是   函数f(n)= 2的倒数   ^ 2 ^ 2 ^ ... ^ 2,n次。对于n> = 5,f(n)   大于原子的数量   宇宙因此对所有意图   和目的,f(n)的倒数   n的任何实际值都是常数。   从工程师的角度来看,   Kruskal的算法在O(e)中运行。   当然要注意来自a   理论家的观点,一个真实的   O(e)的结果仍然是a   重大突破。 整体   图片不完整,因为   实际最佳结果表明lg * n可以   被A(p,n)的倒数所取代   其中A是Ackermann的函数,a   爆炸性增长的功能。该   阿克曼函数的逆是   与lg * n有关,并且更好   结果,但证据是均匀的   更难。