빅 O 표기법

Big O notation
예를 들어 빅의 O표기법:f())∈ O(g())){\displaystyle{\color{ 빨간}())}\in Oᆰ(g()))}}이 M을이 존재한다;0{\displaystyle M>0}(예를 들어, M=1{\displaystyle M=1})과 x0{\displaystyle x_{0}}(예:x0=5{\displaystyle x_{0}일 경우 =5})가 f())≤ M.g()0 { displaystyle x \ x _ { } ) 。{ { } ) \ { Mg ( ) } 。

O 표기법은 인수가 특정 값 또는 무한대로 향하는 경우 함수제한 동작을 설명하는 수학 표기법입니다.Big O는 Paul Bachmann,[1] Edmund Landau,[2] 그리고 다른 사람들에 의해 발명된 표기법의 일종으로, 집합적으로 Bachmann-Landau 표기법 또는 점근 표기법이라고 불립니다.문자 O는 바흐만에 의해 Ordnung의 약자로 선택되었고, 이는 근사 순서를 의미합니다.

컴퓨터 과학에서 빅 O 표기법은 입력 크기가 [3]커짐에 따라 실행 시간 또는 공간 요구 사항에 따라 알고리즘을 분류하는 데 사용됩니다.해석수 이론에서, 빅 O 표기법은 종종 산술 함수와 더 잘 이해된 근사치 사이의 차이에 대한 경계를 표현하기 위해 사용된다; 그러한 차이의 유명한 예는 소수 정리의 나머지 항이다.Big O 표기법은 유사한 추정치를 제공하기 위해 다른 많은 필드에서도 사용됩니다.

Big O 표기법은 함수의 성장률에 따라 특징지을 수 있습니다.동일한 성장률을 가진 다른 함수는 동일한 O 표기법을 사용하여 나타낼 수 있습니다.함수의 성장률을 함수의 순서라고도 하기 때문에 문자 O가 사용됩니다.빅 O 표기법의 관점에서 함수에 대한 설명은 일반적으로 함수의 성장률에 대한 상한만 제공합니다.

Big O 표기법과 관련된 몇 가지 표기는 점근 성장률에 대한 다른 종류의 경계를 나타내기 위해 기호 o, ,, ,를 사용한다.

형식적 정의

추정할 함수인 f를 실수 또는 복소수 가치 함수로 하고 비교 함수인 g를 실수 가치 함수로 한다.두 함수는 모두 양의 실수의 무제한 서브셋에 되며(x ) {x)}는 [4]x의 충분히 큰 모든 값에 대해 엄밀하게 양의 함수가 됩니다. 1은 씁니다.

f {style f 절대값이 g { g 의 정수 배수인 경우. f ( ) ( ()\ f) 다음과 같은 양의 실수 M실수0 x가 존재하는 경우

많은 문맥에서 변수 x가 무한대로 갈 때 우리가 성장률에 관심이 있다는 가정은 기술되지 않은 채로 남겨지고, 누군가는 더 간단하게 다음과 같이 씁니다.

이 표기법은 또한 어떤 실수 a(종종 a = 0)에 가까운 f의 동작을 설명하는 데 사용할 수 있습니다.
0< - < \ 0 < x - a \ delta 모든 x에 대해 { \ M이 존재하는 경우
a에 충분히 가까운 x의 값에 대해 g(x)가 0이 아닌 것으로 선택되기 때문에 다음 두 정의를 모두 상한값을 사용하여 통합할 수 있습니다.
한다면

컴퓨터 과학에서는 조금 더 제한적인 정의가 일반적이다. {\ fg {\ g 모두 의 정수에서 음이 아닌 실수까지의 함수여야 한다. ( ) () {f ( 모든 { [5] 에 대해 fm ()\ fMg( M 및 n0 정의되어 있는 경우필요한 경우 n을 충분히 크게 선택하여0 f fs g {\ g의 도메인에서 한 범위를 제외합니다(예를 들어 log) () { )는 n { n=에서 정의되지 않습니다).

일반적으로 O 표기법은 점근적, 즉 매우 큰 x를 나타냅니다.이 설정에서는 "가장 빠르게" 증가하는 용어의 기여는 결국 다른 용어와 무관하게 됩니다.따라서 다음과 같은 단순화 규칙을 적용할 수 있습니다.

  • f(x)가 여러 항의 합계인 경우, 가장 큰 증가율이 있는 항이 있으면 f(x)를 유지하고 다른 항은 모두 생략할 수 있다.
  • f(x)가 여러 인자의 곱이면 상수(x에 의존하지 않는 제품의 항)를 생략할 수 있습니다.

예를 들어, f(x) = 6x4 - 2x3 + 5라고 가정하고, O 표기법을 사용하여 이 함수를 단순화하여 x가 무한대에 가까워질 때 증가율을 설명한다고 가정합니다.이 함수는 6x4, -2x3 5의 세 가지 항의 합입니다.이 세 항 중 가장 높은 증가율을 보이는 항은 x의 함수로 가장 큰 지수인 6배이다4.이제 두 번째 규칙을 적용할 수 있습니다. 6x4 첫 번째 인자가 x에 의존하지 않는 64 x의 곱입니다. 이 인자를 생략하면 x4 단순해집니다.따라서, 우리는 f(x)x4 "큰 O"라고 말한다. 수학적으로, 우리는 f(x) = O(x4)라고 쓸 수 있다.f(x) = 6x4 - 2x3 + 5 g(x) = x4. 공식 정의를 적용하여 f(x) = O(x4)가 팽창과 동등하다는 문구를 사용하여 이 계산을 확인할 수 있다.

xM0 적절한0 선택과 모든 x > x의 경우. 이를 증명하려면 x = 1M = 13으로 한다0.다음으로 모든 x > x0:
그렇게

사용.

Big O 표기법에는 주로 다음 두 가지 영역이 있습니다.

두 응용 프로그램 모두에서, O(·) 내에 나타나는 함수 g(x)는 일반적으로 가능한 한 단순하게 선택되며, 상수 인자와 낮은 차수의 항을 제외한다.

[citation needed]표기법에는 형식적으로는 가깝지만 현저하게 다른 두 가지 용도가 있습니다.

그러나 이러한 구별은 적용상에만 있으며 원칙적으로는 그렇지 않다. 즉, "빅 O"에 대한 공식 정의는 두 경우 모두 동일하며 기능 [original research?]인수에 대한 제한만 다를 뿐이다.

무한 점근율

알고리즘 분석에 일반적으로 사용되는 함수의 그래프. 각 함수의 입력 크기 n에 대한 연산 수를 나타냅니다.

빅 O 표기법은 알고리즘의 효율을 분석할 때 유용합니다.예를 들어, 크기 n의 문제를 완료하는 데 걸리는 시간(또는 단계 수)은 T(n) = 4n2 - 2n + 2인 것으로 밝혀질 수 있습니다. n이 커지면 n항이2 지배하게 되므로 다른 모든 항이 무시될 수 있습니다. 예를 들어 n = 500일 , 4n항2 2n항만큼 1000배입니다.후자를 무시하면 대부분의 경우 식 값에 거의 영향을 미치지 않습니다.또한, 3 n 또는4 n을 포함하는 식과 같은 다른 식 순서와 비교하면 계수는 무관하게 된다.T(n) = 1,000,000n일지라도2 U(n) = n3 경우 n이 1,000,000(T(1,000,000) = 1,000,0003 = U(1,000,000))보다 커지면 후자는 항상 전자를 초과한다.또한 스텝 수는 알고리즘이 실행되는 머신모델의 상세 내용에 따라 달라지지만 일반적으로 알고리즘 실행에 필요한 스텝 수에 따라 다양한 유형의 머신이 일정하게 변화합니다.따라서 빅 O 표기법은 남은 내용을 캡처합니다.

또는

그리고 알고리즘이 n개의 시간 복잡성을 갖는다고2 가정합니다.기호 "="는 일반적인 수학적인 의미에서 "같다"는 것을 의미하는 것이 아니라 보다 구어체적인 "is"를 의미하는 것이므로, 두 번째 표현은 더 정확하다고 여겨지기도 한다(아래의 "같다" 논의 참조). 반면 첫 번째 표현은 [6]일부에서는 표기법의 오용이라고 여겨지기도 한다.

무한소수 점근율

빅 O는 오차항을 수학적 함수에 대한 근사치로 설명하는 데 사용할 수도 있습니다.가장 유의한 항은 명시적으로 작성된 다음 가장 유의하지 않은 항은 단일 빅 O 항으로 요약됩니다.예를 들어 x가 작을 때 유효지수 급수와 그 두 식을 생각해 보겠습니다.

두 번째 식(O(x3)이 있는 식)은 오류x e - (1 + x + x2/2)의 절대값이 x가 0에 충분히 가까울 때 일부 상수 곱하기3 x임을 의미합니다.

특성.

함수 f를 다른 함수의 유한합으로 쓸 수 있다면 가장 빠르게 성장하는 함수에 따라 f(n)순서가 결정된다.예를들면,

특히, 함수가 n에서 다항식으로 제한될 수 있다면, n은 무한대 경향이 있기 때문에 다항식의 하위 항을 무시할 수 있다.세트 O(nc)와 O(cn)는 크게 다릅니다.c가 1보다 크면 후자는 훨씬 빠르게 성장합니다.어떤 c에서도 n보다 빠르게 증가하는c 함수를 초다항함수라고 합니다.c 형식n 지수 함수보다 느리게 성장하는 함수를 서브 지수 함수라고 합니다.알고리즘은 초다항식 및 준지수 둘 다의 시간을 필요로 할 수 있습니다.이 알고리즘의 로는 정수 인수분해를 위한 가장 빠른 알고리즘과 함수log n n이 있습니다.

로그 안에 있는 n의 거듭제곱은 무시할 수 있습니다.세트 O(log n)는 O(log(nc)완전히 동일합니다.로그는 상수 인자(log(nc) = c log n이므로)로만 다르므로 큰 O 표기법은 이를 무시합니다.마찬가지로 상수가 다른 로그도 동일합니다.반면, 서로 다른 기수를 갖는 지수들은 같은 순서가 아닙니다.예를 들어, 2n 3은 같은n 순서가 아닙니다.

단위를 변경하면 결과 알고리즘의 순서에 영향을 줄 수도 있고 그렇지 않을 수도 있습니다.단위를 변경하는 것은 해당 변수에 상수를 곱하는 것과 같습니다.예를 들어 알고리즘이 n의 순서2 실행되는 경우 n을 cn으로 대체하면 알고리즘이 cn의 순서22 실행되는 것을 의미하며 빅O 표기법에서는 상수2 c가 무시됩니다.이것은 cn = O(n2)22 쓸 수 있습니다.그러나 알고리즘이 2의 순서n 실행되는 경우 n을 cn으로 대체하면 2 n= (2)가cnc 됩니다.이것은 일반적으로 2와 같지n 않다.변수를 변경하면 결과 알고리즘의 순서에도 영향을 줄 수 있습니다.예를 들어 입력번호 x의 자릿수 n으로 측정했을 때 알고리즘의 실행시간이 O(n)이면 n=O(log x)이므로 입력번호 x 자체의 함수로 측정했을 때 알고리즘의 실행시간은 O(log x)가 된다.

제품.

1 ( g )( { { 1} O ( _ {1} )} 、 O (_ {2} )인 1 + 2 (max ( , ){ f _ { + f _ { 1 + f _ { 1 } ( ) O ( }+ O 즉, 이 두 번째 문장은 O( O 볼록 원뿔임을 .

상수에 의한 곱셈

k를 0이 아닌 상수라고 합니다.으로 O { O g)= , f { f { k f)}.

다중 변수

Big O(및 little O, δ 등)는 여러 변수와 함께 사용할 수도 있습니다.여러 변수에 대해 공식적으로 빅 O를 정의하려면 ff와 R 서브셋에 정의되어 있다고 합니다

만약을 경우에만 상수 M{M\displaystyle}, C>0{\displaystyle C>0}가 모든){\displaystyle \mathbf{)}}에 x과 f())≤ Cg()){\displaystyle f(\mathbf{x})\leq Cg(\mathbf{x})}나는 ≥ M{\displaystyle x_{나는}\geq M}일부.{\dis을 위해 존재한다.playst i 마찬가지로[7] 일부 i geq M 할 수 있습니다여기서 M은x-style { \mathbstyle {x} \mathbstyle { \mathm} \mathm}입니다.예를 들어, 스테이트먼트

C와 M의 상수가 존재한다고 단언하다

m M n n M(가) 유지되면 언제든지 사용할 수 있습니다.이 정의를 사용하면 x{\ 모든 좌표가 무한대로 증가할 수 있습니다.특히, 성명서는

(예:" "M " " "{ C M n m는 와는 크게 다릅니다.

(예:" " "M "" " "{displaystyle m C M n

이 정의에서 함수가 정의된 부분 집합은 일변량 설정에서 다변량 설정으로 문장을 일반화할 때 유의합니다.예를 들어 f {\ f { gm) 이면 { fm) m styledisplayf(g m) } f f(f, ) =, m )[ , " {\, \)^{에 정의되어 있습니다.

빅 O를 다변량 함수로 일반화한 것은 이것뿐만이 아니며,[8] 실제로 정의 선택에 불일치가 있습니다.

표기 사항

등호

위에서 정의한 "f(x) is O(g(x)" 문장은 일반적으로 f(x) = O(g(x)로 작성된다.어떤 사람들은 등호 부호의 사용은 이 문장이 갖지 못한 대칭성을 시사하기 때문에 이것을 표기법의 남용이라고 생각한다.de Bruijn이 말했듯이, O(x) = O(x2)이지만 O2(x) = O(x)[9]는 아니다.만약 양측이 번복 될 수 있기 때문에, 또 하나의 편지"우리는 정체성 n에서 O(n2 cm이고 n2)O(n2)=nxn2처럼 바보 같은 추론할 수 있다."[10]에서 크누스 또한, 이 표기법에서,"cus 수학자들이"는 등호 그런 표기에 대해서 대칭이 아니다"을 지적했다 크누스"일방 equalities"로, 같은 발언들에 대해 설명합니다.tomarily 영어에서 "is"라는 단어를 사용할 때 = 기호를 사용합니다. 아리스토텔레스는 남자지만, 사람이 반드시 아리스토텔레스는 아닙니다.[11]

이러한 이유로, 집합 표기법을 사용하여 f(x) g O(g(x)표기하는 것이 보다 정확할 것입니다. , "f(x)는 O(g(x)의 요소" 또는 "f(x)는 O(g(x)의 집합 O(x)에 있다"라고 읽습니다.단,[9][10] 등호 사용은 관례입니다.

기타 연산자

빅 O 표기법은 더 복잡한 방정식의 다른 산술 연산자와 함께 사용할 수도 있습니다.예를 들어, h(x) + O(f(x))는 h(x)의 성장을 갖는 함수의 집합과 f(x)의 성장으로 제한된 부분을 의미한다.따라서,

와 같은 것을 나타내다

n개의 요소 집합에서 작동하도록 알고리즘이 개발되고 있다고 가정합니다.개발자들은 입력 집합의 요소 수를 기준으로 알고리즘이 실행되는 데 걸리는 시간을 나타내는 함수 T(n)를 찾는 데 관심이 있습니다.알고리즘은 먼저 서브루틴을 호출하여 세트 내의 요소를 정렬한 후 자체 연산을 수행합니다.정렬의 시간 복잡도는 O(n2)로 알려져 있으며 서브루틴이 실행된 후 알고리즘은 종료되기 전에 55n3 + 2n + 10단계를 수행해야 합니다.따라서 알고리즘의 전체 시간 복잡도는 T(n) = 55n3 + O(n2)로 표현될 수 있다.여기서 2n + 10이라는 용어는 빠르게 성장하는 O(n2)에 포함된다.이 사용법은 "=" 기호의 형식적 의미 중 일부를 무시하지만, 일종의 편리한 자리 표시자로 큰 O 표기법을 사용할 수 있습니다.

다용도

좀 더 복잡한 용법에서는 O(·)가 방정식의 다른 위치에 나타날 수 있으며, 각 변에 여러 번 나타날 수도 있습니다.예를 들어, n \ \ \ infty 는 다음과 같습니다.

이러한 문장의 의미는 다음과 같다. 왼쪽의 각 O(·)를 만족하는 함수에 대해 오른쪽의 각 O(·)를 만족하는 함수가 있으므로, 이 모든 함수를 방정식으로 대입하면 두 변이 같아진다.예를 들어, 위의 세 번째 방정식은 "어떤 함수 f(n) = O(1)에 대하여, n = g(n)와f(n) 같은 함수 g(n) = On(e)가 존재한다"는 것을 의미한다. 위의 "집합 표기법"에서, 왼쪽이 나타내는 함수 클래스가 오른쪽이 나타내는 함수 클래스의 부분 집합이라는 것을 의미한다.이 용도에서 "="는 일반적인 "=" 사용과는 달리 대칭 관계가 아닌 형식 기호이다.따라서O(1) 예를 들어 n = O(en)는 거짓 진술 O(en) = nO(1) 의미하지 않습니다.

조판

O는 O( 2) \ O[12][13] 의 예시와 같이 이탤릭체로 대문자로 "O" 라고 타이프 세트로 되어 있습니다.TeX 에서는 연산 모드에서 O 를 입력하기만 하면 됩니다.그리스 이름인 바흐만-란다우 표기법과 달리 특별한 기호가 필요하지 않습니다. 일부 작가들은 [14][15]서예O를 사용한다

공통 기능 순서

다음은 알고리즘 실행 시간을 분석할 때 일반적으로 발생하는 함수 클래스 목록입니다.두 경우 모두 c는 양의 상수이고 n은 경계 없이 증가합니다.일반적으로 성장이 느린 기능이 먼저 나열됩니다.

표기법 이름.
일정한 이진수가 짝수인지 홀수인지 판단; 계산(- 고정 크기 조회 테이블 사용
이중 로그 균등하게 분포된 값의 정렬된 배열에서 보간 검색을 사용하여 항목을 찾는 데 소요된 평균 비교 수
로그의 이진 검색 또는 균형 잡힌 검색 트리와 이항 힙의 모든 작업을 사용하여 정렬된 배열에서 항목 찾기

다산술의 매트릭스 체인 순서는 병렬 랜덤 액세스 머신 상에서 다산술 시간에 해결할 수 있다.

분수 검정력 k-d 트리에서 검색
선형의 정렬되지 않은 목록 또는 정렬되지 않은 배열에서 항목 찾기, 리플 자리올림으로 두 개의 n비트 정수 추가
n 로그스타 n 자이델 알고리즘 또는 합집합-찾기 알고리즘을 사용하여 단순 폴리곤의 삼각측량을 수행합니다."" " ( ) {0 , 1+ "( "n )> { ^ { * * } ( n ) {}0 , & \ { if } \ 1 \ 1 \ + \ log ^ * } , \ > { n } ) } } } }
선형, 로그 선형, 준선형 또는 "n log n" 고속 푸리에 변환 수행, 가능한 가장 빠른 비교 정렬, 힙소트병합 정렬
이차적인 두 개의 n자리 숫자에 교재 곱셈, 버블 정렬, 선택 정렬 및 삽입 정렬과 같은 단순한 정렬 알고리즘, 정렬, 셸 정렬, 트리 정렬과 같은 보통 더 빠른 정렬 알고리즘에 바인딩된 (최악의 경우)
다항식 또는 대수적 트리 결합 문법 구문 분석, 초당 그래프에 대한 최대 일치, LU 분해로 결정 요인 찾기

L 주석 또는 하위 지수 2차 체 또는 숫자 필드 체를 사용하여 숫자 인수분해

지수적 동적 프로그래밍을 사용하여 출장 중인 세일즈맨 문제에 대한 (정확한) 해결책을 찾고, 브루트 포스 검색을 사용하여 두 개의 논리문이 동일한지 확인
요인 무차별 검색을 통해 이동 중인 세일즈맨 문제 해결, 포셋의 모든 제한 없는 배열 생성, Laplace 확장으로 결정 요인 찾기, 세트의 모든 파티션 열거

f( ) ( ){ f)= f( ( { f(n)=로 약해지는 경우가 .left 점근 복잡성에 대한 간단한 공식을 도출합니다.어떤 k>로 O(n댁+ε){O(n^{c+\varepsilon})\displaystyle}의 어떤ε 을에 0{\displaystyle k>0}c>0{\displaystyle c>0}, O(소음 한계(통나무⁡ n)k={\displaystyle O(n^{c}(n\log)^{km그리고 4.9초 만})}하위 집합;0{\displaystyle \varepsilon>0} 있는데요, 다항식으로 간주될 수 있다.더 큰 order.

관련 점근 표기법

Big O는 컴퓨터 공학에서 널리 사용된다.다른 관련 표기와 함께 바흐만-란다우 [citation needed]표기의 패밀리를 형성한다.

리틀오 표기법

직관적으로, "f(x) is o(g(x)" ("f(x) is little-o of g(x)" ("f(x) is little-o of g(x)")는 f(x)보다 훨씬 빠르게 성장한다는 것을 의미한다.의 f가 실수 또는 복소수 값 함수이고 g가 실수 값 함수로 정의되어 g(x)가 충분히 큰 x의 모든 값에 대해 엄밀하게 양의 함수로 정의된다고 가정하자.

모든 양의 상수 θ에 대해 다음과 같은 0 존재하는 경우

[16]

예를 들면,

x ( ) { ( x^ { )1 / (1) ,{ 1/x → (1 )는 모두 x \ } 됩니다.

big-O 표기법과 little-o의 정의의 차이는 전자는 적어도 하나상수 M에 대해 참이어야 하지만 후자는 아무리 [17]작더라도 모든 양의 상수 θ대해 유지되어야 한다는 것이다.이와 같이 little-o 표기법은 대응하는 big-O 표기법보다 강력한 표현을 합니다.g의 little-o인 모든 함수도 g의 big-O이지만 g의 big-O인 모든 함수도 g의 little-o인 것은 아닙니다.를 들어 x ( ) { } ( ) 2 ( x) \ o ( ^ {2}} 。

g(x)가 0이 아니거나 적어도 특정 지점을 넘어서 0이 아니므로 f( ) ( () { f)= )의 관계는 과 같습니다.

x ( ) ( ) \ _ {}{\)}= (실제로 이것이 Landau가 little-o 표기법을 정의한 방법입니다[16]).

Little-o는 많은 산술 연산을 존중한다.예를들면,

c가 0이 아닌 이고 f () { f ( )}인 경우 c( g ) { f( g )
f ( { f ( { g이면 ( .{ g G입니다.

또한 다음과 같은 이동성 관계도 충족합니다.

f ( { f ( { g이면 o { f

빅 오메가 표기법

또 다른 점근 표기법은 {로 "big amega"[18]로 읽힌다.이 진술에는 두 가지 광범위하고 양립할 수 없는 정의가 있습니다.

{\ xa

여기서 a는 어떤 실수, θ 또는 -dism입니다.여기f와 g는 a의 근방에서 정의되는 실함수이며 g는 이 근방에서 양수입니다.

하디-리틀우드 정의는 주로 해석수 이론에서 사용되고 크누트 정의는 주로 계산 복잡도 이론에서 사용된다. 정의는 동일하지 않다.

하디-리틀우드 정의

1914년 Godfrey Harold Hardy와 John Edensor Littlewood는 다음과 같이 정의된 새로운 기호 {\[19]를 도입했다.

( ) x f ( ) () 0 . \ _ \ \ infty \ \ { f( x ) } { ( x ) } 、 \ >

f (x ) ((x )\ f) f ( { f)=x)}}의 부정입니다

1916년에 동일한 저자가 다음과 [20]같이 정의된 두 가지 새로운 기호 R (\ _ L (\ _을 도입했습니다.

_ x ( ) ()> \ _ { {\ ;
_ x ( ) () <. \ \_ { \ \ { \ ( x ) { \ ( x ) }

이 기호들은 1924년 [21]에드먼드 란다우에 의해 같은 의미로 사용되었다.Landau 이후 표기는 사용되지 않았습니다. R\ \ \ {{ R } + \ \ Omega { + } 、 L\ \_ { -[citation needed]

이들 3개의 기호 -\ _ ( )± ( ) \ f _}(f( + (( {\ f) 함) _ -( () { f) _ 현재 해석수 이론에서 [22][23]사용되고 있다.

간단한 예

우리는 가지고 있다.

x ( )x 、 \ \ Omega (1) 、 \ x \ \ ,}

더 정확히 말하면

± ( ) { x =\ _)는 x 。{ x \. }

우리는 가지고 있다.

+ ( 、 \ x + = \ Omega ( )、 \ \ infty , 。

더 정확히 말하면

+ + ( \ displaystyle \x + 1→ \ _ { + } ( ) ;{ x \ \; }

하지만

x+ -()x x \ displaystyle \ x + \ = \ _ { - ( )。{ x \ \} 。

Knuth 정의

1976년 도널드 크누스는 더 강한 [24]성질을 설명하기 위해(\ 기호를 사용한 것을 정당화하는 논문을 발표했다.Knuth는 다음과 같이 쓰고 있습니다.지금까지 컴퓨터 과학 분야에서 본 모든 어플리케이션에는 보다 강력한 요건이 있습니다.훨씬 더 적절합니다.그는 정의했다

코멘트와 함께: "는 하디와 리틀우드의에 대한 정의를 바꿨지만, 그들의 정의는 결코 널리 쓰이지 않고,[24] 그들의 정의가 적용될 때 그들이 말하고 싶은 다른 방법들이 있기 때문에 나는 그렇게 하는 것이 정당하다고 생각한다.

바흐만-란다우 표기법

표기법 이름[24] 묘사 형식적 정의 제한[25][26][27][24][19] 정의
스몰 O; 스몰 오 f는 점근적으로 g에 의해 지배된다.
빅오, 빅오, 빅오미크론 {\ f 점근적으로 g(최대 상수 계수)에 의해 위쪽으로 경계된다.
빅세타 f는 점근적으로 g에 의해 위와 아래에 모두 경계된다. ) ( () { f ( n )O ( ( ) } 、 ( n ) ( ( n )、 { f ( n )= \ ( ( n )} 、 ( Knuth 버전)
의 주문으로 f점근적으로 g와 같다.
복잡도 이론의 빅 오메가(Knuth) f는 점근적으로 g에 의해 아래에 경계된다.
스몰 오메가 f는 점근적으로 g를 지배한다
수 이론의 빅 오메가(Hardy-Littlewood) f 점근적으로 g에 의해 지배되지 않는다.

제한 정의는 충분히 n에 대해 g( 0 { g ( ) > 로 하고 있습니다.그 탁자(부분적으로)3위의에서,시, OΘ,∼을,{\displaystyle o,O,\Theta ,\sim,}(의 크누스의 버전)Ω, 기능에ω{\displaystyle\Omega ,\omega}&lt에 해당하는에, ≤, ≈, 음,{\displaystyle<>,\leq ,\approx ,=,}≥,>구분이 진짜 lin에{\displaystyle \geq ,>.}.e[27](하드, (\displaystyle의 y-Littlewood 버전은 이러한 설명에 대응하지 않습니다.)

컴퓨터 공학에서는 O 작은 O, O, Omega 그리고 Knuth의 큰 Omega, 큰 Omega[28]Ⅱ의 을 사용합니다.해석적 숫자 이론에서는 종종 O(\ O O(\O Hardy-Littlewood의 큰 Omega(+, - 또는 ± 첨자 유무) 및 [22]표기를 사용합니다. 오메가{\(\ 표기법은 [29]분석에서 자주 사용되지 않습니다.

컴퓨터 공학에 사용

비공식적으로, 특히 컴퓨터 과학에서, O 표기법은 종종 주어진 [citation needed]맥락에서 빅 세타 δ 표기법을 사용하는 것이 더 사실적으로 적절할 수 있는 점근적 엄격한 경계를 설명하기 위해 다소 다르게 사용될 수 있다.예를 들어, 함수 T(n) = 73n32 + 22n + 58을 고려할 때, 일반적으로 다음 모든 것이 허용되지만, 더 엄격한 경계(아래 번호 2와 3 등)가 느슨한 경계(아래 번호 1 등)보다 강하게 선호됩니다.

  1. T(n) = O(n100)
  2. T(n) = O(n3)
  3. T(n) = Ω(n3)

각각 동등한 영어 문장은 다음과 같습니다.

  1. T(n)는 점근적으로 n보다 빠르게100 성장하지 않는다
  2. T(n)는 점근적으로 n보다 빠르게3 성장하지 않는다
  3. T(n)는 n만큼3 점근적으로 빠르게 성장한다.

따라서 이 세 가지 진술이 모두 사실이지만, 점차 더 많은 정보가 각 진술에 포함되어 있습니다.단, 일부 필드에서는 빅 O 표기법(위 목록의 2번)이 빅 Theta 표기법(위 목록의 3번 항목)보다 더 일반적으로 사용됩니다.예를 들어, T(n)가 입력 크기 n에 대해 새롭게 개발된 알고리즘의 실행 시간을 나타낸다면, 알고리즘의 발명가와 사용자는 점근 하한에 대한 명시적인 진술을 하지 않고 실행하는데 걸리는 시간에 대해 점근 상한을 두는 경향이 있을 수 있다.

기타 표기법

Cormen, Leiserson, Rivest Stein은 알고리즘 입문서에서 다음을 충족하는 함수 집합을 고려합니다.

예를 들어, 올바른 표기법에서는 이 집합을 O(g)라고 부를 수 있다.

[30]

저자들은 집합 멤버십 연산자(set membership 연산자)가 아닌 집합 멤버십을 나타내기 위해 평등 연산자(=)를 사용하는 것은 표기법의 남용이지만,[6] 그렇게 하는 것은 장점이 있다고 말한다.방정식 또는 부등식 내에서 점근 표기법의 사용은 집합 O(g)에서 익명 함수를 나타내며, 이는 낮은 차수의 항을 제거하고 방정식의 불필요한 혼란을 줄이는 데 도움이 됩니다.[31] 예를 들어 다음과 같습니다.

바흐만-란다우 표기법 확장

컴퓨터 과학에서 가끔 사용되는 또 다른 표기법은 δ(읽기 소프트-O)이다: f(n) = δ(g(n)는 일부 [32]k에 대한 f(n) = O(g(nk) log n)의 약어이다.어떤 [33]작가들은 같은 목적으로* O를 쓴다.기본적으로 로그 인자를 무시하는 빅 O 표기법입니다. 왜냐하면 다른 슈퍼 로그 함수의 성장률 효과는 로그 성장 인자에 의한 미세한 점의 효과보다 나쁜 런타임 성능을 예측하는 데 더 중요한 대규모 입력 파라미터의 성장률 폭발을 나타내기 때문입니다.이 표기법은 (로그 n은 항상 상수 k와 θ > 0에 대해 o(nε)이기k 때문에) 눈앞의 문제에 대해 너무 엄격한 경계로 기술된 성장률 내의 "니트픽킹"을 배제하기 위해 자주 사용됩니다.

또한 다음과 같이 정의된 L 표기법

는 lnn \ n에서 다항식지수 함수 사이에 있는 함수에 편리합니다.

일반화와 관련 사용법

노름 벡터 공간에서 값을 취하는 함수에 대한 일반화(절대값을 노름으로 대체)는 간단하며, 여기f와 g는 같은 공간에서 값을 취할 필요가 없다.임의의 토폴로지 그룹에서 값을 취하는 함수 g에 대한 일반화도 가능하다[citation needed].또한 "유향 프로세스" xo → x는 임의의 필터 베이스, 즉 유향 그물 f와 g를 도입함으로써 일반화 될 수 있다.o 표기법은 상당히 일반적인 공간에서의 미분 및 미분 가능성 및 함수의 (점근적) 동등성을 정의하기 위해 사용할 수 있다.

(f와 g가 양의 실수치 함수일 경우 lim f / g = 1로 감소)예를 들어 2x는 Ω(x)이지만 2x - x는 o(x)가 아닙니다.

이력(바흐만-란다우, 하디 및 비노그라도프 표기법)

기호 O는 수 이론가 폴 바흐만이 1894년 그의 책 Analytische Zahlentheory의 두 번째 에서 처음 소개했습니다.[1]숫자 이론가 에드먼드 란다우는 그것을 채택했고, 그래서 1909년에 [2]o 표기법을 도입하도록 영감을 받았다; 그래서 지금은 둘 다 란다우 기호라고 불린다.이러한 표기법은 1950년대에 점근 [34]분석을 위해 응용 수학에 사용되었다.기호('displaystyle 는 1914년 Hardy와 [19]Littlewood에 의해 도입되었다.하디, 리틀 우드는 또한 1916년 기호에 소개된 Ω R{\displaystyle \Omega_{R}}("바로")과Ω 나는{\displaystyle \Omega_{나는}}(" 떠났다")[20]선구자들이 현대 기호Ω+{\displaystyle \Omega_{+}}(" 작은시보다 작지 않다")과Ω −{\displaystyle \Omega_{-}}(" 있지 않다.rt"의 작은 o"를 표시합니다.따라서 오메가 기호(원래의 의미와 함께)는 때때로 "란다우 기호"라고도 불린다.이 표기법(\ 적어도 1950년대부터 [35]수 이론에서 일반적으로 사용되었다.1970년대에 빅 O는 관련된 세타 표기법을 도입한 도널드 크누스에 의해 컴퓨터 과학에서 대중화되었고, 오메가 [24]표기법에 대한 다른 정의를 제안했다.

란다우는 절대 큰 세타와 작은 오메가 기호를 사용하지 않았다.

하디의 기호는 (현대 O 표기법의 관점에서)

go fO( ) { f \ g \ ( g }및 ff ();{ f\ gf \ (g )

(단, 표기법을 정의하거나 사용하지 않았습니다. , 또는 \ll 입니다.Hardy는 1910년 자신의 저서 "Order of Infinity"에서 기호 기타 기호)와 display(\displaystyle을 소개했으며, 세 개의 논문(1910-1913)에서만 그것들을 사용했다.400여 권의 종이와 책에서 그는 꾸준히 란다우 기호 O와 O를 사용했다.

하디의 표기법은 더 이상 사용되지 않는다.한편, 1930년대에 [36]러시아의 숫자 이론가 이반 마트베예비치 비노그라도프는 그의 표기법인 "\을 도입했는데 이는 O\O 대신 숫자 이론에서 점점 더 많이 사용되고 있다.우리는 가지고 있다.

또한 두 표기가 동일한 문서에서 사용되는 경우가 많습니다.

Big-O는 원래 "Order of" (Ordnung, 바흐만 1894)의 약자로 라틴 문자이다.바흐만과 란다우 둘 다 그것을 "오미크론"이라고 부르지 않았다.크누스는 훨씬 늦은 1976년에 오메가 상징에 대한 그의 정의를 언급하면서 수도 오미크론으로 [24]보았다.숫자 0은 사용하지 마십시오.

「 」를 참조해 주세요.

레퍼런스 및 메모

  1. ^ a b Bachmann, Paul (1894). Analytische Zahlentheorie [Analytic Number Theory] (in German). Vol. 2. Leipzig: Teubner.
  2. ^ a b Landau, Edmund (1909). Handbuch der Lehre von der Verteilung der Primzahlen [Handbook on the theory of the distribution of the primes] (in German). Leipzig: B. G. Teubner. p. 883.
  3. ^ Mohr, Austin. "Quantum Computing in Complexity Theory and Theory of Computation" (PDF). p. 2. Retrieved 7 June 2014.
  4. ^ Landau, Edmund (1909). Handbuch der Lehre von der Verteilung der Primzahlen [Handbook on the theory of the distribution of the primes] (in German). Leipzig: B.G. Teubner. p. 31.
  5. ^ Michael Sipser (1997). Introduction to the Theory of Computation. Boston/MA: PWS Publishing Co. 여기: Def.7.2, 페이지 227
  6. ^ a b Cormen,Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. (2009). Introduction to Algorithms (3rd ed.). Cambridge/MA: MIT Press. p. 45. ISBN 978-0-262-53305-8. Because θ(g(n)) is a set, we could write "f(n) ∈ θ(g(n))" to indicate that f(n) is a member of θ(g(n)). Instead, we will usually write f(n) = θ(g(n)) to express the same notion. You might be confused because we abuse equality in this way, but we shall see later in this section that doing so has its advantages.
  7. ^ Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford (2009). Introduction to Algorithms (Third ed.). MIT. p. 53.
  8. ^ Howell, Rodney. "On Asymptotic Notation with Multiple Variables" (PDF). Retrieved 2015-04-23.
  9. ^ a b N. G. de Bruijn (1958). Asymptotic Methods in Analysis. Amsterdam: North-Holland. pp. 5–7. ISBN 978-0-486-64221-5.
  10. ^ a b c Graham, Ronald; Knuth, Donald; Patashnik, Oren (1994). Concrete Mathematics (2 ed.). Reading, Massachusetts: Addison–Wesley. p. 446. ISBN 978-0-201-55802-9.
  11. ^ Donald Knuth (June–July 1998). "Teach Calculus with Big O" (PDF). Notices of the American Mathematical Society. 45 (6): 687. (미개요판)
  12. ^ 도널드 E. 크누스, 컴퓨터 프로그래밍의 예술입니다.제1권 기초 알고리즘, 제3판, 애디슨 웨슬리 롱맨, 1997년섹션 1.2.11.1.
  13. ^ Ronald L. Graham, Donald E. Knuth, Oren Patashnik, 콘크리트 수학: A Foundation for Computer Science (제2판), Addison-Wesley, 1994.섹션 9.2, 페이지 443.
  14. ^ Sivaram Ambikasaran 및 Eric Darve, logN N부분 계층적 반분리 매트릭스를 위한 고속 다이렉트 솔버, J. Scientific Computing 57 (2013년 3호, 477–501).
  15. ^ Saket Saurabh 및 Meirav Zehavi ( , -) \ , n -k ) - - Cut : 12 (2) \ \{O } {*} ( ^{ ) - 시간 알고리즘 및 다항식 커널, 알고리즘 3844 (2018, 80, 18, 18, 18, 18, 14, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 14, 14, 14, 14, 14, 18, 18, 18, 18, 18, 18
  16. ^ a b Landau, Edmund (1909). Handbuch der Lehre von der Verteilung der Primzahlen [Handbook on the theory of the distribution of the primes] (in German). Leipzig: B. G. Teubner. p. 61.
  17. ^ Thomas H. Cormen et al., 2001, 알고리즘 입문, 제2판, 제3.1장
  18. ^ Cormen TH, Leiserson CE, Rivest RL, Stein C (2009). Introduction to algorithms (3rd ed.). Cambridge, Mass.: MIT Press. p. 48. ISBN 978-0-262-27083-0. OCLC 676697295.
  19. ^ a b c Hardy, G. H.; Littlewood, J. E. (1914). "Some problems of diophantine approximation: Part II. The trigonometrical series associated with the elliptic θ-functions". Acta Mathematica. 37: 225. doi:10.1007/BF02401834.
  20. ^ a b G. H. Hardy와 J. E. Littlewood, contrib 리만 제타 함수의 이론과 소수 분포 이론에 대한 기여 ,, Acta Mathematica, vol. 41, 1916.
  21. ^ E. 란다우, "게이센 베레이첸에서 안잘 데르 지터펑크테를 죽인다.링거. 나흐르.게셀.Wiss. Gött.수학-물리1924년 137년-150년
  22. ^ a b 알렉산다르 이비치리만 제타 함수 9장1985년 존 와일리와 아들들
  23. ^ Gérald Tenenbaum, 분석 및 확률론적 수 이론 입문, I.5장.미국 수학 협회, 프로비던스 RI, 2015.
  24. ^ a b c d e f Knuth, Donald (April–June 1976). "Big Omicron and big Omega and big Theta" (PDF). SIGACT News. 8 (2): 18–24. doi:10.1145/1008328.1008329. S2CID 5230246.
  25. ^ Balcázar, José L.; Gabarró, Joaquim. "Nonuniform complexity classes specified by lower and upper bounds" (PDF). RAIRO – Theoretical Informatics and Applications – Informatique Théorique et Applications. 23 (2): 180. ISSN 0988-3754. Retrieved 14 March 2017.
  26. ^ Cucker, Felipe; Bürgisser, Peter (2013). "A.1 Big Oh, Little Oh, and Other Comparisons". Condition: The Geometry of Numerical Algorithms. Berlin, Heidelberg: Springer. pp. 467–468. doi:10.1007/978-3-642-38896-5. ISBN 978-3-642-38896-5.
  27. ^ a b Vitányi, Paul; Meertens, Lambert (April 1985). "Big Omega versus the wild functions" (PDF). ACM SIGACT News. 16 (4): 56–59. CiteSeerX 10.1.1.694.3072. doi:10.1145/382242.382835. S2CID 11700420.
  28. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2001) [1990]. Introduction to Algorithms (2nd ed.). MIT Press and McGraw-Hill. pp. 41–50. ISBN 0-262-03293-7.
  29. ^ 예를 들어, 다음 항목에서 생략됩니다.
  30. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. (2009). Introduction to Algorithms (3rd ed.). Cambridge/MA: MIT Press. p. 47. ISBN 978-0-262-53305-8. When we have only an asymptotic upper bound, we use O-notation. For a given function g(n), we denote by O(g(n)) (pronounced "big-oh of g of n" or sometimes just "oh of g of n") the set of functions O(g(n)) = { f(n) : there exist positive constants c and n0 such that 0 ≤ f(n) ≤ cg(n) for all nn0}
  31. ^ Cormen,Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. (2009). Introduction to Algorithms (3rd ed.). Cambridge/MA: MIT Press. p. 49. ISBN 978-0-262-53305-8. When the asymptotic notation stands alone (that is, not within a larger formula) on the right-hand side of an equation (or inequality), as in n = O(n2), we have already defined the equal sign to mean set membership: n ∈ O(n2). In general, however, when asymptotic notation appears in a formula, we interpret it as standing for some anonymous function that we do not care to name. For example, the formula 2n2 + 3n + 1 = 2n2 + θ(n) means that 2n2 + 3n + 1 = 2n2 + f(n), where f(n) is some function in the set θ(n). In this case, we let f(n) = 3n + 1, which is indeed in θ(n). Using asymptotic notation in this manner can help eliminate inessential detail and clutter in an equation.
  32. ^ Introduction to algorithms. Cormen, Thomas H. (Third ed.). Cambridge, Mass.: MIT Press. 2009. p. 63. ISBN 978-0-262-27083-0. OCLC 676697295.{{cite book}}: CS1 유지보수: 기타 (링크)
  33. ^ Andreas Björklund and Thore Husfeldt and Mikko Koivisto (2009). "Set partitioning via inclusion-exclusion" (PDF). SIAM Journal on Computing. 39 (2): 546–563. 제2.3장, 페이지 551을 참조한다.
  34. ^ Erdelyi, A. (1956). Asymptotic Expansions. ISBN 978-0-486-60318-6.
  35. ^ E. C. Titchmarsh, 리만 제타 함수의 이론 (Oxford; Clarendon Press, 1951년)
  36. ^ 예를 들어 "Waring의 문제에서 G(n)에 대한 새로운 추정치"(러시아어)를 참조하십시오.Doklady Akademii Nauk SSR 5, No-5-6(1934), 249-253.영문 번역: 선정 작품 / 이반 마트베비치 비노그라도프; 구소련 과학아카데미 스테클로프 수학연구소가 그의 90세 생일을 맞아 준비했습니다.Springer-Verlag, 1985년

추가 정보

외부 링크