1 minute read

1-2. 빅 오 표기법

어떤 알고리즘을 다른 알고리즘과 비교해서 표현하기 위한 표현방식 : 빅 오 표기법(Big Oh Notation).


아래 그래프는 복잡도가 n인 알고리즘을 표현.

필요한 일, 메모리 또는 시간을 의미하는 y축.

작업 진척도를 나타내는 x축.

img

  • 빅 오 복잡도 (O) : 비교하고자 하는 다른 알고리즘과 같거나 더 빠른 것을 의미한다.

  • 리틀 오 복잡도 (o) : 다른 알고리즘과 빠르지만 같지는 않다.

  • 세타 복잡도 (θ) : 비교 대상인 그래프가 일치할 때, 비교 대상인 다른 알고리즘과 같다.

    (같은 정도로 증가하는 것을 의미.)

  • 빅 오메가 복잡도 (Ω) : 같거나 느린 것을 의미한다.

  • 리틀 오메가 복잡도 (ω) : 같지 않고 느리다.




생각해보기

\1) 빅 오 표기법을 각각 부등호에 대응하면 어떤 것인가요?

O (빅 오 복잡도) : <=

θ (세타 복잡도) : =

Ω (빅 오메가 복잡도) : >=

o (리틀 오 복잡도) : <

ω (리틀 오메가 복잡도) : >




빅 오 표기법 예시

참/거짓 구분 문제.

문제 1.

n^4/3 = O( nlog )

img

적당히 큰 수 1000을 n에 대입하면, 좌변은 10000이고 우변은 log의 밑이 10일 때 O(3000)이다. 10000은 3000 이하가 아니기 때문에 거짓이다.


문제 2.

3n^3 + 4n^2 + 5n + 6 = θ(n^3)

차수가 제일 높은 항을 제외한 나머지는 무시.

즉 n^3 = θ(n^3) 는 참.


문제 3.

n(n−1)/2 = O(n^2)

n^2 = θ( n^2 ) 는 참.


문제 4.

2^n = w(n)

img

적당히 큰 수인 1000을 n에 대입하면, 2^1000 = ω(1000) . 1000은 1000 이상이기 때문에 이 식은 참이다.


문제 5.

n^3 = O(n^2)

n^2는 n^3보다 느리게 증가한다. 거짓.


문제 6.

n^2 = O(n^3)

n^2는 n^3보다 느리게 증가한다. 참.




생각해보기

1)문제 1에서 n=1을 대입하면 어떻게 되나요? 적당히 큰 수를 대입해야 하는 이유는 무엇인가요?

알고리즘 복잡도를 계산하는 이유는 많은 데이터를 처리할 때 얼마나 효율적인 알고리즘이냐에 따라서 엄청난 시간적 차이가 생기기 때문.

컴퓨터는 충분히 빠르기 때문에 작은 데이터에 대해서는 사람이 느끼기에 큰 시간적 차이가 아닐 수도 있지만 큰 수 일때는 같은 데이터 양으로도 몇 초만에 풀릴 문제일지, 무한에 가까운 시간이 소요될 지 결정하는 중요한 요소가 되기 때문에 큰 수를 고려하는 것이 의미있는 복잡도 계산이다.




References

자바로 구현하고 배우는 자료구조 -Rob Edwards (boostcourse)

Updated:

Leave a comment