문제

차이점은 무엇입니까? 큰 오 표기법 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

일반적인 아이디어를 보여주는 테이블이 있습니다.

Big o table

(참고 : 테이블은 좋은 안내서이지만 한계 정의는 우수한 한도 정상 한계 대신. 예를 들어, 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)에서 실행되는 알고리즘이 있다고 가정 해 봅시다. 꽤 좋아, 응? 그러나 당신 (당신은 훌륭한 사람, 당신)이라고 가정 해 봅시다.Nloglogloglogn). 예! 더 빠릅니다! 그러나 논문을 쓸 때 계속해서 그 글을 계속 쓰는 느낌이들 것입니다. 그래서 당신은 그것을 한 번 작성하고, 당신은 "이 논문에서, 나는 이전에 계산 가능한 알고리즘 X가 실제로 O (n)에서 계산할 수 있음을 증명했습니다."

따라서 모든 사람은 알고리즘이 더 빠르므로 불분명하지만 더 빨리 알고 있습니다. 이론적으로. :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top