Algorithm 计算机速度加倍时计算O(n)
假设O(n)的算法在速度为X的计算机上求解。 现在,在速度为2X的计算机上使用同样的算法,可以同时解决2N大小的问题Algorithm 计算机速度加倍时计算O(n),algorithm,time-complexity,Algorithm,Time Complexity,假设O(n)的算法在速度为X的计算机上求解。 现在,在速度为2X的计算机上使用同样的算法,可以同时解决2N大小的问题 现在如果我们在速度为X的计算机上有一个O(logn)的算法 我如何计算可以在计算机上以2倍速度同时解决的问题的大小 对于o(n^2)也是如此 这不是什么家庭作业之类的问题。 只是好奇,正如我读的那本书对上面的问题2所说的,它是O(n^2),我不明白。大O符号不依赖于计算机速度,它只描述了算法的时间复杂性。你必须在数组中迭代两次的东西总是2N,如果你把它放在一台速度是原来的两
只是好奇,正如我读的那本书对上面的问题2所说的,它是O(n^2),我不明白。大O符号不依赖于计算机速度,它只描述了算法的时间复杂性。你必须在数组中迭代两次的东西总是2N,如果你把它放在一台速度是原来的两倍的计算机上,它的时间复杂度仍然是2N,即使实际上它完成的速度是原来的两倍。这就是表示法的美妙之处,它独立于处理器速度。大O表示法不依赖于计算机速度,它只描述了算法的时间复杂度。你必须在数组中迭代两次的东西总是2N,如果你把它放在一台速度是原来的两倍的计算机上,它的时间复杂度仍然是2N,即使实际上它完成的速度是原来的两倍。这就是符号的美妙之处,它独立于处理器速度。只有当您知道运行时的大θ,并且只有当问题规模足够大时,才可能进行此类估计 对于2)
2*log(n)=log(n^2)
对于3)
2*n^2=(n*sqrt(2))^2
只有知道运行时的大θ,并且只有当问题规模足够大时,才可能进行此类估计
对于2)2*log(n)=log(n^2)
对于3)
2*n^2=(n*sqrt(2))^2
设n为当前处理的工作量,m为速度加倍时处理的工作量。请参见此处的讨论:
设n为当前处理的工作量,m为速度加倍时处理的工作量。请参见此处的讨论:
有些人不喜欢听,但这是正确的。BigO不关心精确的运行时间,只关心问题越大的趋势。对于较小的
n
,低阶效应占主导地位。事实上,一个n的循环和一个2n的循环都是O(n)。是的,我选择了2n的东西,因为在这个例子中,他说的是计算机速度的2倍,我认为在这种情况下,仅仅输入n可能会使答案混淆,但你是绝对正确的。有些人不喜欢听,但这是正确的。BigO不关心精确的运行时间,只关心问题越大的趋势。对于较小的n
,低阶效应占主导地位。事实上,一个n的循环和一个2n的循环都是O(n)。是的,我选择了2n的东西,因为在这个例子中,他说的是2倍的计算机速度,我认为仅仅是把n放在上下文中可能会让答案混淆,但你绝对正确。
For O(log(n)):
log(m)/log(n) = 2
log(m)=2*log(n)
log(m)=log(n^2) => m=n^2
For O(n^2):
m^2/n^2 = 2 => m = sqrt(2)*n