점근 표기법이라고 하면 와닿지 않아도
아마 시간 복잡도 혹은 O(n) 이라면 익숙하실 것 같습니다.
점근 표기법에 대해 알아봅시다.
-점근 표기법의 종류
𝜪 | 빅오 (Big-Oh) | Upper Bound (상한) |
𝜴 | 빅오메가 (Big-Omega) | Lower Bound (하한) |
𝜭 | 세타 (Theta) | Tight Bound (딱 맞는) |
-빅오 표기법
빅오 표기법은 최악의 경우(상한)을 나타내는 표기법입니다.
이떄 상한이라는 말의 의미는, 아무리 느려도 빅오 표기법으로 표현한 것보다는 빠르다는 것입니다.
보통 어떤 알고리즘의 실행 시간이 주어졌을 때 가장 높은 차수를 사용합니다.
-빅오메가 표기법
빅오메가 표기법은 최선의 경우(하한)을 나타내는 표기법입니다.
하한이라는 말의 의미는 아무리 느려도 빅 오메가로 표현한 것보다 빠르다는 의미입니다.
정의에서 볼 수 있듯 빅오 표기법에서 부등호의 방향만 바뀐 것을 확인할 수 있죠.
빅 오메가는 하한을 나타내는 표기법이기에 다양하게 나타낼 수 있다는 것도 알아두시면 좋을 것 같습니다.
-세타
마지막으로, 세타입니다. 우선 세타의 정의부터 살펴보죠.
정의를 보면 알 수 있듯, 하한과 상한 사이의 함수입니다. 식으로 보기 어려울 수 있지만 그림으로 보면 바로 이해가 될 것 같습니다.
아래 그림에서 볼 수 있듯, 세타는 빅오와 빅오메가의 교집합으로도 볼 수 있습니다.
첫 번째 그래프는 big-O의 그래프입니다.
N이상인 수에서는 cf(n)이 g(n)의 상한을 나타내고 있습니다.
두 번째 그래프는 big-Omega의 그래프입니다.
N이상인 수에서는 cf(n)이 g(n)의 하한을 나타내고 있습니다.
마지막 세 번째 그래프는 Theta 그래프입니다.
N이상인 수에서는 cf(n) <= g(n) <= df(n)인 것을 확인할 수 있습니다.
N보다 작은 수에서는 다르게 나올 수 있지만, 수가 커져갈수록 실행 시간도 늘어나기에
큰 수에 중점을 두고 있다는 것을 인지해야 합니다.
하지만, 우리가 처리해야 할 데이터의 크기가 작은 경우, 차수가 높은 알고리즘이 더 빠를수도 있으므로 위의 표기법들이 모든 수에서 절대적이다 라고 볼 수는 없을 것 같습니다.
'DataStructure > Algorithm' 카테고리의 다른 글
QuickSort (퀵정렬) (0) | 2024.09.16 |
---|---|
MergeSort (병합 정렬) (2) | 2024.09.15 |
Sequential Search vs Binary Search ( 순차 탐색 vs 이진 탐색) (0) | 2024.09.13 |
마스터 정리와 증명 (2) | 2024.09.12 |
Karatsuba Algorithm (0) | 2024.09.11 |