[非プロフェッショナル視点のCS]3アルファベット


1.定義


bigoマーキング法はアルゴリズム効率を容易に表現できるマーキング法である.アルゴリズムの効率は、所与のデータ個数(n)の場合、加算、減算、乗算などの基本演算の回数を意味する.基本演算回数の少ないアルゴリズムの方が効率的であると考えられる.bigoマーキング法は、アルゴリズムの時間的複雑さと空間的複雑さを表すために一般的に用いられる.
ここで、時間複雑度と空間複雑度は、アルゴリズムの時間効率と空間(メモリ)効率をそれぞれ意味する.

時間複雑度=定数関数<ログ関数(バイナリツリー)<線形関数<複数関数<指数関数

Ex)

// O(n)
function example(n) {
	for(var i = 0; i < n; i++){
		console.log(i);
	}
}

// O(n^2)
function example(n) {
	for(var i = 0; i < n; i++){
		console.log(i);
		for(var j = 0; j < n; j++) {
			console.log(j)
		}
	}
}

2.比奥符号規則


1)係数法則(定数無視)


大きなエラーマーキング法は,データ入力値(n)が十分大きいと仮定し,アルゴリズムの効率も入力値の大きさによって影響を受けるため,定数項のような詳細は無視する.
ex) 0(2n) => O(n)

2)合意の法則


合意の法則は、リンゴ値を結ぶ時間複雑度が2つの異なる時間複雑度の和である場合、リンゴ値を結ぶbikoマーキング法も2つの異なるbikoマーキング法の和である.

3)乗算法則


乗算方法は、2つの異なる時間複雑度が乗算されるとbigoマーキング法も乗算されることを意味する.

4)転移法則


転移法則は,同じ時間複雑度が同じbigoマーキング法を有することを示すための簡単な方法である.

5)複数の法則


直感的に言えば,複数の法則は複数の時間複雑度が同じ複数の差を持つbigoマーキング法を表す.
x)f(n)がk次多項式である場合、f(n)はO(n^7)である

2.だからvigo式はなぜ重要なのでしょうか。


アルゴリズム効率の表現法では,速さと遅さの定義は時間で表されるものではない.各ハードウェアの仕様は異なる結果をもたらす可能性があるため、アルゴリズムの効率は「完了に必要なステップの数」によって決まります.簡単に言えば,アルゴリズムが結果を導出する過程におけるステップは50アルゴリズムの5アルゴリズムよりも速い.
BigOがアルゴリズム解析を迅速に行い,いつ何を書くかを迅速に決定できることを理解した.また,自己コードを評価する指標としても用いられる.BigOは,この関数がどのように動作するか,入力寸法に基づいてステップをどのように変更するかについて無謀に観点を置く.
線形探索アルゴリズム:線形探索は1つの探索方式であるため、データが10であれば、物品を探すステップは10である.線形探索アルゴリズムは,sizeをN個と入力するとN個のステップが必要であることを意味する.すなわち,線形探索の時間的複雑さはO(n)である.この式がBigO式です.時間の複雑さをすばやく説明できます.