アルゴリズムの漸近表現法と分析
4561 ワード
アルゴリズム#アルゴリズム#
問題を段階的に解決するステップ
アルゴリズムの漸近表現
十分な大きさの記号を入力
漸近上限を表す.
これは、実行時間がどんなに遅くても、対応する上限時間を超えないことを意味します.
Big-Ω
Big‐Oとは対照的に,これは漸近下限を意味する.
これは、実行時間がどんなに速くても、対応する下限時間よりも速くないことを意味します.
Big-Θ
Big‐OとBig‐Ωの交差の概念.
実行時間はBig−OとBigΩの間にあることを意味する.
点火式の漸近分析方法
繰り返し置換
例1)
int factorial(int n)
{
if(n == 1) return 1;
return n * factorial(n-1);
}
階乗関数nで!命を救うのに要する時間T(n)なら、
T(n)=T(n−1)+c=T(n−1)+c=T(n−2)+c+c=T(n−2)+2c=T(n−3)+3c=...=T(1)+(n−1)c T(1)≤cT(1)+(n−1)c≤c+(n−1)c=cnT(n) = T(n-1) + c\\= T(n-1) + c = T(n-2) + c + c = T(n-2) + 2c\\= T(n-3) + 3c\\= ...\\= T(1) + (n-1)c\\\\\T(1) ≤ c\\T(1) + (n-1)c ≤ c + (n-1)c = cnT(n)=T(n−1)+c=T(n−1)+c=T(n−2)+c+c=T(n−2)+2c=T(n−3)+3c=...=T(1)+(n−1)c T(1)≤cT(1)+(n−1)c≤c+(n−1)c=cn
上記のBig−OからT(n)=O(n)であることが分かる.
例2)
T(n) = T(n-1) + n
与えられたT(1)=1の場合、
T(n)=T(n−1)+n=(T(n−2)−(n−1))+n=(T(n−3)−n−2)−(n−1)+n=....=T(n−(n−1))−n−(n−2)+n−(n−3)+...+(n−2)+(n−1)+n=1+2+3+...+n=n(n+1)/2=(1/2)n2+(1/2)=Θ(n2)T(n) = T(n-1) + n\\= (T(n-2) - (n-1)) + n\\= (T(n-3) - n-2) - (n-1) + n\\= ....\\= T(n-(n-1)) - n-(n-2) + n-(n-3) +... + (n-2) +(n-1) + n\\= 1 + 2 + 3 + ... + n\\= n(n+1)/2 = (1/2)n^2 + (1/2)\\= Θ(n^2)T(n)=T(n−1)+n=(T(n−2)−(n−1))+n=(T(n−3)−n−2)−(n−1)+n=....=T(n−(n−1))−n−(n−2)+n−(n−3)+...+(n−2)+(n−1)+n=1+2+3+...+n=n(n+1)/2=(1/2)n2+(1/2)=Θ(n2)
(例1に示すように、T(1)≦cはT(1)=1ではない.)
例3)
T(n) = 2T(n/2) + n
与えられたT(1)=1の場合、
T(n)=2T(n/2)+n=2(2T(n/22)+n/2)+n =22T(n/22)+2n =...=2k2T(n/2k)+knT(n) = 2T(n/2) + n\\= 2(2T(n/2^2) +n/2) + n\\\\\= 2^2T(n/2^2) + 2n\\\\\= ... = 2^k2T(n/2^k) + knT(n)=2T(n/2)+n=2(2T(n/22)+n/2)+n =22T(n/22)+2n =...=2k2T(n/2k)+kn
こちらです.
k=log2nk = log2nk=log2n
仮に.
では.
n=2kn = 2^kn=2k
そして.
nT(n/n)+nlogn=n+nlogn =Θ(nlogn)nT(n/n)+nlogn\\=n + nlogn\\\\\=Θ(nlogn)nT(n/n)+nlogn=n+nlogn =Θ(nlogn)
を選択します.
でも
k=log2n
と仮定しても大丈夫ですか?この点の実行可能性を証明してください.
T(n)≦T(2 k)≦T(2 n)におけるT(n)=T(2 n)である.
T(n) = T (2k) = T(2n)
したがって,k=log 2 nと仮定しても漸近複雑度は同じである.
推定後証明
T(n)=2 T(n/2)+nの場合
すいてい
T(n)=O(nlogn)=>T(n/2)=O((n/2)log(n/2))T(n)=O(nlogn)\\=> T(n/2) = O((n/2)log(n/2))T(n)=O(nlogn)=>T(n/2)=O((n/2)log(n/2))
そう推測しましょう.
2T(n/2)+n=2c(n/2)log(n/2)+n=cnlogn−cnlog2+n=cnlogn+(1−clog2)n ≤cnlogn2T(n/2)+n\\=2c(n/2) log(n/2) + n\\=cnlogn -cnlog2 + n\\=cnlogn +(1-clog2)n\\\\\≤ cn log n2T(n/2)+n=2c(n/2)log(n/2)+n=cnlogn−cnlog2+n=cnlogn+(1−clog2)n ≤cnlogn
これらの不等号を満たすc
1−clog2≤01≤c1-clog2≤0\\1≤c1−clog2≤01≤c
そのため推定の仕方を証明することができる.
マスターファイルの整理
T(n)=aT(n/b)+f(n)等の形状の点火式
主の定理によって結果がわかる.
仮にそうであれば、
f(n)、h(n)を比較する場合
1.h(n)より大きい->h(n)実行時間の決定
2.f(n)より大きい->f(n)実行時間の決定
3.h(n)=f(n)->実行時間:h(n)*logn
Reference
この問題について(アルゴリズムの漸近表現法と分析), 我々は、より多くの情報をここで見つけました https://velog.io/@bty5596/알고리즘의-점근적-표기법-및-분석テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol