符号方式,最好写 g (n)∈ O ( f ( n )),因为“ O ( f ( n ))”可以看作是所有函数的 set 增长速度不超过 f ( n )的倍数。
让我们重申复杂性理论中使用的两个相关的形式定义:
- g (n)∈ O ( f ( n ))⇔∃ k < / em>&gt; 0∃ N ≥0∀ n ≥ N [| g ( n )| ≤ k ·| f ( n )|]
- f (n)∈Ω( g ( n ))⇔∃ k < / em>&gt; 0∃ N ≥0∀ n ≥ N [ f ( n < / em>)≥ k · g ( n )]
如果我们可以假设 f 和 g 是非负函数(计算机科学中使用的函数几乎总是如此),那么我们可以放弃绝对值标志。因此:
- g (n)∈ O ( f ( n ))⇔∃ k < / em>&gt; 0∃ N ≥0∀ n ≥ N [ g ( n < / em>)≤ k · f ( n )]
- f (n)∈Ω( g ( n ))⇔∃ k < / em>&gt; 0∃ N ≥0∀ n ≥ N [ f ( n < / em>)≥ k · g ( n )]
接下来,翻转第二个逻辑语句中的不等式:
- g (n)∈ O ( f ( n ))⇔∃ k < / em>&gt; 0∃ N ≥0∀ n ≥ N [ g ( n < / em>)≤ k · f ( n )]
- f (n)∈Ω( g ( n ))⇔∃ k < / em>&gt; 0∃ N ≥0∀ n ≥ N [ k · g < / em>( n )≤ f ( n )]
现在让我们证明第一个陈述的右边隐含第二个陈述的右边:
- 假设∃ k &gt; 0∃ N ≥0∀ n ≥ N [ g ( n )≤ k · f ( n )]为真。
- 实例化 k &gt; 0,满足∃ N ≥0∀ n ≥ N [ g ( n )≤ k · f ( n )]。
- 让 k '= 1 / k ,这是合法的,因为 k ≠0。
- 实例化 N ≥0满足∀ n ≥ N [ g ( n < / em>)≤ k · f ( n )]。
- 让 n 为任意数字,使 n ≥ N 。
- 然后我们 g ( n )≤ k · f ( n )。
- 接下来我们 g ( n )/ k ≤ f ( n )。
- 通过替换,我们有 k ' g ( n )≤ f ( n )。
- 因为 n 是任意的,我们推导出∀ n ≥ N [ k '· g ( n )≤ f ( n )]。
- 我们得出满足∀ n ≥ N [ k ' N ≥0 > g ( n )≤ f ( n )]。
- 我们推导出∃ k'&gt; 0∃ N ≥0∀ n ≥ N [ k ' g ( n )≤ f ( n )]。
- 我们将 k'重命名为 k ,以便∃ k &gt; 0∃ N ≥0∀< em> n ≥ N [ k · g ( n )≤ f < / em>的(名词的)。
- 因此[∃ k > 0∃ N ≥0∀ n ≥ N [ g ( n )≤ k · f ( n )]]暗示[∃ k &gt;0∃ N ≥0∀ n ≥ N [ k · g ( n )≤ f ( n )]]。
- 因此 g (n)∈ O ( f ( n ))暗示 f < / em>(n)∈Ω( g ( n )),如所需。
醇>