问题1:在什么情况下O(f(n)) = O(k f(n))
是最合适的时间复杂度分析形式?
问题2:根据O
符号的数学定义,如何显示O(f(n)) = O(k f(n))
,表示正常数k
?
对于第一个问题,我认为这是时间复杂性的平均情况和最坏情况形式。我对吗?还有什么我应该写的呢?
对于第二个问题,我认为我们需要以数学方式定义函数。答案是这样的,因为乘以常数只是对应于k
定义中任意常数O
的值的重新调整?
答案 0 :(得分:3)
我的观点:对于我认为的第一个 是平均情况和最坏情况的形式 时间复杂度。我对吗?什么 我还写那个吗?
没有!大O符号与平均情况或最坏情况无关。它只是关于函数增长的顺序 - 特别是函数相对于另一函数的增长速度。函数f
在平均情况下可以是O(n)
,在最坏的情况下可以是O(n^2)
- 这只是意味着函数的行为会根据其输入而有所不同,因此必须考虑这两种情况分开。
关于问题2,从问题的措辞中我很明显,你需要从Big O的数学定义开始。为了完整起见,它是:
形式定义:f(n)= O(g(n)) 意味着有正常数c 和k,使得0≤f(n)≤cg(n) 所有n≥k。 c和k的值必须 固定的功能f和必须 不依赖于。
(来源http://www.itl.nist.gov/div897/sqg/dads/HTML/bigOnotation.html)
因此,您需要使用此定义并编写显示f(n) = O(k(n))
的数学证明。首先在上面的定义中用O(g(n))
替换O(k*f(n))
;其余的应该很容易。
答案 1 :(得分:2)
问题1有点模糊,但你对问题2的回答肯定是缺乏的。问题是“根据O符号的数学定义”。这意味着您的教师希望您使用数学定义:
f(x)= O(g(x))当且仅当限制[x - > a +] | f(x)/ g(x)| <无限,对某些人而言
他希望你插入g(x)= k f(x)并证明不等式成立。
你发布的一般论点可能会让你获得部分功劳,但这是推理而不是数学,问题是要求数学。