프롤로그 : 큰 표기법은 인간의 마음에 사랑받는 언어의 일부로서 일부 표기법의 힘과 모호성의 전형적인 예입니다. 얼마나 많은 혼란이 있었더라도, 우리가 쉽게 식별하고 효율적으로 동의 할 수있는 아이디어를 전달하는 표기법의 선택으로 남아 있습니다.O
나는 큰 표기법의 의미를 완전히 이해 합니다. 내 문제는 우리가 라고 말할 때 , 여기서 은 크기 입력에 대한 알고리즘의 실행 시간입니다 .OT(n)=O(f(n))T(n)n
죄송하지만 큰 표기법 의 의미를 이해하면 문제가 없습니다 .O
나는 그것의 의미를 이해합니다. 그러나 과 은 서로 다른 두 가지입니다. 은 정확한 숫자이지만 는 숫자를 내뿜는 함수가 아니므로 기술적으로 은 과 같다고 말할 수 없습니다. 당신 은 의 가치 가 무엇입니까, 당신의 대답은 무엇입니까? 답이 없습니다.T(n)O(f(n))T(n)O(f(n))T(n) O ( f ( n ) ) O ( f ( n ) ) O(f(n))O(f(n))
중요한 것은 의미론 이다. 중요한 것은 사람들이 관심있는 점근 적 행동이나 시간 또는 공간의 복잡성을 설명하는 정확한 해석에 쉽게 동의 할 수있는 방법입니다. 의 기본 정확한 해석 / 정의 은 Wikipedia 에서 번역 된대로T(n)=O(f(n))
T 는 실수 또는 복소수 값의 함수이고 는 실수 값의 무한한 부분 집합에 정의 된 실제 값 함수이므로 은 충분히 큰 값에 대해 모두 양수입니다 . 충분히 큰 모든 값에 대해 의 절대 값은 최대 의 양의 상수 배수입니다 . 즉, 양의 실수가 존재 과 실수 그러한가ff(n)nnT(n)f(n)Mn0
for all n≥n0,|T(n)|≤Mf(n) for all n≥n0.
이 해석은 정의 로 간주 됩니다 . 다양한 방식으로 크게 도움이 될 수있는 다른 모든 해석 및 이해는 부차적이며 결과적입니다. 모든 사람 (적어도 모든 답변자)은이 해석 / 정의 / 의미에 동의합니다. 이 해석을 적용 할 수 있다면 대부분의 시간이 좋을 것입니다. 긴장을 풀고 편안하십시오. 영어 나 프랑스어의 불규칙성 또는 대부분의 자연어에 대해 너무 많이 생각하지 않는 것처럼 너무 많이 생각하고 싶지 않습니다. 해당 정의에 따라 표기법을 사용하십시오.
T(n) 은 정확한 숫자이지만 는 숫자를 내뿜는 함수가 아니므로 기술적으로 은 과 같다고 말할 수 없습니다. 당신 은 의 가치 가 무엇입니까, 당신의 대답은 무엇입니까? 답이 없습니다.O(f(n))T(n) O ( f ( n ) ) O ( f ( n ) ) O(f(n))O(f(n))
실제로, 질문이 잘못 제기 되었기 때문에 대답이 없었습니다. 은 정확한 숫자를 의미하지 않습니다. 이름이 이고 형식 매개 변수가 의 에 된 )를 나타냅니다. 라고 쓰면 정확하고 훨씬 더 정확합니다 . 경우 매핑하는 함수이며 에 및 함수 맵이다 에 , 또한 기록에 종래 또는T(n)Tnnf(n)T=O(f)Tnn2fnn3f(n)=O(n3)n2=O(n3)O. 정의는 가 함수인지 여부를 나타내지 않습니다. 왼쪽이 오른쪽과 같다고 말하지는 않습니다! 등호는 평등의 의미에서 평등을 의미하지 않는다고 의심 할 권리가 있습니다. 평등의 양쪽을 바꿀 수 있으며 동등한 관계에 의해 뒷받침되어야합니다. (등호 남용의 또 다른 유명한 예는 일부 언어에서 보다 성가신 대신 대부분의 프로그래밍 언어에서 할당을 의미하기 위해 등호를 사용하는 것입니다 .)O:=
우리가 아니라 하나의 평등에 대해 우려하는 경우 (내가 아니라 언어를 남용하기 시작하고 그것. 평등하지 않지만, 그것은 평등이 거기 표기법에 등호가 또는 그것이 평등의 일종으로 해석 될 수 있기 때문에 ), 이면이 답변이 완료됩니다.T(n)=O(f(n))
그러나 문제는 실제로 계속됩니다. 예를 들어 이란 무엇입니까? 이 평등은 위의 정의에 포함되지 않습니다. 자리 표시 자 규칙이라는 또 다른 규칙을 소개하려고 합니다. 다음은 Wikipedia에 명시된 자리 표시 자 규칙에 대한 전체 설명입니다 .f(n)=3n+O(logn)
더 복잡한 사용법에서 는 방정식의 여러 위치에서 각면에 여러 번 나타날 수 있습니다. 예를 들어, 다음은 됩니다.O(⋯)n→∞
(n+1)2=n2+O(n)
(n+O(n1/2))(n+O(logn))2=n3+O(n5/2)
nO(1)=O(en)
다음과 같은 문장의 의미는 각각 만족하는 모든 기능에 대한 좌측을 각각 만족하는 일부 기능있다 오른쪽에되도록 방정식에 모든 이러한 기능을 대체 양측을 동일하게 만듭니다. 예를 들어, 위의 세 번째 방정식은 "모든 함수 에 대해 와 같은 . "O(⋯)O(⋯)f(n)=O(1)g(n)=O(en)nf(n)=g(n)
실제 자리 표시 자 규칙의 다른 예 를 보려면 여기 를 확인 하십시오 .
내가 지금까지 큰 표기법에 대한 이론적 인 설명을 사용하지 않았다는 것을 알았을 것입니다. 내가 한 것은 " 은 함수의 집합 "과 같은 이론적 인 설명 없이도 보여주기 위한 것입니다. 우리는 여전히 큰 표기법을 완전하고 완벽하게 이해할 수 있습니다 . 이 이론적 설명이 유용하다면 어쨌든 계속 진행하십시오.OO(f(n))O
big , , small , small , multivariable 사용법 등과 같이 점근선 동작 표기법 패밀리에 대한보다 자세한 분석 및 사용 패턴에 대해서는 CLRS의 "점근선 표기법"섹션을 확인할 수 있습니다 . 위키 백과 항목 도 꽤 좋은 참조입니다.ΘΩoω
마지막으로, 여러 변수 1 과 2 로 큰 표기법 이있는 고유 한 모호성 / 논쟁이 있습니다. 그것들을 사용할 때 두 번 생각하고 싶을 수도 있습니다.O