阿克曼函数的使用?(Uses of Ackermann function?)

2019-08-06 05:09发布

在我们在我的大学离散数学课程,老师展示了他的学生阿克曼功能和分配学生发展在纸上的功能。

除了是递归优化的基准,确实阿克曼功能有任何实际用途?

Answer 1:

是。 的(反)阿克曼函数出现在算法的复杂性分析。 当它,这意味着你几乎可以忽略这个词,因为它长得慢(很像日志(日志...的log(n)...)),即LG *(N)。 例如: 最小生成树 (也是在这里 )和分离集林建设。

也: 达文波特-Scinzel序列



Answer 2:

阿克曼函数的原始的“使用”是表明有不能仅通过使用用于与预定的上限环路来计算功能,这不是原始递归的,即。

阿克曼功能是这样的功能,它的增长速度太快是原始递归。

我不认为有真正的实际用途,它的增长速度太快是有用的。 在一个合理的空间,你甚至不能明确地表示超出了(4,3)的数字。



Answer 3:

我同意其他答案(由wrang-wrang)“在理论上”。

在实践中阿克曼不太有用,因为在实践中你倾向于遇到的唯一的算法的复杂性涉及1,N,N ^ 2,N ^ 3,并且每个由那些logN个multipled的。 (既然是logN个从来没有超过64多个,它有效地是一个常数项反正。)

问题的关键是,“在实践中”,除非您的算法复杂度是“N倍太大”,你不关心的复杂性,因为现实世界的因素将占据主导地位。 (在O(反阿克曼)执行的函数,理论上比O(logN)的时间执行功能较好,但在实践中,你会衡量真实世界数据的两个实际的实现,并选择任何实际执行得更好与此相反,复杂性理论确实“物质实践”为如N对N ^ 2,在算法复杂效果其实做压倒任何“真实世界”的效果。我发现,“N”是在实践中重要的最小量度。)



文章来源: Uses of Ackermann function?