【发布时间】:2015-12-16 07:32:30
【问题描述】:
所以我一直在研究大 O 表示法(Noob),大多数东西对我来说都像是外星语言。现在我了解日志的基本知识,例如 base2 的 log 16 是 2 的幂等于数字 16。现在对于二进制搜索大 O(logN) 对我来说毫无意义,LogN 的值是什么,这里的基数是什么?我在网上搜索过,问题是每个人都用数学解释了这个我无法理解我数学不好。有人可以用基本英语而不是像指数这样的外星语言向我解释这一点。我知道二进制搜索的工作原理。
第二个问题:[我什至不知道 f = Ω(g) 这个符号是什么意思] 谁能用简单的英语向我解释这里需要什么,我不想要答案,只是这意味着什么。 题 : 在以下每种情况下,请说明是 f = O(g),还是 f = Ω(g),或两者兼而有之。 (在这种情况下 f = Θ(g))。
f(n) g(n)
(a) n-100 .............n-200
(b) 100n + logn .......n + (log n)2
(c) log2n ...... log3n
【问题讨论】:
-
" 现在对于二进制搜索大 O(logN) 对我来说毫无意义,LogN 的值是什么,这里的基数是什么?" :在大 O 表示法中,底数无关紧要。 SO上有很多很好的答案,.....
-
在大 O 表示法中,我认为复杂性 O(log N) 是一个问题,其复杂性与该问题中的位数成正比。因此,9999 规模的问题将是 99 规模问题的两倍。如果您必须在没有提示的情况下从 0 到 99 猜测一个数字,则找到该数字是 O(N)。对数字 0 到 9999 做同样的事情显然要困难 100 倍。现在,如果您有“更高/更低”的提示,这将使问题成为 O(log N)。在那种情况下,从 0 到 9999 找到一个数字的难度只有从 0 到 99 的两倍
-
对日志忽略基数的原因是它们都是彼此的常数倍数(并且在大 O 表示法中忽略了常数倍数)。查找日志的“基础更改”公式。一般来说,
log_a(x) == log_b(x) / log_b(a) == log_10(x) / log_10(a) == ln(x) / ln(a). -
“我数学不好。”然后get数学好。如果你想了解计算机编程,你需要很好地掌握基础数学。至少高中代数和三角学。
-
cs.stackexchange.com 是您提出这个问题的地方。您的问题与编程无关。