如果算法需要一个可以包含数字n的整数(例如,计算输入数组的大小),那么该整数必须采用log(n)空间的顺序(对吗?)。
如果这是唯一与n一起缩放的空间,那么算法的空间复杂度是否为O(logn)?
答案 0 :(得分:2)
正式地,它取决于您使用的计算模型。在经典random access machine模型中,使用固定的字大小,只需存储输入的长度 n 确实需要O(log n )空间(和简单的算法)在这些数字上需要O(log n )时间。另一方面,在transdichotomous model中,假设字大小与输入大小 n 呈对数增长,它只需要O(1)空间(和时间)。其他模型可能会产生其他答案。
在实践中,大多数analysis of algorithms假设对中等大小的简单算术(即与输入长度成比例)可以在恒定的时间和空间内完成。除了简化分析这一事实之外,实际的原因是在实践中输入长度的对数不能变得非常大 - 即使计算机能够计数从零到2,比如2 256 ,更少阅读许多位输入,可能forever beyond the means of humankind to build使用已知物理。因此,对于任何可以想象的逼真的输入,您可以简单地假设具有256位字大小的机器可以将输入的长度存储在单个字中(并且具有较小字长的机器仍然存在只需要很少量的单词)。
答案 1 :(得分:0)
这里n
是有界的,因为n
将是32位有符号整数,因为数组大小有一定的限制。因此log(32)
有界,其O(1)