[big-o] 하한과 타이트 바운드의 차이점은 무엇입니까?

답변을 참조하면 Theta (tight bound)는 무엇입니까?

오메가는 알고리즘에 걸리는 최소 시간 인 하한입니다. 그리고 Big-O가 상한선이라는 것을 알고 있습니다. 즉, 알고리즘에 걸리는 최대 시간을 의미합니다. 그러나 나는 Theta에 대해 전혀 모른다.



답변

Big O 는 상한이고 Omega 는 하한입니다. Theta 는 Big O와 Omega를 모두 필요로하므로 타이트 바운드 (상한 및 하한 둘 다 여야 함)라고하는 이유 입니다.

예를 들어 알고리즘 Omega(n log n)은 최소한 n log n시간 이 걸리지 만 상한선은 없습니다. 알고리즘을 취하는 Theta(n log n)것은 최소한 n log n (Omega n log n) 이상 n log n (Big O n log n) 이상 은 걸리지 않기 때문에 훨씬 우선적 입니다.


답변

Θ 표기법 (세타 표기법)은 O 표기법Ω 표기법 (오메가 표기법) 보다 정확하기 때문에 타이트 바운드라고합니다 .

내가 게으르다면 정렬 된 배열에 대한 이진 검색이 O (n 2 ), O (n 3 ) 및 O (2 n )라고 말할 수 있으며 모든 경우에 기술적으로 정확할 것입니다. O 표기법은 상한 만 지정 하고 이진 검색은 이러한 모든 함수에 의해 상한으로 한정 되어 있기 때문 입니다. 이러한 게으른 추정치는 쓸모없습니다 .

Θ 표기법 O 표기법과 Ω 표기법 을 결합 하여이 문제를 해결합니다 . 이진 검색이 Θ (log n)이라고하면 더 정확한 정보를 얻을 수 있습니다. 그것은 알고리즘에 묶여 있음을 알려줍니다 모두 가 빠르거나 느린 진술보다 훨씬 결코 있도록, 주어진 함수에 의해 측면.


답변

만약 무언가가 있다면 있다고 O (F (N)) 수단 거기 있다는 K , g (n)이 되도록 F (N)kg (N) .

만약 무언가가 있다면 있다고 Ω (F (N)) 수단 거기 있다는 K , g (n)이 되도록 F (N)kg (N) .

그리고 당신과 함께 뭔가가있는 경우 O (F (N)) Ω (F (N)) , 다음의 Θ (F (N)를 .

위키 백과 문서 의 경우 약간의 밀도, 괜찮은이다.


답변

점근 상한 은 입력 수에 따라 주어진 알고리즘이 최대 시간 동안 실행됨을 의미합니다.

정렬 알고리즘을 예로 들어 보겠습니다. 배열의 모든 요소가 내림차순이면 정렬하려면의 실행 시간이 걸리며 O(n)상한 복잡성을 보여줍니다. 배열이 이미 정렬 된 경우 값은입니다 O(1).

일반적으로 O-notation상한 복잡도에 사용됩니다.


점근 적 밀착 경계 (c 1 g (n) ≤ f (n) ≤ c 2 g (n))는 함수에 대한 평균 경계 복잡도를 표시하며 경계 한계 (상한과 하한) 사이의 값을 가지며, 여기서 c 1 과 c 2 는 상수입니다.


답변

여기서 최소 시간최대 시간 이라는 문구 는 약간 오해의 소지가 있습니다. Big O 표기법에 대해 이야기 할 때 우리가 관심을 갖는 실제 시간이 아니라 입력 크기가 커질 때 시간이 증가하는 방식입니다. 그리고 일반적으로 우리가 이야기하는 평균 또는 최악의 경우 시간이지 최선의 경우 가 아니라 일반적으로 문제를 해결하는 데 의미가 없습니다.

예를 들어 다른 질문에 대한 수락 된 답변에서 배열 검색을 사용하십시오. 크기 n 목록에서 특정 숫자를 찾는 데 걸리는 시간은 평균적으로 n / 2 * some_constant입니다. 함수로 취급하면 Charlie가 제공 한 의미에서 f(n) = n/2*some_constant보다 빠르게 증가하지 않습니다 g(n) = n. 또한 g(n)어느 쪽 보다 느리게 증가하지 않습니다 . 따라서 g(n)는 실제로 f(n)Big-O 표기법에서 의 상한과 하한 모두 이므로 선형 검색의 복잡성은 정확히 n입니다 . 즉, Theta (n)입니다.

이와 관련하여 다른 질문에 대한 허용 된 답변의 설명은 완전히 정확하지 않습니다. 알고리즘이 일부 입력에 대해 일정한 시간으로 실행될 수 있기 때문에 O (n)이 상한이라고 주장합니다 (이는 위에서 언급 한 가장 좋은 경우입니다 . 이것은 우리가 러닝 타임에 대해 알고 싶은 것이 아닙니다.)


답변

내가 게으르다면 정렬 된 배열에 대한 이진 검색이 O (n2), O (n3) 및 O (2n)라고 말할 수 있으며 모든 경우에 기술적으로 정확할 것입니다.

o- 표기 ( “little-oh”)를 사용하여 점근 적으로 빡빡하지 않은 상한을 나타낼 수 있습니다. big-oh와 little-oh는 비슷합니다. 그러나 big-oh는 점근 적으로 타이트한 상한을 정의하는 데 사용됩니다.


답변

정확히 하한 또는 $ \ omega $ bfon f (n)는 점근 적으로 f (n)보다 작거나 같은 함수 집합을 의미합니다. 즉, U g (n) ≤ cf (n) $ \ 모든 $`un≥ n에 대해 ‘일부 c의 경우 n’$ \ in $ $ \ Bbb {N} $

그리고 f (n)의 상한 또는 $ \ mathit {O} $는 수학적으로 말하는 f (n)보다 어마 어마하게 크거나 같은 함수 집합을 의미합니다.

$ g (n) \ ge cf (n) \ 모든 n \ ge n ‘$, 일부 c, n’$ \ in $ $ \ Bbb {N} $.

이제 $ \ Theta $는 위에 쓰여진 두 개의 교차점입니다.

$\theta $

알고리즘이 “정확히 $ \ Omega \ left (f (n) \ right $”와 같으면 $ \ Theta \ left (f (n) \ right) $라고 말하는 것이 좋습니다.

또는 $
\omega $
가장 낮은 한계를 제공 하는 실제 속도를 제공 한다고 말할 수도 있습니다 .