-
알고리즘을 분석하는 방법은 시간 복잡도와 공간 복잡도로 나뉜다.
- 시간 복잡도 (time complexity) : 알고리즘이 완료되는데까지 소요되는 시간
- 공간 복잡도 (space complexity) : 알고리즘이 완료되는데까지 필요한 메모리 공간
이러한 복잡도의 표기방법으로는 총 3가지가 존재한다.
1. 빅오메가(Big-Omega)
2. 빅세타(Big-Theta)
3. 빅오(Big-O)
이 표기법들을 점근적 표기법 즉 대략적인 표기법이라고 한다.
n을 알고리즘의 input의 크기라고 할 때.
알고리즘의 복잡한 함수를 일일이 나타내지 않고, 알고리즘의 basic operation을 선택해 basic operation의 수를 n에 대한 비례식으로 세우는 것이다. (중요하지 않은 항과 상수 계수를 제거)
각 표기방법에 대해 자세히 알아보자.
빅오메가(Big-Omega)
- 정의 (함수f와 g가 있을 때)
- 알고리즘이 상한선 없이 최소한 어느 정도 걸린다고 알아야 할때 사용
- 점근적 하한, 혹은 최선의 경우라고 한다.
빅세타(Big-Theta)
- 정의 (함수f와 g가 있을 때)
- 점근적 상한 & 하한, 즉 점근적 평균
- 빅오메가와 빅오의 교집합 부분이다.
빅오(Big-O)
- 정의 (함수f와 g가 있을 때)
- 점근적 상한, 혹은 최악의 경우라고 한다.
- 최악의 경우니깐 이보다도 빠를 수 있다는 뜻이이다.
- 가장 일반적으로 사용된다.
3가지 표기법의 관계를 그래프로 표현하면 이러하다
(표기법 예시)
(참고) input n에 함수의 크기는 이러하다.
'잡다한 지식' 카테고리의 다른 글
bitset 사용법 (0) 2020.05.28 bit-mask (0) 2020.04.04 sort 함수 사용법 (0) 2020.03.25 next_permutaion 함수 (0) 2020.03.18 순열과 조합 (0) 2020.03.18