在我们在我的大学离散数学课程,老师展示了他的学生阿克曼功能和分配学生发展在纸上的功能。
除了是递归优化的基准,确实阿克曼功能有任何实际用途?
在我们在我的大学离散数学课程,老师展示了他的学生阿克曼功能和分配学生发展在纸上的功能。
除了是递归优化的基准,确实阿克曼功能有任何实际用途?
是。 的(反)阿克曼函数出现在算法的复杂性分析。 当它,这意味着你几乎可以忽略这个词,因为它长得慢(很像日志(日志...的log(n)...)),即LG *(N)。 例如: 最小生成树 (也是在这里 )和分离集林建设。
也: 达文波特-Scinzel序列
阿克曼函数的原始的“使用”是表明有不能仅通过使用用于与预定的上限环路来计算功能,这不是原始递归的,即。
阿克曼功能是这样的功能,它的增长速度太快是原始递归。
我不认为有真正的实际用途,它的增长速度太快是有用的。 在一个合理的空间,你甚至不能明确地表示超出了(4,3)的数字。
我同意其他答案(由wrang-wrang)“在理论上”。
在实践中阿克曼不太有用,因为在实践中你倾向于遇到的唯一的算法的复杂性涉及1,N,N ^ 2,N ^ 3,并且每个由那些logN个multipled的。 (既然是logN个从来没有超过64多个,它有效地是一个常数项反正。)
问题的关键是,“在实践中”,除非您的算法复杂度是“N倍太大”,你不关心的复杂性,因为现实世界的因素将占据主导地位。 (在O(反阿克曼)执行的函数,理论上比O(logN)的时间执行功能较好,但在实践中,你会衡量真实世界数据的两个实际的实现,并选择任何实际执行得更好与此相反,复杂性理论确实“物质实践”为如N对N ^ 2,在算法复杂效果其实做压倒任何“真实世界”的效果。我发现,“N”是在实践中重要的最小量度。)