Hyunebee

점근적 표기법 본문

Java/쉽게 배우는 자료구조

점근적 표기법

Hyunebee 2022. 3. 17. 12:36

점근적 표기법 

우리는 알고리즘의 복잡도를 점근적 표기법으로 표기한다.

 

대표적인 표기법으로 3가지가 있다.

빅오 -> 점근적 상한

세타 -> 점근적 동등

오메가 -> 점근적 하한

 

빅오표기법

만약 ­Ο(n^2)이라면 최고차항이 n^2을 넘지않는 집합을 말하는 것이다. 즉 n, n^2 + 3n + 2, nlogn등 모두 포함이 된다.

기껏해야 n^2이라는 뜻이다.  만약 nlogn을 Ο(n^2)으로 표현해도 틀린말은 아니지만 더욱 정확하게 Ο(nlogn)으로 쓰는것이 더욱 적절한 정답이다. 

 

수학적 정의

O(g(n)) = { f(n) | ∃c > 0, n0 ≥ 0 s.t.∀nn0, cg(n) ≥ f(n) }

쉽게 설명해서 말하자면 충분히 큰 n에 대해서 cg(n) ≥ f(n)을 만족하는 상수 c가 존재한다. f(n) = O(g(n)) f g보다 빠르게 증가하지 않는다

 

오메가표기법

오메가 표기법은 빅오표기법과는 반대로 Ω(n)이라면 최고차항이 n보다 작지않는 모든 함수의 집합을 뜻한다.

 

수학적 정의

Ω(g(n)) = { f(n) | ∃c > 0, n0 ≥ 0 s.t.∀nn0, cg(n)≤f(n) }

(n) = Ω(g(n)) ⇒ fg보다 느리게 증가하지 않는다

 

 

세타표기법

Θ(n)이라면 최고차항이 n이 넘지않는 모든 함수 집합을 뜻한다.  

 

수학적 정의

Θ( g(n) ) = O( g(n) ) ∩ Ω( g(n) )

f(n) = Θ(g(n)) ⇒ fg와 같은 정도로 증가한다