알고리즘 복잡도
알고리즘 복잡도 정리
시간 복잡도¶
알고리즘의 실행 속도를 말하며 반복문에 큰 영향을 받는다. 주요 표기법은 아래와 같다.
- Big O 표기법(Big O notation)
- \(O(N)\), 알고리즘 최악의 실행 시간을 표기. 가장 일반적으로 사용
- 오메가 표기법(Big Omega notation)
- \(\Omega(N)\), 알고리즘 최상의 실행 시간을 표기
- 세타 표기법(Big Theta notation)
- \(\Theta(N)\), 알고리즘 평균 실행 시간을 표기
- 알고리즘의 상/하한 실행 시간에 대한 점근적 접근을 통한 평균 시간 복잡도 도출
Big O 표기법¶
아래와 같은 형태의 함수로 알고리즘 실행 시간을 표기하며 \(\lim_{x \to \infty} f(x)\) 인 것을 전제로 계산하기 때문에 의미 없는 상수 및 배수는 표기하지 않는다.
입력된 \(N\)의 크기에 따라 기하급수적으로 시간 복잡도가 늘어날 수 있으며, 속도의 순위는 아래와 같다.
공간 복잡도¶
알고리즘이 사용하는 메모리 크기를 말한다. 최근에는 컴퓨터의 하드웨어 성능이 매우 강력해짐에 따라 특수한 환경이 아니라면 잘 사용하지 않는다.