빅 오 표기법
본 서비스가 제공하는 내용 및 자료가 사실임을 보증하지 않습니다. 시스템은 언제나 실수를 할 수 있습니다. 중요한 의사결정 및 법리적 해석, 금전적 의사결정에 사용하지 마십시오.
빅 오 표기법(Big O notation)은 함수의 점근적 증가율을 나타내는 표기법으로, 컴퓨터 과학에서 알고리즘의 시간 복잡도와 공간 복잡도를 분석하는 데 널리 사용된다. 입력 크기 n이 무한히 커질 때 알고리즘의 실행 시간이나 메모리 사용량이 어떻게 변화하는지를 상한 기준으로 기술하며, 최악의 경우 성능을 보장하는 데 초점을 둔다. 이 표기법은 독일 수학자 파울 바흐만이 1892년 처음 도입하고 에드문트 란다우가 대중화하였으며, 이후 도널드 커누스가 컴퓨터 과학에 도입하여 널리 퍼뜨렸다.
개요
빅 오 표기법은 알고리즘의 성능을 대략적으로 분석하기 위해 사용한다. 입력 크기 이 무한히 커질 때 실행 시간이 어떻게 변화하는지를 평가하는 것이 주요 목적이다. 이 표기법은 정확한 연산 횟수보다는 데이터 증가에 따른 성능 변화의 추이를 파악하는 데 중점을 둔다.
빅 오 표기법은 함수의 점근적 상한을 제공한다. 즉, 어떤 함수 이 이라는 것은 충분히 큰 에 대해 이 의 상수 배를 넘지 않는다는 의미이다. 이를 통해 알고리즘의 최악의 경우 성능을 보장할 수 있다.
역사적 배경
빅 오 표기법은 독일 수학자 파울 바흐만이 1892년 정수론에 관한 저서에서 처음 사용하였다. 문자 'O'는 근삿값의 순서를 의미하는 독일어 'Ordnung'에서 따왔다. 이후 에드문트 란다우가 이 표기법을 널리 보급하여 '바흐만-란다우 표기법'이라고도 부른다.
컴퓨터 과학에서는 도널드 커누스가 1960년대 후반 《The Art of Computer Programming》에서 빅 오 표기법을 알고리즘 분석에 도입하면서 널리 사용되기 시작하였다. 커누스는 또한 빅 오메가(Ω)와 빅 세타(Θ) 표기법을 함께 소개하여 점근 표기법 체계를 완성하였다.
정의
빅 오 표기법의 수학적 정의는 다음과 같다. 과 이 양의 정수 에 대해 정의된 함수라고 할 때, 이라는 것은 다음 조건을 만족하는 양의 상수 와 가 존재함을 의미한다.
즉, 충분히 큰 에 대해 이 의 상수 배 이하로 제한된다는 뜻이다. 이 정의는 알고리즘의 최악의 경우 실행 시간이 의 증가율을 넘지 않음을 보장한다.
예를 들어, 일 때 이다. , 로 잡으면 이 성립하기 때문이다.
주요 시간 복잡도
알고리즘 분석에서 자주 등장하는 시간 복잡도 클래스는 다음과 같다.
| 표기법 | 명칭 | 설명 | 예시 알고리즘 |
|---|---|---|---|
| 상수 시간 | 입력 크기와 관계없이 일정한 실행 시간 | 배열 인덱스 조회, 해시 테이블 삽입 | |
| 로그 시간 | 입력 크기가 증가할 때 실행 시간이 로그 형태로 증가 | 이진 탐색, 균형 이진 트리 검색 | |
| 선형 시간 | 입력 크기에 비례하여 실행 시간 증가 | 배열 전체 순회, 선형 탐색 | |
| 선형 로그 시간 | 효율적인 정렬 알고리즘에서 자주 나타남 | 병합 정렬, 힙 정렬, 퀵 정렬(평균) | |
| 이차 시간 | 입력 크기의 제곱에 비례 | 버블 정렬, 선택 정렬, 삽입 정렬(최악) | |
| 지수 시간 | 입력 크기가 커질수록 실행 시간이 급격히 증가 | 피보나치 수열 재귀 계산, 부분 집합 생성 | |
| 팩토리얼 시간 | 가장 느린 증가율 중 하나 | 외판원 문제(TSP)의 완전 탐색 |
이 외에도 (삼차 시간), 등 다양한 복잡도가 존재한다.

기타 점근 표기법
빅 오 표기법 외에도 알고리즘의 성능을 다양한 관점에서 분석하기 위한 점근 표기법이 존재한다.
- 빅 오메가(Ω) 표기법: 알고리즘 성능의 하한을 나타낸다. 은 충분히 큰 에 대해 이 의 상수 배 이상임을 의미한다. 즉, 최선의 경우 성능을 표현할 때 사용한다.
- 빅 세타(Θ) 표기법: 상한과 하한을 동시에 나타낸다. 은 이면서 일 때 성립하며, 알고리즘의 평균적인 성장률을 정확히 기술한다.
- 리틀 오(o) 표기법: 은 이 보다 느리게 증가함을 의미한다. 즉, 이다.
- 리틀 오메가(ω) 표기법: 은 이 보다 빠르게 증가함을 의미한다. 즉, 이다.
이러한 표기법들은 알고리즘의 성능을 다각도로 분석하고 비교하는 데 유용하다.
활용과 한계
빅 오 표기법은 컴퓨터 과학에서 알고리즘의 효율성을 비교하는 표준 도구로 자리 잡았다. 특히 대규모 데이터를 다루는 시스템에서 알고리즘 선택의 기준이 된다. 또한 수학에서는 해석적 수론에서 수론적 함수의 증가 경계를 표현하거나, 미적분학에서 멱급수의 오차를 제한하는 데 사용된다.
그러나 빅 오 표기법에는 몇 가지 한계가 있다. 첫째, 상수 계수를 무시하므로 실제 실행 시간이 같은 복잡도 클래스 내에서 크게 다를 수 있다. 둘째, 최악의 경우만 고려하므로 평균적인 성능이나 실제 입력 분포를 반영하지 못할 수 있다. 셋째, 입력 크기가 작을 때는 점근적 분석이 실제 성능과 맞지 않을 수 있다. 따라서 빅 오 표기법은 알고리즘의 이론적 분석 도구로 사용되며, 실제 구현에서는 추가적인 벤치마킹이 필요하다.