- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
巴比伦方法的时间复杂度是多少?是 log(n),其中 n 是我们要为其求平方根的数字吗?如果是这样,为什么会这样?
最佳答案
查看the wikipedia section for the Babylonian method我们可以看到在第 k 步的相对误差 ek 满足方程 ek < 2-f(k),其中 f (k) 递归定义如下:
对于 n > 1,f(1) = 2 和 f(k+1) = 2 * f(k) + 1
通过归纳,f(k) = 3 * 2k-1 - 1
让 n 成为我们算法的输入,当我们确定总误差小于常数 m 时算法停止
第 k 步的误差 Ek 满足方程 Ek = ek * n
因此算法将终止一次 ek * n < m
这将发生在 2f(k)> n/m 相当于 f(k) > log2(n/m)
当 2k-1> (log2(n/m) - 1)/3 时该等式成立,当 k > log 时该等式成立2((log2(n/m) - 1)/3)+ 1
因此算法将在 O(log(log(n/m)+1)) 步后终止。
使用 this logarithmic summation formula你可以证明 log(log(x)+c)) = O(log(log(x)).
因此巴比伦方法需要 O(log(log(n/m)) 步
关于performance - 巴比伦方法的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309432/
我从 Blender 导入了一个网格物体 3 次,并为每个网格物体设置了不同的 ID,然后我尝试使用以下方法仅更改一个网格物体的纹理: var newMesh = scene.getMeshByID(
我是一名优秀的程序员,十分优秀!