1

는 예를 들어 이진 검색을 가지고 있습니다, 시간을 실행하는 가장 좋은 경우는 먼저 비교를 얻을 것이다 때점근 범위와 실행 시간 사이의 관계?

key_to_find == (Imin으로 + IMAX)/2;

그리고 최상의 실행 시간은 O (1)로 표시됩니다. 나는 완전히 이해하지만 나를 혼란스럽게하는 이유는 O (1)이 사용되고 왜 Θ (1)이나 다른 표기법을 사용할 수 없는지입니다.

실행 시간 (가장 좋음, 평균 또는 최악의 경우)을 나타 내기 위해 어떤 표기법을 사용해야하는지 식별하는 방법.

+0

최상의 사례에 대해 이야기하는 것은 의미가 없습니다. 가장 좋은 경우는 거의 항상 매우 빠르게 만들어 질 수 있습니다. 그것은 아무것도 의미하지 않습니다. –

+0

나 자신을 바꾸어서 말하기 : 실행 시간 (가장 좋음, 평균 또는 최악의 경우)을 나타 내기 위해 어떤 표기법을 사용해야합니까? – Akina91

+0

최선의 시간을 낭비해서는 안됩니다. 흥미롭지 않습니다. 중요한 것은 아닙니다. 그것에 대해 이야기하기 시작하는 것은 말이되지 않습니다. 다른 경우에 대한 표기법의 선택에 관해서는, 당신이 무엇을 말하고 싶은지에 달려 있습니다. [위키 피디 어] (http://en.wikipedia.org/wiki/Big_O_notation)에는이 모든 것이 있습니다. 일반적으로 Θ는 가장 유용하고 정확하므로 가능한 경우 언제든지 사용하십시오. –

답변

2

O 표기법과 Θ 표기법은 최상의 경우, 평균 또는 최악의 경우와 관련이 없습니다. 함수의 점근 적 경계에 사용됩니다. 넌 작성할 수 47N의 LG N = O (N 엑스 N) 3N^2 + 4N = O (N^2)

그리고 O Θ 표기법 차이가있다. O는 "최대 (어떤 상수 계수를 사용함)"을 의미하고, Θ는 "같음 (일정한 계수를 사용함)"을 의미합니다 (예 : 47nln n = O (n^2)). 그러나 Θ (n^2)가 아닙니다.

최상의 케이스, 평균 케이스 또는 최악의 케이스를 표현하려면 보통 다음과 같이 명시 적으로 작성하십시오. "가장 좋은 케이스는 O (1) (또는 Θ (1))이며 평균 케이스는 O (lg n)입니다. 최악의 경우는 O (n)입니다. "

때때로 "실행 시간은 O (x)"입니다. 그러면 실행 시간은 x에 가장 비례합니다. "running time is Θ (x)"라고 말하면, 실행 시간은 항상 x에 비례 함을 의미합니다.

1

원하는 표기법을 사용할 수 있습니다. 빅 세타 (Big Theta)는 가장 정확하므로 알고있을 때마다 사용해야합니다. 부수적으로, O (1)은 복잡도 분석의 맥락에서 Θ (1)와 같습니다 (연산 수가 정수 인 경우, 즉 복잡도로 O (1/n)을 가질 수없는 경우).

+1

에 대해 "O (1)은 Θ (1)과 같습니다." - 아니요 아니요 – usamec

+2

복잡도 분석의 맥락에서 (연산 수가 정수인 경우, 즉 O (1/n)을 복잡한 것으로 가질 수 없음) 나는 그것이 맞다고 생각합니다. 그렇지 않은 사례를 제공해 주시겠습니까? –

+0

nln n = O (n^2) 그러나 Θ (n^2)가 아닙니다. – usamec