하한과 타이트 바운드의 차이점은 무엇입니까?


99

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

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

답변:


154

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) 이상 은 걸리지 않기 때문에 훨씬 우선적 입니다.


7
오 .. 이제 "꽉 묶인"이라는 용어는 나에게 꽤 자명하게 보입니다. 고마워 크리스. 바보 같아요, 아마도 복잡한 아이디어를 기대하고 있었을 것입니다. :)
Adeel Ansari

6
네, 멋진 표기법이 많이 던져졌지만 일단 그것을 당신의 벨트 아래에 넣으면 너무 복잡하지는 않습니다.
Chris Bunch

4
Virginia Tech에서 무료로 제공하는이 문서는 복잡한 알고리즘 간의 성능 차이를 예제와 함께 설명하고 점근 분석을 간략하게 설명합니다. people.cs.vt.edu/shaffer/Book/C++3e20120102.pdf
Alan

"Theta (n log n)를 취하는 알고리즘은 최소한 n log n (Omega n log n)을 사용하고 n log n (Big O n log n) 이하)를 사용하기 때문에 훨씬 우선적입니다."는 무엇을 의미합니까? 에서 적어도 Omega (nlogn) 및 max BigO (nlogn)에서 말한 것처럼 알고리즘의 정확한 복잡성입니까?
Nikhil Verma

1
간단히 말해서 최악의 경우 상한 (Big (O))이라고 부를 수 있습니까? 평균적인 경우로 타이트 바운드? 하한 (오메가)이 가장 좋은 경우?
Revanth

113

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

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

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


11
If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case-컴퓨터 세계의 대부분의 사람들은 모두가 주로 Big O의 복잡성에 대해서만 이야기하기 때문에 게으른 것 같습니다.
RBT

If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case누군가가 이것과 혼동하는 경우 : 점근 적으로 빡빡한 small-o 표기법이 아닌 그런 종류의 함수가 사용됩니다. 예 :-바운드 2n ^ 2 = O (n ^ 2)는 점근 적으로 빡빡하지만 바운드 2n = O (n ^ 2)는 그렇지 않습니다. 더 읽기 : stackoverflow.com/questions/1364444/…
Dragos Strugar

18

만약 무언가가 있다면 있다고 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)를 .

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


이제 Bachmann-Landau 표기법을 읽고 있습니다. 감사합니다 Charlie, 전에 거기에 갔지만 길이를 진행하지 않고 돌아 왔습니다.
Adeel Ansari

이봐 요, 박사 학위를 자주 듣는게 좋네요.
Charlie Martin

Landau의 big-O 표기법은 알고리즘 복잡성에 국한되지 않습니다.
Charlie Martin

이것은 잘못된 것 같습니다. 첫 번째 줄에는 "If you have something that 's O (g (n))", 즉 g대신 라고 읽어야 f하며 나머지는 그대로 둘 수 있습니다. 두 번째 줄도 마찬가지입니다. "If you have something that 's Ω (g (n))"이어야합니다. 다시 확인해 주시겠습니까?
파비오는 분석 재개 모니카는 말한다

전체 주제가 너무 엉망이어서 해당 크레딧을 가진 사람도 잘못 인식 할 수 있습니다. D 농담을 제쳐두고 누군가이 답변을 수정해야합니다. 이것은 사람들을 혼란스럽게합니다 (매우 많이했습니다).
Rad

5

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

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

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


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


1
배열이 정렬 된 경우 경계는 여전히 O (n)
Arun Aravind

2
@ArunAravind 이유를 설명 할 수 있습니까?
nbro

3

여기서 최소 시간최대 시간 이라는 문구 는 약간 오해의 소지가 있습니다. 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가 가장 나쁜 경우라고 말할 수 있습니까?. . .. 용어를 각각 최상의 경우와 최악의 경우로 바꿔야합니까?
Adeel Ansari

어떤 문제에 대한 최상의 경우는 O (1)입니까?
Zach Langley

1
@Adeel, no, Theta 및 O는 모두 평균 사례 또는 최악의 사례를 나타낼 수 있습니다. @Zach, 음, 정확히는 아닙니다. 지적 해 주셔서 감사합니다.
PolyThinker

0

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

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


0

정확히 하한 또는 $ \ 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 $가장 낮은 한계를 제공 하는 실제 속도를 제공 한다고 말할 수도 있습니다 .


-2

기본 차이점

인용구

점근 상한 및 점근 적으로 타이트 Asym.upperbound는 입력 수에 따라 최대 시간으로 실행할 수있는 주어진 알고리즘을 의미합니다. 상한 복잡도를 나타내는 O (n)의 실행 시간이 걸리지 만 이미 정렬 된 경우 ohm (1)이 필요하므로 일반적으로 상한 복잡도에 "O"표기법을 사용했습니다.

Asym. tightbound bound는 for eg (c1g (n) <= f (n) <= c2g (n))는 함수가 두 경계 (상한 및 하한) 사이의 값을 갖도록 엄격한 경계 한계를 보여줍니다. 평균 사례.


2
답변이 이미 수락 된 답변에 g를 추가하지 않으면 이전 질문에 답변하지 않아야합니다.
alestanis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.