找到n的立方根的复杂性

时间:2013-12-24 23:20:17

标签: algorithm big-o time-complexity

自然数n的立方根被定义为最大自然数m,使得m ^3≤n。计算n的立方根的复杂度(n用二进制表示法表示)是

(A)O(n)但不是O(n ^ 0.5)

对于任何常数k>(B)O(n ^ 0.5)但不是O((log n)^ k)。 0

(C)O((log n)^ k)对于某些常数k>对于任何常数m> 0,但不是O((log log n)^ m)。 0

(D)O((log log n)^ k)对于某些常数k> 0.5,但不是O((log log n)^ 0.5)

我很难解决前一年的问题。任何人都可以帮助我理解这个问题

1 个答案:

答案 0 :(得分:5)

要回答这个问题,你需要找到找到整数立方根m为n的复杂性的上限和下限。至少一个上限是微不足道的,并排除答案A和B:m可以使用二分搜索在O(log n)时间内找到。

另请注意,输入大小为O(log n),因为以二进制表示法表示任意n所需的最小位数与log n成比例。因为必须处理该数字的所有位以解决问题,所以θ(log n)是解决问题的时间的下限,因此问题不能及时解决O((log log n)^ w) [其中w是一些常数> 0]因为那不是O(log n)。因此,答案C适用。