점근 표기법
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
점근 표기법은 함수들의 성장률을 비교하는 데 사용되는 수학적 표기법이다. 주로 알고리즘의 효율성을 분석하는 데 활용되며, 빅 오(O), 빅 오메가(Ω), 빅 세타(Θ), 스몰 오(o), 스몰 오메가(ω) 등의 기호를 사용하여 함수의 상한, 하한, 또는 정확한 성장률을 나타낸다. 이러한 표기법들은 함수의 복잡도를 나타내며, 컴퓨터 과학, 특히 계산 복잡도 이론, 알고리즘, 암호학 등에서 알고리즘의 계산 시간을 평가하는 데 널리 사용된다.
더 읽어볼만한 페이지
- 점근 해석 - 마스터 정리
마스터 정리는 분할 정복 알고리즘의 시간 복잡도 분석 도구로서, 점화식을 세 가지 경우로 나누어 재귀 알고리즘의 효율성을 파악하고, 다양한 정렬 및 일반 알고리즘 분석에 활용되지만, 특정 조건에서는 적용이 제한될 수 있습니다. - 점근 해석 - 섭동 이론
섭동 이론은 정확히 풀리는 문제에 작은 변화가 있을 때 급수로 표현하여 근사해를 구하는 방법으로, 초기 해에 보정항을 더하는 방식으로 고전역학, 양자역학 등 다양한 분야에서 활용되며 섭동 형태와 적용 차수에 따라 구분된다. - 알고리즘 분석 - 계산 복잡도
계산 복잡도는 알고리즘의 효율성을 평가하는 척도로, 시간, 공간 등의 자원을 고려하며, 입력 크기의 함수로 표현되고, 빅 오 표기법을 사용하여 알고리즘의 예상 성능을 파악하는 데 중요한 역할을 한다. - 알고리즘 분석 - 비결정적 알고리즘
비결정적 알고리즘은 계산 과정에서 여러 선택지를 가질 수 있는 비결정론적 튜링 기계 또는 비결정성을 활용하는 프로그래밍 패러다임인 비결정론적 프로그래밍과 관련된 알고리즘을 포괄적으로 지칭한다. - 수학 표기법 - 기수법
기수법은 수를 나타내는 방법 또는 체계로, 십진법을 비롯한 다양한 종류가 존재하며, 일진법, 명수법, 위치값 기수법 등으로 분류되고, 가장 널리 사용되는 십진법은 힌두-아라비아 숫자 체계를 기반으로 위치값 기수법의 발전과 0의 도입으로 수학적 계산의 효율성을 높였다. - 수학 표기법 - 중위 표기법
중위 표기법은 사람이 이해하기 쉬운 연산자 표기 방식이지만, 컴퓨터가 구문 분석하기 어렵고 연산 순서를 위해 괄호나 연산자 우선순위 규칙이 필요하다.
점근 표기법 | |
---|---|
개요 | |
종류 | 점근 표기법 |
분야 | 알고리즘 계산 복잡도 이론 |
관련 개념 | 점근적 분석 최악의 경우 평균적인 경우 Ω 표기법 Θ 표기법 o 표기법 ω 표기법 |
상세 정보 | |
목적 | 함수의 점근적 증가율 설명 |
정의 | 함수의 상한을 나타내는 방법 (빅 오 표기법의 경우) |
표기법 | O(f(n)) |
n0 | 상수 n0이 존재하여 n > n0일 때 |g(n)| <= C|f(n)|을 만족하는 상수 C가 존재 |
g(n) | 알고리즘의 실행 시간 또는 사용하는 메모리 양 |
f(n) | g(n)의 상한을 나타내는 함수 |
예시 | |
예시 1 | 만약 g(n) = 3n^2 + 5n + 10이면 g(n) = O(n^2)이다. |
설명 | n이 충분히 커지면 n^2이 n과 상수항보다 훨씬 빠르게 증가하므로 g(n)의 증가율은 n^2에 의해 제한된다. |
수학적 정의 | |
빅 오 표기법 | 함수 g(n)이 O(f(n))에 속한다는 것은, 충분히 큰 n에 대해 |g(n)| <= C|f(n)|을 만족하는 양의 상수 C가 존재한다는 것을 의미한다. |
빅 오메가 표기법 | 함수 g(n)이 Ω(f(n))에 속한다는 것은, 충분히 큰 n에 대해 |g(n)| >= C|f(n)|을 만족하는 양의 상수 C가 존재한다는 것을 의미한다. |
빅 세타 표기법 | 함수 g(n)이 Θ(f(n))에 속한다는 것은, 충분히 큰 n에 대해 C1|f(n)| <= |g(n)| <= C2|f(n)|을 만족하는 양의 상수 C1, C2가 존재한다는 것을 의미한다. |
작은 오 표기법 | 함수 g(n)이 o(f(n))에 속한다는 것은, 임의의 양의 상수 C에 대해 충분히 큰 n이 존재하여 |g(n)| < C|f(n)|을 만족한다는 것을 의미한다. |
작은 오메가 표기법 | 함수 g(n)이 ω(f(n))에 속한다는 것은, 임의의 양의 상수 C에 대해 충분히 큰 n이 존재하여 |g(n)| > C|f(n)|을 만족한다는 것을 의미한다. |
같이 보기 | |
관련 항목 | 알고리즘 시간 복잡도 공간 복잡도 최적화 |
관련 인물 | 폴 바흐만 에드문트 란다우 도널드 크누스 |
참고 문헌 | |
참고 서적 | Introduction to Algorithms (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein) |
참고 논문 | Some problems of diophantine approximation: Part II. The trigonometrical series associated with the elliptic ϑ-functions (G. H. Hardy, J. E. Littlewood, 1914) |
2. 정의
함수 ''f''(''x'')와 ''g''(''x'')에 대해, ''f''(''x'')가 ''O''(''g''(''x''))''라는 것은 상한 점근에 관한 다음 정의와 같다.
이를 혹은 로 표기하기도 한다.
예시로, 두 다항식 ''f'', ''g''를 다음과 같이 정의한다.
:
:
이때 이 된다. 증명은 다음과 같다.
: (일 때)
: (와 같은 방법)
:
:
컴퓨터 과학에서는 좀 더 제한적인 정의가 사용되는데, ''f''와 ''g''는 모두 자연수의 무제한 부분 집합에서 비음의 실수로 가는 함수여야 한다. 그러면 는 양의 정수 과 가 존재하여 모든 에 대해 가 성립함을 의미한다.[3]
점근 표기법은 수학과 컴퓨터 과학에서 주로 사용되며, 알고리즘 분석 등에 유용하다.[1]
는 ''x''가 충분히 클 때 함수 ''f''가 함수 ''g''에 비례하거나 그 이하로 억제됨을 나타낸다.
2. 1. 표기법 문제
라는 표현에서 등호는 일반적인 등호와는 다른 의미를 가진다.[2] 예를 들어, 로 표기할 수는 있지만, 와 같이 쓰는 것은 잘못된 표기이다.[6] 이는 기호의 남용으로 볼 수 있다.이러한 문제를 방지하기 위해, 를 해당하는 함수들의 집합으로 정의하고, 과 같이 표기하기도 한다.[7] 이는 기호의 원래 정의와 잘 부합한다.
3. 여러 가지 점근 표기법
표기법 | 설명 | 수학적 정의 |
---|---|---|
상한 점근 | \lim_{n \to \infty} \left>\frac{f(n)}{g(n)}\right| < \infty | |
하한 점근 | \lim_{n \to \infty} \left>\frac{f(n)}{g(n)}\right| > 0 | |
상한/하한 점근 | 0 < \lim_{n \to \infty} \left>\frac{f(n)}{g(n)}\right| < \infty |
Õ 표기법은 O 표기법의 일종으로, 는 (는 임의의 상수)를 의미한다. 이 표기법은 함수의 로그 증가 비율을 무시하는 의미를 가지고 있다.[2]
4. 성질
5. 다변수 점근 표기법
Big O영어 (그리고 작은 o, Ω 등)는 여러 변수와 함께 사용할 수 있다. 와 가 의 어떤 부분 집합에서 정의된 두 함수라고 가정할 때, 다음과 같이 정의한다.
:는 일 때 이다.
이것은 상수 과 가 존재하여 을 만족하는 모든 에 대해 가 성립하는 것을 의미한다.[1] 어떤 에 대해 이라는 조건은 으로 쓸 수 있으며, 여기서 는 체비쇼프 노름을 나타낸다.[1]
예를 들어,
:
라는 명제는 상수 ''C''와 ''M''이 존재하여
:
또는 중 하나라도 성립할 때마다 위 식이 성립함을 뜻한다.[1]
이 정의는 의 모든 좌표가 무한대로 증가하는 것을 허용한다. 특히,
:
(즉, )라는 명제는
:
(즉, )와는 상당히 다르다.[1]
6. 일반적인 함수의 증가량
알고리즘의 실행 시간을 분석할 때 일반적으로 발생하는 함수 클래스는 다음과 같다. 각 경우에 ''c''는 양의 상수이고, ''n''은 무한대로 증가한다. 일반적으로 느리게 증가하는 함수가 먼저 나열된다.
표기법 | 이름 | 예시 |
---|---|---|
상수 | 정렬된 숫자 배열에서 중앙값 찾기, 계산, 상수 크기 룩업 테이블 사용 | |
역 아커만 함수 | 분리 집합 자료 구조에 대한 작업당 평균 복잡도 | |
이중 로그 | 균일하게 분포된 값의 정렬된 배열에서 보간 검색을 사용하여 항목을 찾는 데 사용된 평균 비교 횟수 | |
로그 | 이진 탐색 또는 균형 잡힌 탐색 트리 자료 구조를 사용하여 정렬된 배열에서 항목 찾기, 이항 힙의 모든 연산 | |
() | 다중 로그 | 행렬 체인 순서는 병렬 RAM(random-access machine)에서 다중 로그 시간에 해결될 수 있다. |
( | 분수 거듭제곱 | k-d 트리에서 검색 |
선형 | 정렬되지 않은 목록 또는 정렬되지 않은 배열에서 항목 찾기, 리플 캐리로 두 개의 n비트 정수 더하기 | |
n 로그 스타 n | Seidel의 알고리즘을 사용하여 단순 다각형의 다각형 삼각 분할 수행 (여기서 | |
선형 로그, 로그 선형, 준선형 또는 "n log n" | 고속 푸리에 변환 수행, 가능한 가장 빠른 비교 정렬, 힙 정렬 및 합병 정렬 | |
2차 | 세로셈으로 두 개의 n자리 숫자 곱하기, 버블 정렬, 선택 정렬 및 삽입 정렬과 같은 간단한 정렬 알고리즘, 퀵 정렬, 셸 정렬 및 트리 정렬과 같은 일반적으로 더 빠른 정렬 알고리즘에 대한 최악의 경우 | |
다항 또는 대수 | 트리 인접 문법 구문 분석, 이분 그래프에 대한 최대 매칭, LU 분해를 사용하여 행렬식 찾기 | |
() | L-표기법 또는 준지수 | 2차 체 또는 숫자체 체를 사용하여 숫자 인수 분해 |
() | 지수 | 동적 프로그래밍을 사용하여 외판원 문제의 (정확한) 솔루션 찾기, 무차별 대입 검색을 사용하여 두 개의 논리적 명제가 동일한지 결정 |
계승 | 무차별 대입 검색을 통한 외판원 문제 해결, 포셋의 모든 제한 없는 순열 생성, 라플라스 전개를 사용하여 행렬식 찾기, 집합의 모든 분할 열거 |
컴퓨터 과학, 특히 계산 복잡도 이론, 알고리즘, 암호학에서는 알고리즘의 계산 시간을 평가하기 위해 ''O''-표기법을 자주 사용한다.
알고리즘의 계산량 평가에 자주 사용되는 ''O''-표기법 함수의 종류는 다음과 같다.
이들 중에서도 특히 중요한 것에는 개별 명칭(다항 시간 등)이 붙어 있다.
아래에서 ''n''은 알고리즘에 입력되는 데이터의 비트 수를 나타낸다.
주의해야 할 것은 알고리즘에 정수 ''N''을 입력할 때이다. ''N''의 비트 수 ''n''은 대략 log2 ''N''이므로, 예를 들어 "다항 시간"이라고 할 때, 이는 ''N''의 다항식이 아닌 ''n''의 다항식을 나타낸다.
표기법 | 이름 | 알고리즘 예시 |
---|---|---|
상수 시간 | (정수의) 짝수/홀수 판별 | |
반복 로그 | Hopcroft와 Ullman에 의한 분리 집합 자료 구조의 탐색 알고리즘 | |
로그 | 정렬된 배열에서의 이진 탐색 | |
분수 지수 함수 | kd 트리에서의 탐색 | |
선형 함수 | 정렬되지 않은 배열에서의 탐색, 이산 웨이블릿 변환 | |
준선형, 선형 로그 | 힙 정렬, 고속 푸리에 변환 | |
제곱 시간 | 삽입 정렬, 이산 푸리에 변환 | |
다항 시간 | 워셜-플로이드 알고리즘 | |
지수 시간 (exponential, geometric이라고도 함) | (현재 가장 빠른) 외판원 문제의 (엄밀 해) 해법 | |
팩토리얼 함수 | 두 논리식의 동형 판별, 외판원 문제의 (가능한) 해의 열거 | |
이중 지수 시간 | AC단일화자의 완비 집합 탐색 |
7. 역사
폴 바흐만이 1894년 그의 저서 《해석적 수론》(''Analytische Zahlentheorie'')[34]의 두 번째 권에서 빅오 표기법을 처음 소개했다.[44] 에드문트 란다우는 이를 채택하고 1909년 리틀오 표기법을 도입하는 데 영감을 주었다.[35] 이 두 표기법은 현재 란다우 기호라고도 불린다.
1914년 G.H. 하디와 J.E. 리틀우드는 새로운 기호 를 도입했다.[16] 이들은 1916년에 과 기호를 도입했는데,[17] 이는 현대 기호 및 의 전신이다.
1970년대에 도널드 커누스는 컴퓨터 과학에서 빅오 표기법을 대중화했으며,[21] 하디의 에 대해 다른 표기 를 제안했고, 하디와 리틀우드의 오메가 표기법에 대한 다른 정의를 제안했다.[21]
하디와 리틀우드가 처음 정의한 표기법[43]은 현재 사용되는 정의와 약간 다르다. 오늘날의 정의에서는 가 ''O''-표기법의 정의에서 크고 작음을 반전시킨 것이지만, 하디 등의 정의에서는 는 ''o(g)''를 만족하지 않는 것으로 정의되었다.[43]
표기법 | 의미 | 비공식적인 정의 | 형식적인 정의 |
---|---|---|---|
는 점근적으로(상수배를 제외하고) 에 의해 위에서 억제된다 | >f(n)| \leq k\cdot g(n) | \exists k>0 \; \exists n_0 \; \forall n>n_0 \;>f(n)| \leq k\cdot |g(n)| | |
두 가지 정의: | HL의 정의: | HL의 정의: | |
는 점근적으로 에 의해 위와 아래 모두에서 억제된다 | 1, ''k''2에 대해, 충분히 큰 ''n''에서 | ||
는 점근적으로 에 의해 지배된다 | k를 고정할 때마다 충분히 큰 ''n''을 취하면 | \forall k>0 \; \exists n_0 \; \forall n>n_0 \;>f(n)| \le k\cdot |g(n)| | |
는 점근적으로 를 지배한다 | k를 고정할 때마다 충분히 큰 ''n''을 취하면 | \forall k>0 \; \exists n_0 \; \forall n>n_0 \;>f(n)| \ge k\cdot |g(n)| | |
는 점근적으로 와 같다 | \forall \varepsilon>0\;\exists n_0\;\forall n>n_0\;\left>{f(n) \over g(n)}-1\right|<\varepsilon |
8. 활용 예시
버블 정렬은 ''n''개의 요소로 이루어진 열을 정렬할 때 O영어( ''n''2 )만큼 시간이 걸린다. 퀵 정렬을 사용하면 평균 시간을 O영어( ''n'' log ''n'')으로 줄일 수 있지만, 최악의 경우에는 O영어( ''n''2 )만큼 걸릴 수 있다.[1]
''n''차 정방 행렬의 고유값을 구하는 알고리즘은 적어도 행렬에 포함된 ''n''2개의 요소를 읽어야 한다. 따라서 고유값 알고리즘의 시간 복잡도는 최소 Ω(''n''2)이다. 즉, 일반적인 행렬의 고유값을 ''n''2보다 더 빨리 계산하는 알고리즘은 없다.[1]
참조
[1]
서적
Introduction to Algorithms
MIT Press and McGraw-Hill
[2]
서적
Handbuch der Lehre von der Verteilung der Primzahlen
https://archive.org/[...]
B.G. Teubner
[3]
서적
Introduction to the Theory of Computation
PWS Publishing
[4]
간행물
https://archive.org/[...]
[5]
웹사이트
On Asymptotic Notation with Multiple Variables
http://people.cis.ks[...]
2015-04-23
[6]
서적
Asymptotic Methods in Analysis
https://books.google[...]
North-Holland
2021-09-15
[7]
서적
Concrete Mathematics
https://books.google[...]
Addison–Wesley
1994-01-01
[8]
간행물
Teach Calculus with Big O
https://www.ams.org/[...]
1998-06-01
[9]
문서
The art of computer programming
Addison Wesley Longman
[10]
문서
Concrete Mathematics: A Foundation for Computer Science (2nd ed.)
Addison-Wesley
[11]
문서
An Fast Direct Solver for Partial Hierarchically Semi-Separable Matrices
[12]
문서
"-Max-Cut: An -Time Algorithm and a Polynomial Kernel"
[13]
서적
Handbuch der Lehre von der Verteilung der Primzahlen
https://archive.org/[...]
B. G. Teubner
1909-01-01
[14]
웹사이트
Introduction to Algorithms, Second Edition, Ch. 3.1
http://highered.mcgr[...]
[15]
서적
Introduction to algorithms
https://www.worldcat[...]
MIT Press
2009-01-01
[16]
간행물
Some problems of diophantine approximation: {{nobr|Part II. The}} trigonometrical series associated with the elliptic {{mvar|θ}} functions
http://projecteuclid[...]
[17]
간행물
Contribution to the theory of the Riemann zeta-function and the theory of the distribution of primes
[18]
간행물
Über die Anzahl der Gitterpunkte in gewissen Bereichen. IV.
[19]
서적
The Riemann Zeta-Function
John Wiley & Sons
[20]
서적
Introduction to Analytic and Probabilistic Number Theory
American Mathematical Society
[21]
간행물
Big Omicron and big Omega and big Theta
1976-04-01
[22]
간행물
Nonuniform complexity classes specified by lower and upper bounds
http://archive.numda[...]
2017-03-14
[23]
서적
Condition: The Geometry of Numerical Algorithms
Springer
[24]
간행물
Big Omega versus the wild functions
http://www.kestrel.e[...]
1985-04-01
[25]
문서
Introduction to Algorithms
[26]
문서
Introduction to analytic and probabilistic number theory
American Mathematical Society
[27]
웹사이트
Asymptotic Notations
http://www.math.uiuc[...]
University of Illinois
2017-03-14
[28]
간행물
[29]
서적
Introduction to Algorithms
MIT Press
[30]
서적
Introduction to Algorithms
https://archive.org/[...]
MIT Press
[31]
서적
Introduction to Algorithms
https://archive.org/[...]
MIT Press
[32]
서적
Introduction to Algorithms
https://mitpress.mit[...]
The MIT Press
[33]
간행물
Set partitioning via inclusion-exclusion
https://www.cs.helsi[...]
2022-02-03
[34]
서적
Analytische Zahlentheorie
https://archive.org/[...]
Teubner
1894-01-01
[35]
서적
Handbuch der Lehre von der Verteilung der Primzahlen
https://archive.org/[...]
B. G. Teubner
1909-01-01
[36]
서적
Asymptotic Expansions
Courier Corporation
[37]
서적
The Theory of the Riemann Zeta-Function
Clarendon Press
[38]
서적
Handbuch der Lehre von der Verteilung der Primzahlen
https://archive.org/[...]
B. G. Teubner
1909
[39]
서적
Orders of Infinity: The 'Infinitärcalcül' of Paul du Bois-Reymond
https://archive.org/[...]
Cambridge University Press
1910
[40]
서적
An Introduction to the Theory of Numbers
Oxford University Press
[41]
서적
Introduction to analytic and probabilistic number theory
American Mathematical Society
[42]
논문
A new estimate for ''G''(''n'') in Waring's problem
[43]
학술지
Some problems of diophantine approximation: Part II. The trigonometrical series associated with the elliptic ϑ-functions
http://projecteuclid[...]
1914
[44]
웹사이트
インターネット・アーカイブ
https://archive.org/[...]
[45]
서적
The Method of Trigonometrical Sums in the Theory of Numbers
https://books.google[...]
Dover
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com