【发布时间】:2021-01-08 10:27:23
【问题描述】:
任何人都可以帮助解释为什么这个函数
F(n) = F(n/3) + 1 其中 F(0) = 0
时间复杂度为 O(Log n),对数基数为 3。
是否有数学符号或任何可以帮助向我解释如何获得结果的方法。谢谢
【问题讨论】:
标签: algorithm math time-complexity
任何人都可以帮助解释为什么这个函数
F(n) = F(n/3) + 1 其中 F(0) = 0
时间复杂度为 O(Log n),对数基数为 3。
是否有数学符号或任何可以帮助向我解释如何获得结果的方法。谢谢
【问题讨论】:
标签: algorithm math time-complexity
通过替换,可以很简单的做到:
F(n) = F(n/3) + 1 = F(n/3^2) + 1 + 1 = 1 + 1 + ... + 1 (log_3(n) times)
因为每次n 除以3 并且1 被添加到结果中,如果我们假设n = 3^k,F(n) = k。因此,F(n) = O(log(n))。以对数为底的常数 (>1) 对复杂度的顺序没有任何影响,即log_a(n) = Theta(log_b(n)) (a,b > 1)。
【讨论】: