漸近表記

漸近表記

1.定義

漸近表記、定義さた自然数N = {0、1、2 、......}関数の定義域に基づいて、漸近実行タイムマークを記述するために使用されます。通常、アルゴリズムの計算時間記述するために漸近表記を使用します次に、いくつかの基本的な漸近表記を紹介します。

2. Oマーク(big-Oh)

2.1定義

f(n)= O(g(n)) -定数c> 0およびn0が存在し、n> = n0に対してf(n)<c * g(n)となります。

任意のn> = n0に対して、f(n)<= c * g(n)となるような正規数cとn0があります。

O表記を使用して、関数の定数係数内に上限を指定することがよくあります。ここで、g(n)は、漸近境界ではなく、漸近上限である必要があります(つまり、3n ^ 2 + 4n + 5 = O (n ^ 2)が成り立ちますが、実際には3n ^ 2 + 4n + 5 = O(n ^ 1000000)も成り立ちます)

2.2例

2.2.1一般的な例

  • 3n ^ 2 + 4n + 5 = O(n ^ 2)
  • log10 n = O(log2 n)= O(log n)(デフォルトではlogは基数2です)
  • sin n = O(1)
  • 10 ^ 10 = O(1)
  • nΣi= 1 i ^ 2 = O(n ^ 3)
  • nΣi= 1 i = O(n ^ 2)
  • log(n!) = log(n)+……+ log(1)= O(n log n)
  • nΣi= 1 1 / i = O(log n)

2.2.2証明例

(1)f(n)= 3n ^ 2 + 4n + 5、f(n)= O(n ^ 2)であることを証明します。

解決策:n> = 1の場合、f(n)= 3n ^ 2 + 4n + 5 <= 3n ^ 2 + 4n ^ 2 + 5n ^ 2 = 12n ^ 2。したがって、定数c = 12およびn0 = 1がある場合、任意のn> = n0に対して、f(n)<= c * n ^ 2

(2)f(n)=nΣi= 1 1 / i、f(n)= O(log2 n)であることを証明します。

PSここで、nΣi= 1 1 / iは1/1 + 1/2 + 1/3 +……+ 1 / nに等しく、調和級数の調和級数が証明に使用されます。

n> = 2の場合、最初にnをnに最も近い2の累乗に増幅できます。f(n)= 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7 +……+ 1 /(n-1)+ 1 / n <= 1/1 + 1/2 +1/2 + 1/4 + 1/4 + 1/4 + 1/4 +…… 1 /(n / 2)+ 1 / n = log n + 1 / n <= 2 logn。したがって、定数c = 2およびn0 = 2があります。任意のn> = n0の場合、f(n)<= c * lognです。ズームインした後、f(n)= O(log n)、明らかにズームインしていないときは、f(n)= O(log n)も真です。

2.2.3反例の証明

(1)f(n)= 2 ^(2n)がO(2 ^ n)と等しくないことを証明します。

解決策:反例、任意の正規数cおよびn0に対して、n> = n0が存在することを証明することです。したがって、f(n)> c * g(n)です。したがって、この質問では、任意の自然数cとn0に対して、n = n0 + log c> = n0が存在するため、f(n)> c * 2 ^ nとなります。

3.Ω記号(ビッグオメガ)

3.1定義

f(n)=Ω(g(n))定数c> 0およびn0が存在し、n> = n0に対してf(n)> = c * g(n)となります。

任意のn> = n0に対して、f(n)> = c * g(n)となるような正規数cとn0があります。

Ω表記は、関数の漸近的な下限を提供します

3.2例

3.2.1一般的な例

  • n ^ 2 / 2-3n =Ω(n ^ 2)
  • log(n!)=Ω(nlog n)
  • nΣi= 1 1 / i =Ω(log n)

3.2.2証明例

(1)f(n)= n ^ 2 / 2-3n、f(n)=Ω(n ^ 2)であることを証明します。

解決策:n> = 12の場合、f(n)= n ^ 2 / 2-3n> = n ^ 2/4です。したがって、正規数c = 1/4とn0 = 12があるため、任意のn> = n0、f(n)> = c * n ^ 2。

(2)f(n)= log(n!)、f(n)=Ω(nlog n)であることを証明します。

解決策:n> = 4の場合、f(n)= log(n)+ log(n-1)+……+ log 1> = log(n)+ log(n-1)+……+ log(n / 2)> = n / 2 * log(n / 2)= n / 2 *(log n-1)> = n log n / 4。したがって、正規数c = 1/4およびn0 = 4があるため、任意のn> = n0に対して、f(n)> = c * n lognとなります。

(3)f(n)=nΣi= 1 1 / i、f(n)=Ω(logn)であることを証明します。

解決策:n> = 2の場合、nをnに最も近い2の累乗に減らすことができます。f(n)= 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7 +……+ 1 /(n-1)+ 1 / n> = 1/2 + 1/4 + 1/4 + 1/8 + 1/8 + 1/8 + 1/8 + .. 。+ 1 / n + 1 / n> = n log n / 2 + 1 / n> = n log n / 2。したがって、正規数c = 1/2とn0 = 2があり、任意のn> = n0に対して、f(n)> = c * n lognとなります。

3.2.3反例の証明

(1)100n ^ 2がΩ(n ^ 3)と等しくないことを証明します。

解決策:反例、任意の正規数cおよびn0に対して、n> = n0が存在することを証明することです。したがって、f(n)<c * g(n)です。したがって、この質問では、任意の正規数cおよびn0に対して、n = n0 + 100 / c> = n0が存在するため、f(n)<c * n ^ 3となります。

4.シータ表記(ビッグシータ)

4.1定義

f(n)= O(g(n))およびf(n)=Ω(g(n))の場合に限り、f(n)=θ(g(n))

θ(g(n))の定義では、すべてのメンバーf(n)∈θ(g(n))が漸近的に非負であり、g(n)がf(n)の漸近的にコンパクトな境界である必要があります。

おすすめ

転載: blog.csdn.net/NickHan_cs/article/details/108454972