1. 빅오 표기법이란?
빅 O 표기법이라고도 하는 점근 표기법은 컴퓨터 과학과 수학에서 알고리즘의 효율성과 성능 특성을 설명하기 위해 사용되는 수학적 표기법입니다. 입력 크기가 증가함에 따라 알고리즘의 실행 시간 또는 공간 요구 사항이 어떻게 증가하는지 간결하게 분석할 수 있는 방법을 제공합니다. 점근 표기법의 주요 목적은 입력 크기와 관련하여 함수의 성장률을 표현하는 것입니다.
2. 빅오 표기법의 종류
가장 일반적인 점근 표기법은 빅오 표기법, 리틀오 표기법, 세타 표기법입니다.
1. Big-O 표기법은 함수의 성장률의 상한을 나타냅니다. 예를 들어 함수 f(n) = n^2 + n은 O(n^2)의 큰-O를 가지며, 이는 n^2에 상수를 더한 비율로 증가한다는 의미입니다.
2. 리틀오 표기법은 함수 성장률의 하한을 나타냅니다. 예를 들어, 함수 f(n) = n^2 - n의 리틀오 표기는 o(n^2)이며, 이는 n^2에서 상수를 뺀 속도로 증가한다는 의미입니다.
3. 세타 표기법은 함수의 정확한 성장률을 나타냅니다. 예를 들어 함수 f(n) = n^2의 세타는 Θ(n^2)이며, 이는 n^2의 속도로 증가한다는 것을 의미합니다.
이러한 표기법은 알고리즘의 최악의 경우, 최상의 경우 또는 평균적인 경우의 동작을 설명하는 데 사용됩니다. 알고리즘의 점근 복잡성을 분석하면 입력 크기가 증가함에 따라 알고리즘이 어떻게 확장되는지 이해하고 알고리즘 선택 또는 최적화에 대한 정보에 입각한 결정을 내릴 수 있습니다.
3. 빅오 표기법의 예
O(1)은 일정한 시간 복잡도를 나타냅니다. 성능은 입력 크기에 관계없이 일정하게 유지됩니다.
O(log n)은 대수적 시간 복잡도를 나타냅니다. 성능은 입력 크기에 따라 대수적으로 증가합니다.
O(n)은 선형 시간 복잡도를 나타냅니다. 성능은 입력 크기에 따라 선형적으로 확장됩니다.
O(n^2)는 이차적 시간 복잡도를 나타냅니다. 성능은 입력 크기에 따라 이차적으로 증가합니다.
O(2^n)은 기하급수적인 시간 복잡도를 나타냅니다. 성능은 입력 크기에 따라 기하급수적으로 증가합니다.
4. 결론
점근 표기법은 알고리즘 효율성에 대한 개략적인 분석을 제공하며, 정확한 측정보다는 성장률에 초점을 맞춘다는 점에 유의해야 합니다. 이를 통해 알고리즘을 비교하고 성능을 예측할 수 있지만 입력 크기가 작거나 인수가 일정한 알고리즘의 실제 동작을 포착하지 못할 수도 있습니다. 따라서 이론적 분석 및 알고리즘 설계를 위한 도구로 자주 사용됩니다.
'공부 > 알고리즘' 카테고리의 다른 글
퀵 정렬(Quick sort)이란? (0) | 2023.04.07 |
---|---|
정렬 알고리즘(Sorting algorithm)이란? (0) | 2023.04.07 |