我不确定如何正式证明Big O Sum of Sums,即:
f1(n) + f2(n) is O(max(g1(n)),g2(n))
到目前为止,我已经尝试了以下内容:
让两个常量c1
和c2
成为c2 > c1
。按大O定义:
f1(n) <= c1g1(n) and f2(n) <= c2g2(n)
我该怎么办?在这一步引入变量的数值替换来证明这种关系是否合理?不知道g
或f
,这是我能想到的唯一方法。
答案 0 :(得分:5)
让
gmax = max(g1, g2), and gmin = min(g1, g2).
gmin是O(gmax)。现在,使用定义:
gmin(n) <= c*gmax(n) for n > some k
向每一侧添加gmax(n)给出:
gmin(n) + gmax(n) <= c*gmax(n) + gmax(n) for n > some k
gmin(n) + gmax(n) <= (c+1)*gmax(n) for n > some k
g1(n) + g2(n) <= c'*gmax(n) for n > some k
所以我们得到g1 + g2是O(max(g1,g2))。
由于f1 + f2是O(g1 + g2),因此big-O的传递性使得f1 + f2为O(max(g1,g2))。 QED。
答案 1 :(得分:1)
我想我可能更像一个建构主义者,我会像这样攻击这个问题:
根据Big-O的定义,存在正c 1 ,c 2 ,N 1 和N 2 这样
所有n的f 1 (n)&lt; = c 1 g 1 (n)&gt; N 1
和
对于所有n>f 2 (n)&lt; = c 2 g 2 (n) Ñ<子> 2 子>
让:
N'= max(N 1 ,N 2 )
c'= c 1 + c 2
g'(n)= max(g 1 (n),g 2 (n))
然后对于所有n&gt;我们有:
f 1 (n)&lt; = c 1 g 1 (n)&lt; = c 1 G'(n)的
f 2 (n)&lt; = c 2 g 2 (n)&lt; = c 2 g' (n)的
f 1 (n)+ f 2 (n)&lt; = c 1 g'(n)+ c 2 g'(n)= c'g'(n)
因此,f 1 (n)+ f 2 (n)是O(g'(n))= O(max(g 1 < /子>(N),克<子> 2 子>(N)))
答案 2 :(得分:0)
你甚至不需要这个定义 - 只需将快速增长的函数划分为两边,取无限远的限制,增长较慢的函数将接近零(即它无关紧要)。