2013-09-29 5 views
6

나는 1000n 또는 10n의 big-O가 O (n)과 동일한 것으로 나타 났지만 2^n과 3^n의 big-O는 다릅니다. O (2^n))와 O (3^n)을 얻지 못하면 왜이 경우 (2 또는 3)의 상수를 무시할 수 없는지, 그리고 이것을 정당화하는 수학적 증명이 있는지는 알지 못합니다.지수 함수의 큰 O 표기

+1

big-O 표기법으로 상수를 무시하지 마십시오. 계수는 무시합니다. 2와 3은 계수가 아니라 기본 값입니다. – kqr

+4

Big-Oh의 정의를 말할 수 있습니까? Big-Oh는 수학적 정의가 있으며 전적으로 직관적으로 사용해서는 안된다는 것을 기억하십시오. 제 생각에 "때로는 상수를 무시할 수있다"는 것을 암시하는 것은 나쁜 습관입니다. – rliu

답변

12

임의로 큰 대입 3^n <= k * 2^n을 만족하는 상수 값 k이 없기 때문에 n. 따라서 f(n) = 3^n은 (은) O(2^n)의 멤버가 아닙니다.

http://en.wikipedia.org/wiki/Big_O_notation#Family_of_Bachmann.E2.80.93Landau_notations을 참조하십시오.

+1

정확하게 말하자면, 'O (3^n) = O (2^n)'이라는 주장에 대한 반례를 전시하고 있습니다. 특히'f (n) = 3^n'은'O (3^n)'에 있지만'O (2^n)'에는 없습니다. 따라서 집합은 확장 성의 공리 (axiom of Extensionality)를 통해 동일하지 않습니다 – rliu

+0

@roliu : 그 공리가 무엇인지는 모르겠지만 그렇습니다. 이것은 내포 된 논증입니다.) –

+1

가장 대중적인 집합 이론 인 ZFC에서 공리입니다 : https ://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory. 그것은 단지 "두 요소가 같은 요소를 포함하고 있다면 똑같습니다"라고 말합니다. 아무도 진짜 증거로 그것을 인용 한 사람은 없지만 나는 직감 대신 실제 수학적 추론을 사용하도록 설득하려고 노력하고있다. (수학 전문 용어로 극단적으로 표현함으로써) 코드를 작성하는 동안 사용할 구현을 결정하려는 경우 직관을 사용할 수 있습니다. 누군가가 "이것을 증명"한다고 말하면 수학을 사용해야한다고 생각합니다. – rliu

3

이벤트 원래 Asker에 대해서는 더 이상 사용하지 않을 수도 있지만
나는 더 쉬운 방법으로 접근 할 수 있다고 생각합니다.

O 표기법의

기본 defenition : F (g) IFF
그때는 그 F (g) = C를 보유하는 유리수의 C를 존재, O (N g())에있을 것 * g (N), N> = N0
(N0 인 사용자가 직접 선택할 수)

하는의는 O에서^n은 3이 적용 해보자 (2^n)이
3^N = 2^N * C
3^N = 2^N 개의 * (3^N/2^N)
3^N = 2^N 개의 * (3/2)^N
3^N = 2^N * 1.5^N

이는하는 바람직하지 않은 경우, C = 1.5^N 숫자지만 지수 함수는 독자적으로 나타납니다. O 3^N (2^N)에 대해 동일한 따라 한편


, 우리 넣기 2^N < = 3^N 개의 * (2/3)^N

이 당신이 0.75^n <에 대해 1을, 모든 c> 1을 취하면 0보다 큰 것을 의미한다는 것을 깨닫기 전까지는 갈등처럼 보일 수 있습니다.67^n n = 0

1

한계를 적용한 두 가지 복잡성, f (n) 및 g (n)을 campare하려면 lim_ {n -> \ inf} f (n)/g (n) 가능한 답변은 세 가지입니다.

1) lim_ {n -> \ inf} f (n)/g (n) = 0; f (n)/g (n)) f (n) ∈ O (g (n)) f (n) n) = +/- inf; f (n)/g (n)) f (n) ≥ f (n)) f (n) ≥ f (n) n) ∈ 실수; 이것은 f (n) ∈ O (g (n))와 g (n) ∈ O (f (n))를 의미한다.

lim_ {N -> \ INF} 2^N/3^N = lim_ {N -> \ INF} (2/3)^N = 0

그리고 demostrated, 우리는도 3 demostraded^n ∉ O (2^n)이고, 2/3임을 쉽게 알 수 있습니다. < 1 이것은 제한을 0으로 수렴하기위한 한계를 만듭니다. 그리고 나서 한계의 결과는 상수에 의존합니다. lim_ {n-> inf} a^0 = 0의 경우 0 < < 1 lim_ {n-> inf} a^n = inf 인 경우 a> 1; 더 나은 이해 점검을 위해

: 토마스 H 코만, 찰스 E 레이저 슨, 로날드 L. Rivest가와 클리포드 스타 인

으로 알고리즘 소개, 제 3 판 나는 그것을 도움이 희망 알고리즘의 교수 해요 당신. 조심해.