アルゴリズム第1週TIL
1977 ワード
📌 Chapter 1-アルゴリズム効率分析
📚 アルゴリズムの由来
アルクォリズミ:名前がラテン語に変換されるにつれて、アルゴリズムという用語が使われます.
最初のアルゴリズムはユークリッドの最大公約数アルゴリズムである.
:2つの自然数の最大公約数は、小数と小数を差し引いた最大公約数に等しい!
ex) (18,6) == (12,6) == (6,6) == (0,6)
2つの数のうちの1つが0の場合、残りの値は最大公約数です!
📚 アルゴリズムとは?
📚 アルゴリズムとくせい
📝 最低価格の検索
📝 任意の数値を検索
: n
: log n +1
:ソートであれば二分探索の方が効率的ですが、ソートがなければシーケンス探索の方が効率的です.すなわち,資料の構成によって効率が異なる.
📚 アルゴリズム実行時間
(ループの繰返し回数、関数の呼び出し回数等)
sample(A[],n){
sum=0;
for i = 1 to n
for j = 1 to n{
k= A[1 ~ n] 에서 임의로 n/2 개 뽑았을 때 최대값;
sum=sum+k;
}
return sum;
}
📝 フィボナッチ
int fib(int n){
if(n<=1)
return n;
else
return (fib(n-1)+fib(n-2));
}
T(0) = 1
T(1) = 1
T(n)=T(n-1)+T(n-2)+1(初めての運転なので)
> T(n-2) + T(n-2) == 2xT(n-2)
📌 T(n-1) > T(n-2) 이므로!!
📌 T(n-2) = T(n-3) + T(n-4) +1 > 2 x T(n-4)
> 2^2 X T(n-4)
> 2^3 X T(n-6)
.
.
.
> 2^n/2 X T(n-n) = 2^n/2 X T(0) = 2^n/2
: T(n) > 2^n/2 :フィボナッチ再帰アルゴリズムの実行速度が遅い.どうしたんですか.計算を繰り返しすぎた.
int fib2(int n){
index i;
int f[0~n];
f[0]=0;
if(n>0){
f[1]=1;
for (i=2; i<=n; i++){
f[i]=f[i-1]+f[i-2];
}
return f[n];
}
: T(n) = n+1:計算を繰り返していないので、だいぶ速くなりました
Reference
この問題について(アルゴリズム第1週TIL), 我々は、より多くの情報をここで見つけました https://velog.io/@rlaaltj1765/알고리즘-1주차-TILテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol