一些复杂的算法(联合查找)具有渐近时间复杂度中出现的近似恒定的逆阿克曼函数,如果忽略近似恒定的逆阿克曼项,则它们是最坏情况下的时间最优。
是否有已知算法的运行时间有任何示例,这些算法的运行时间从根本上比逆阿克曼倒数慢(例如,在多项式或指数等变换下不等同于阿克曼的函数倒数)给出了最著名的最坏情况时间解决根本问题的复杂性?
一些复杂的算法(联合查找)具有渐近时间复杂度中出现的近似恒定的逆阿克曼函数,如果忽略近似恒定的逆阿克曼项,则它们是最坏情况下的时间最优。
是否有已知算法的运行时间有任何示例,这些算法的运行时间从根本上比逆阿克曼倒数慢(例如,在多项式或指数等变换下不等同于阿克曼的函数倒数)给出了最著名的最坏情况时间解决根本问题的复杂性?
Answers:
塞特Pettie想出了一种算法,用于计算灵敏度最小生成树的时刻,提高上的Tarjan的算法,其计算在同一时刻Ö (米α (米,Ñ ))。(比较这对Chazelle的Ö (米α (米,Ñ ))算法,用于计算最小生成树 灵敏度问题要求针对给定的图和给定的最小生成树,计算不改变最小生成树而每个边缘权重可以改变多少。
(感谢Tsvi Kopelowitz提供此参考。)
我曾在论文中看到过的最可笑的,缓慢增长的函数是,您必须应用Ackermann逆将n降至某个固定常数的次数。本文将其用于八叉树上的双端队列猜想。
当艾伦·图灵(Alan Turing)发现计算机时,曾经为计算机提出过几种模型。图灵证明,这些模型中的某些模型(3)可以彼此模拟并计算Ackermann函数,而其他模型可以彼此模拟,而不能模拟Ackermann函数(因此它们不能模拟3)。因此,选择了这3种模型(Turing Machine,von Neumann和一个我不知道的模型)作为计算机的体系结构。这并不意味着Ackermann函数是计算机的极限,但我认为这是一门艰苦的科学。我不知道有任何可计算的函数比Ackermann函数增长得更快。
现在,我认为没有一个实际的问题可以满足您的问题,但是也许我们可以构造一个。但是,我们需要对输入施加约束。由于我们不能使用O(n),因此无法检查整个输入。实际上,我们甚至无法检查输入的长度,因为那将是O(log n)。因此,我们需要将其余输入的长度表示为第一个参数,例如c,以使Ackermann(c)是输入的长度。由于这也不适合,因此我们要求输入c作为第一个值,使得bb(c)大约是输入的长度,其中bb是忙碌的海狸函数。这个函数是不可计算的,但是bb(c)当然存在。然后,算法如下:
for (int i=0; i<c; i++) {
if (input[i] == null) {
return false;
}
}
return true;
该算法的目的是检查如果c是bb的倒数,则输入长度是否大于bb(c)。
如果有一个比Ackermann函数增长更快的可计算函数,我认为我们可以使用它的反函数来创建一个可以在任何输入上回答您的问题的算法。