Big-O와 Little-O 표기법의 차이
-
21-09-2019 - |
문제
차이점은 무엇입니까? 큰 오 표기법 O(n)
그리고 Little-O 표기법 o(n)
?
해결책
f ∈ O (g)는 본질적으로 말한다
을 위한 적어도 하나 상수의 선택 케이 > 0, 상수를 찾을 수 있습니다 ㅏ 불평등 0 <= f (x) <= kg (x)는 모든 x> a에 대해 유지됩니다.
O (g)는이 조건이 보유하는 모든 기능 세트입니다.
f ∈ O (g)는 본질적으로 말한다
을 위한 모든 상수의 선택 케이 > 0, 상수를 찾을 수 있습니다 ㅏ 불평등 0 <= f (x) <kg (x)는 모든 x> a에 대해 유지됩니다.
다시 한번, O (g)는 세트입니다.
Big-O에서는 특정 승수를 찾을 필요가 있습니다. 케이 불평등은 어느 정도까지 유지됩니다 엑스.
Little-O에서는 최소값이 있어야합니다. 엑스 그 후 불평등은 당신이 아무리 작게 만들더라도 유지됩니다. 케이, 그것이 음수 또는 0이 아닌 한.
이들은 모두 상한을 묘사하지만, 직관적으로는 직관적이지만 Little-O는 더 강력한 진술입니다. f ∈ O (g)보다 f ∈ O (g) 인 경우 f와 g의 성장 속도 사이에는 훨씬 더 큰 간격이 있습니다.
차이의 한 가지 예는 이것입니다. f ∈ O (f)는 사실이지만 f ∈ O (f)는 거짓입니다. 따라서 Big-O는 "f ∈ O (g)가"F의 점근 성장이 g보다 빠르지 않다는 것을 의미하는 반면 "F ∈ O (g)는 F의 점근 성장이 g보다 엄격하게 느리다는 것을 의미합니다. 같네요 <=
~ 대 <
.
보다 구체적으로, g (x)의 값이 f (x) 값의 일정한 다중 인 경우 f ∈ O (g)는 참입니다. 이것이 BIG-O 표기법으로 작업 할 때 상수를 떨어 뜨릴 수있는 이유입니다.
그러나 f ∈ O (g)가 사실이 되려면 g는 더 높은 것을 포함해야합니다. 힘 공식에서 x의 x이므로 f (x)와 g (x) 사이의 상대적 분리는 실제로 x가 커짐에 따라 실제로 커야합니다.
순수한 수학 예제를 사용하려면 (알고리즘을 언급하지 않고) :
다음은 Big-O의 경우에는 사실이지만 Little-O를 사용하는 경우에는 해당되지 않습니다.
- x² ∈ O (x²)
- x² ∈ O (x² + x)
- x² ∈ O (200 * x²)
Little-O의 경우 다음은 다음과 같습니다.
- x² ∈ O (x³)
- x² ∈ O (x!)
- ln (x) ∈ O (x)
F ∈ O (g)이면 F ∈ O (g)를 의미합니다. 예를 들어 x² ∈ O (x³) 따라서 x² ∈ O (x³), (다시, O를 <=
그리고 o as <
)
다른 팁
Big-O는 Little-O AS입니다 ≤
그렇습니다 <
. Big-O는 포괄적 인 상한이며 Little-O는 엄격한 상한입니다.
예를 들어, 기능 f(n) = 3n
이다:
- 안에
O(n²)
,o(n²)
, 그리고O(n)
- 안에
O(lg n)
,o(lg n)
, 또는o(n)
유사하게, 숫자 1
이다:
≤ 2
,< 2
, 그리고≤ 1
- ~ 아니다
≤ 0
,< 0
, 또는< 1
일반적인 아이디어를 보여주는 테이블이 있습니다.
(참고 : 테이블은 좋은 안내서이지만 한계 정의는 우수한 한도 정상 한계 대신. 예를 들어, 3 + (n mod 2)
3에서 4 사이에서 영원히 진동합니다. 들어 왔어요 O(1)
정상 한도는 없지만 여전히 lim sup
: 4.)
Big-O 표기법이 점근 적 비교로 변환되는 방법을 암기하는 것이 좋습니다. 비교는 기억하기 쉽지만 N과 같은 말을 할 수 없기 때문에 덜 유연합니다.o (1) = P.
개념적으로 무언가를 이해할 수 없을 때 x를 사용하는 이유 X를 이해하는 데 도움이됩니다.
알고있는 것] 알고리즘을 분류하는 일반적인 방법은 런타임에 의한 것이며 알고리즘의 큰 OH 복잡성을 인용함으로써 "더 나은"기능이 어느 쪽이든 "더 적은"기능을 갖는 상당한 추정을 얻을 수 있습니다. O에서! 현실 세계에서도 O (n)은 O (n²)보다 "더 낫다"고, 초기 상수 등과 같은 어리석은 것들을 막습니다. [/당신이 알고있는 것들
O (n)에서 실행되는 알고리즘이 있다고 가정 해 봅시다. 꽤 좋아, 응? 그러나 당신 (당신은 훌륭한 사람, 당신)이라고 가정 해 봅시다.N⁄loglogloglogn). 예! 더 빠릅니다! 그러나 논문을 쓸 때 계속해서 그 글을 계속 쓰는 느낌이들 것입니다. 그래서 당신은 그것을 한 번 작성하고, 당신은 "이 논문에서, 나는 이전에 계산 가능한 알고리즘 X가 실제로 O (n)에서 계산할 수 있음을 증명했습니다."
따라서 모든 사람은 알고리즘이 더 빠르므로 불분명하지만 더 빨리 알고 있습니다. 이론적으로. :)