- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
随着 n 变大,log*(log n) 和 log(log* n) 这两个函数会更快吗?
这里,log* 函数是迭代对数,定义如下:
我怀疑它们是相同的,只是写法不同,但它们之间有什么区别吗?
最佳答案
log* n 是 iterated logarithm ,对于大 n 定义为
log* n = 1 + log*(log n)
因此,log*(log n) = (log* n) - 1,因为 log* 是在值达到某个固定常量(通常为 1)之前需要将 log 应用于该值的次数。先做另一个日志只会从过程中删除一个步骤。
因此,log(log* n) 将比 log* (log n) = log* n - 1 小得多,因为对于任何相当大的 x,log x < x - 1。
另一种更直观的理解方式:log* 函数在压缩大数方面比 log 函数显着更好。因此,如果您想取一个大数并使其变小,您可以通过先计算 log* n 来尽可能多地收缩 n ,然后使用 log on that (log (log* n)) 来提高效率拉下剩下的东西。
希望这对您有所帮助!
关于algorithm - 哪个增长率 log(log *n) 和 log*(log n) 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19172489/
我试图了解我的推理是否正确: 如果我得到以下代码片段并要求我找出它是 Big O: for(int i = 3; i < 1000; i++) sum++; 我想说 O(n),因为我们正在处
我有一个几个月前的 git 仓库。是否可以计算/绘制内部 git 存储库(压缩大小)的大小(以 MB 为单位)作为推送到远程的提交(或与此相关的日期)的函数? 由于可以并行开发分支,因此给定的提交可能
我是一名优秀的程序员,十分优秀!