algorithm - 关于大o证明的问题

标签 algorithm big-o

我有以下问题:

下列说法正确还是错误?

所有日志到 base 2

log2n 是 O(log(n)) 的成员

我的尝试:

  • log2n - clogn <= 0
  • log2 + logn - clogn <= 0
  • 1 + logn(1-c) <= 0

如果我错了请纠正我,但我必须找到 n(变量)和 c(常量)的值来证明或反驳这个...

通常这似乎是真的:

选择

n0 = 2, c = 3 -> TRUE 
n1 = 3, c = 3 -> TRUE 
n2 = 4, c = 3 -> TRUE

因此,该陈述似乎是正确的,logn 随着 n 的增加而增加。但也有一些值是上述陈述永远不会成立的:

例如

无论 n 的值如何增加,选择 c = 1 的结果都大于零。

所以我很困惑这是真的还是假的....

最佳答案

您可以只使用乘积的对数是因子的对数之和这一事实:

log(2n) = log(2)+log(n) = O(log(n))

关于algorithm - 关于大o证明的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715111/

相关文章:

algorithm - 详细的大哦问题

algorithm - 为什么对字符串进行排序 O(n log n)?

javascript - 这段短代码的大O

algorithm - 如何证明从最小节点开始在BST中找到n-1次后继是O(n)?

python - 获取给定顶点坐标的多边形轮廓和多边形掩码的坐标

c# - 随机排列元素,使得任何元素都不应出现在其原始索引处

python - 这个嵌套 for 循环的时间复杂度是多少?

algorithm - 对包含 n 个元素的列表执行 O(1) 操作的指令数是多少?

c++在三个数字之间求和两个更高的数字而没有循环和数组

ruby - Ruby 运行时中的两个求和算法不会通过 LeetCode