我不确定如何正式证明大O求和规则,即:
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
,这是我能想到的唯一方法。
我不确定如何正式证明大O求和规则,即:
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
,这是我能想到的唯一方法。
Let
gmax = max(g1, g2), and gmin = min(g1, g2).
是O()。现在,使用定义:
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),大O的传递性告诉我们f1+f2为O(max(g1,g2))。证毕。