빅 O, 빅 오메가 및 빅 세타 표기법의 차이점에 대해 정말 혼란 스럽습니다.
big O가 상한이고 big Omega가 하한이라는 것을 이해하지만 big Ө (theta)는 정확히 무엇을 나타 냅니까?
나는 그것이 꽉 묶인 것을 의미한다고 읽었 지만 그 의미는 무엇입니까?
답변
이는 주어진 함수에서 알고리즘이 big-O 및 big-Omega임을 의미합니다.
이 경우 예를 들어 Ө(n)
, 다음 몇 가지 상수가 k
같은 당신의,보다 큰 기능 (어떤 런타임) n*k
충분히 큰에 대한 n
, 그리고 몇몇 다른 상수 K
함수가보다 작도록 n*K
충분히 큰위한 n
.
즉, 충분히 큰 n
경우 두 개의 선형 함수 사이에 끼워집니다.
옵션 k < K
과 n
충분히 큰n*k < f(n) < n*K
답변
먼저 큰 O, 큰 Theta 및 큰 오메가가 무엇인지 이해합시다. 그것들은 모두 기능 세트 입니다.
Big O는 상한 점 바운드를 제공하는 반면 Big Omega는 하한값을 제공합니다. 빅 세타는 둘 다 제공합니다.
Ө(f(n))
또한 모든 것이 O(f(n))
있지만 다른 방법은 아닙니다.
in 과 in에 모두 T(n)
있다고합니다 . 세트의 용어로 는 IS 교차로 의 및Ө(f(n))
O(f(n))
Omega(f(n))
Ө(f(n))
O(f(n))
Omega(f(n))
예를 들어, 병합 정렬 최악의 경우는 둘 다 O(n*log(n))
와 Omega(n*log(n))
– 따라서도 Ө(n*log(n))
하지만, 또한 O(n^2)
이후, n^2
그 이상의 점근 “더 큰”입니다. 그러나, 그것은 것입니다 하지 Ө(n^2)
알고리즘이 아니기 때문에 Omega(n^2)
.
좀 더 깊이있는 수학 설명
O(n)
점근 적 상한입니다. 경우 T(n)
이며 O(f(n))
, 이것은 어느 의미에서 해당 n0
상수가 C
되도록 T(n) <= C * f(n)
. 한편, big-Omega는 ) C2
와 같은 상수가 있다고 말합니다 T(n) >= C2 * f(n))
.
혼동하지 마십시오!
최악, 최고 및 평균 사례 분석과 혼동하지 마십시오. 세 가지 (Omega, O, Theta) 표기법 모두 알고리즘의 최고, 최악 및 평균 사례 분석과 관련 이 없습니다 . 이들 각각은 각 분석에 적용될 수 있습니다.
일반적으로 알고리즘의 복잡성을 분석하는 데 사용합니다 (위의 병합 정렬 예와 같이). 우리가 “알고리즘 A”라고 말할 때 O(f(n))
, 우리가 실제로 의미하는 것은 “최악의 1 가지 경우 분석 에서 알고리즘의 복잡성 은 O(f(n))
“-의미입니다.-함수의 “유사한”(또는 공식적으로 나쁘지 않은) 스케일 f(n)
입니다.
알고리즘의 점근 적 경계를 신경 쓰는 이유는 무엇입니까?
글쎄, 거기에는 많은 이유가 있지만, 가장 중요한 이유는 다음과 같습니다.
- 정확한 복잡도 함수 를 결정하는 것이 훨씬 어렵 기 때문에 이론적으로 충분히 유익한 big-O / big-theta 표기법을 “타협”합니다.
- 정확한 op 수는 플랫폼에 따라 다릅니다 . 예를 들어 16 개의 숫자로 구성된 벡터 (목록)가있는 경우입니다. 얼마나 많은 작전이 필요할까요? 대답은 다음과 같습니다. 일부 CPU는 벡터 추가를 허용하지만 다른 CPU는 그렇지 않으므로 구현과 시스템에 따라 대답이 다르므로 이는 바람직하지 않은 속성입니다. 그러나 big-O 표기법은 기계와 구현간에 훨씬 더 일정합니다.
이 문제를 설명하려면 다음 그래프를 살펴보십시오.
f(n) = 2*n
보다 “나쁘다”는 것이 분명하다 f(n) = n
. 그러나 그 차이는 다른 기능과 크게 다르지 않습니다. 우리는 f(n)=logn
다른 기능들보다 빠르게 낮아지고 다른 기능들보다 f(n) = n^2
빠르게 높아지고 있음을 알 수 있습니다.
따라서 위의 이유 때문에 상수 요소 (그래프 예제에서 2 *)를 “무시”하고 big-O 표기법 만 사용합니다.
위의 예에서, f(n)=n, f(n)=2*n
in O(n)
및 in 둘 다에있을 Omega(n)
것입니다 Theta(n)
.
반면에-에 f(n)=logn
있을 것입니다 O(n)
(보다 낫습니다 f(n)=n
). 그러나 안에 있지 Omega(n)
않을 것입니다 Theta(n)
.
비대칭 적으로 f(n)=n^2
는 들어 있지만 Omega(n)
, 들어 있지 O(n)
않으므로-또한 아닙니다 Theta(n)
.
1 항상 그런 것은 아니지만 일반적으로. 분석 클래스 (최악, 평균 및 최고)가 누락되면 실제로 최악의 경우를 의미 합니다.
답변
쎄타 (N) : 기능 f(n)
에 속하는 Theta(g(n))
양의 상수가 존재한다면, c1
그리고 c2
그러한 f(n)
사이에 개재 될 수 c1(g(n))
와 c2(g(n))
. 즉, 상한과 하한을 모두 제공합니다.
Theta (g (n)) = {f (n) : 양의 상수 c1, c2 및 n1이 존재하여 0 <= c1 (g (n)) <= f (n) <= c2 (g (n)) 모든 n> = n1}
우리가 말할 때 f(n)=c2(g(n))
또는 f(n)=c1(g(n))
그것은 무증상 꽉 묶인 것을 나타냅니다.
O (n) : 상한 만 제공 (단단하거나 단단하지 않을 수 있음)
O (g (n)) = {f (n) : 양의 상수 c와 n1이 존재하여 모든 n> = n1에 대해 0 <= f (n) <= cg (n)}
ex : 바운드 2*(n^2) = O(n^2)
는 점진적으로 단단하지만 바운드 2*n = O(n^2)
는 점근 적으로 단단하지 않습니다.
o (n) : 상한 만 제공 (엄밀한 경계는 아님)
O (n)과 o (n)의 주목할만한 차이는 f (n)은 모든 n> = n1에 대해 cg (n)보다 작지만 O (n)과 같지 않습니다.
예 : 2*n = o(n^2)
, 그러나2*(n^2) != o(n^2)
답변
이것이 클래식 CLRS (66 페이지) 에서 찾을 수 있기를 바랍니다 .
답변
빅 세타 표기법 :
친구를 엉망으로 만들 수 없습니다!
양의 값을 갖는 함수 f (n)가 있고 g (n)이 양의 값을 갖는 인수 n을 취하면) (g (n))은 {f (n)으로 정의됩니다 : 모든 n에 대해 상수 c1, c2 및 n1이 있습니다 = n1}
여기서 c1 g (n) <= f (n) <= c2 g (n)
예를 들어 보자.
c1 = 5 및 c2 = 8 및 n1 = 1
모든 표기법 중에서, ϴ 표기법은 함수의 성장률에 대한 최상의 직관을 제공합니다. 이는 상한과 하한을 각각 제공하는 big-oh 및 big-omega와 달리 빡빡한 경계를 제공하기 때문입니다.
ϴ은 g (n)이 f (n)에 가깝고, g (n)의 성장 속도는 가능한 f (n)의 성장 속도에 가깝다는 것을 알려줍니다.
답변
우선 모든 이론
-
큰 O = 상한 O (n)
-
세타 = 주문 함수-세타 (n)
-
오메가 = Q- 표기 (하한) Q (n)
사람들이 왜 그렇게 혼란스러워 하는가?
많은 블로그와 서적에서이 진술이 강조되는 방식은 다음과 같습니다
“이것은 Big O (n ^ 3)”입니다.
사람들은 종종 날씨처럼 혼동합니다
O (n) == 세타 (n) == Q (n)
그러나 명심해야 할 것은 O, Theta 및 Omega라는 이름을 가진 수학적 기능이라는 것입니다
다항식의 일반식이 동일합니다.
허락하다,
f (n) = 2n4 + 100n2 + 10n + 50
g (n) = n4이므로 g (n)은 함수를 입력으로 받아 가장 큰 전력으로 변수를 반환하는 함수입니다.
아래의 모든 설명에 대해 동일한 f (n) 및 g (n)
Big O-기능 (상한을 제공함)
3n4> 2n4이므로 큰 O (n4) = 3n4
3n4는 f (x) = 3x와 마찬가지로 Big O (n4)의 값입니다.
n4 는 여기서 x 의 역할을 하고 있습니다.
n4를 x’so로 대체, Big O (x ‘) = 2x’, 이제 우리는 행복합니다
따라서 0 ≤ f (n) ≤ O (x ‘)
O (x ‘) = cg (n) = 3n4
가치관,
0 ≤ 2n4 + 100n2 + 10n + 50 ≤ 3n4
3n4는 우리의 상한입니다
세타 (n)는 더 낮은 경계를 제공합니다
2n4 ≤ 우리의 예 f (n) 때문에 Theta (n4) = cg (n) = 2n4
2n4는 세타의 값입니다 (n4)
따라서 0 ≤ cg (n) ≤ f (n)
0 ≤ 2n4 ≤ 2n4 + 100n2 + 10n + 50
2n4는 우리의 하한입니다
오메가 n-주문 기능
이것은 날씨 하한이 상한과 유사하다는 것을 알기 위해 계산됩니다.
사례 1). 상한은 하한과 유사
if Upper Bound is Similar to Lower Bound, The Average Case is Similar
Example, 2n4 ≤ f(x) ≤ 2n4,
Then Omega(n) = 2n4
사례 2). 상단 바운드가 하단 바운드와 유사하지 않은 경우
in this case, Omega(n) is Not fixed but Omega(n) is the set of functions with the same order of growth as g(n).
Example 2n4 ≤ f(x) ≤ 3n4, This is Our Default Case,
Then, Omega(n) = c'n4, is a set of functions with 2 ≤ c' ≤ 3
이것이 설명되기를 바란다!!