为什么Ackermann函数与用于不相交集的并集查找算法的分摊复杂性有关



有人能给我一个直观的解释为什么阿克曼函数http://en.wikipedia.org/wiki/Ackermann_function与用于不相交集的并集查找算法的分摊复杂性有关http://en.wikipedia.org/wiki/Disjoint-set_data_structure?

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

我在《算法导论》中也查过它,但它似乎也过于严格和不直观。

谢谢你的帮助!

应用于非联合集合林

来自维基百科

(关于发现和结合)这两个技术是相辅相成的;一起应用,摊销时间每次运算仅为O(α(n)),其中α(n)是函数的逆f(n)=A(n,n),并且A是迅速增长的阿克曼函数。由于α(n)是函数,α(n)小于5n的远程实际值。因此,每操作实际上很小常数

为什么是阿克曼

来自Kruskal算法

函数lg*n

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

相关内容

  • 没有找到相关文章

最新更新