算法分析--时间复杂度

1. 声明

内容是我抄得别人的,自己拿来做笔记看一下。

2. 复杂度记号

O O O: 大O符号,也是最常用的,它表示的是小于等于,上界,也就是最差情况下的时间复杂度。
Ω \Omega Ω: 大欧米伽,它表示的是大于等于,下界,也就是最好情况下的时间复杂度。
Θ \Theta Θ: 大西塔,它表示的是确界,就是等于。
o o o: 小O符号,表示小于。
ω \omega ω: 小omega,表示大于。

抄了三个数学定义

第一个是渐进上界
f ( n ) = O ( g ( n ) ) : = ∃ c , n , n 0 ∈ N + , n > n 0 , ∀ f ( n ) , s . t .   0 ≤ f ( n ) ≤ c g ( n ) f(n) = O(g(n)) := \exists c,n,n_0 \in N_+,n > n_0, \forall f(n) ,s.t.\ \\ 0 \le f(n) \le cg(n) f(n)=O(g(n)):=c,n,n0N+,n>n0,f(n),s.t. 0f(n)cg(n)
第二个是渐进下界
f ( n ) = Ω ( g ( n ) ) : =   ∃ c , n , n 0 ∈ N + , n > n 0 , ∀ f ( n ) , s . t . 0 ≤ c g ( n ) ≤ f ( n ) f(n)=\Omega(g(n)) := \ \exists c,n,n_0 \in N_+, n >n_0, \forall f(n),s.t.\\ 0 \le cg(n) \le f(n) f(n)=Ω(g(n)):= c,n,n0N+,n>n0,f(n),s.t.0cg(n)f(n)
第三个是渐进等价
f ( n ) = Θ ( g ( n ) ) : =   ∃ c 0 , c 1 , n , n 0 , n > n 0 , ∀ f ( n ) , s . t .   c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) f(n)=\Theta(g(n)) :=\ \exists c_0,c_1,n,n_0,n>n_0, \forall f(n), s.t.\ \\ c_1g(n) \le f(n) \le c_2g(n) f(n)=Θ(g(n)):= c0,c1,n,n0,n>n0,f(n),s.t. c1g(n)f(n)c2g(n)

3. P问题、NP问题、NPC问题、NP-hard问题

强烈推荐看下matrix67的这篇文章,好多人都是抄的这篇文章。

我这里只简单写下自己的理解。

首先这个英文字母是polunomial的缩写,是多项式的意思。

而多项式其实就是 ∑ i = 0 k a i x i \sum_{i=0}^{k}a_ix^i i=0kaixi

P具体是什么的缩写不太清楚了,但意思是未确定的。

  • P问题:能在多项式时间复杂度内解决的问题。
  • NP问题:能在多项式时间内验证是否正确的问题。
  • NP完全问题:NP问题中最终归约到的问题。
  • NP-hard问题:NP问题最终归约到的问题,但并不一定是NP问题

原文

时间复杂度
matrix67

你可能感兴趣的:(杂项,算法)