(이 답변은 더 이상 답변이므로 굵은 글씨를 읽고 요약 )
예를 들어 단계별로 살펴보고 우리가하는 일의 목적을 이해합시다. 우리는 귀하의 기능과 Big Oh 표기법을 찾는 목표로 시작합니다.
f(n) = 6n+4
먼저, 우리가 찾으려고 하는 Big Oh 표기법을 보자O(g(n))f(n) . Big Oh의 정의에서, 우리는 상수가 존재하는 곳 과 모든 것보다 큰 곳을 단순화 해야합니다 .g(n)cn0c*g(n) >= f(n)nn0
먼저 g(n) = 6n + 4( O(6n+4)Big Oh로 산출) 를 선택합시다 . 이 경우 우리는 볼 c = 1과의 값은 n0이후, 빅 오의 우리의 정의에서 수학 요구 사항을 충족 g(n)항상 같습니다 f(n):
c*g(n) >= f(n)
1*(6n + 4) >= 6n + 4 //True for all n's, so we don't need to pick an n0
이 시점에서 우리는 수학적 요구 사항을 충족했습니다. 에서 멈추었다면O(6n+4) 이것이 글쓰기보다 더 도움이되지 않는다는 것이 분명 f(n)하므로 Big Oh 표기법의 진정한 목적을 놓칠 것입니다 : 알고리즘의 일반적인 시간 복잡성을 이해하는 것! 따라서 다음 단계 인 단순화로 넘어 갑시다.
먼저, Big Oh가 그렇게 간단 해 6n지도록 할 수 O(4)있습니까? 아니! (이유를 이해하지 못하면 독자를위한 운동)
둘째, Big Oh가되도록 단순화 할 수 있습니까? 예! 4O(6n) 이 경우 다음과 g(n) = 6n같습니다.
c*g(n) >= f(n)
c*6n >= 6n + 4
이 시점 c = 2에서 왼쪽을 증가시킬 때마다 왼쪽이 오른쪽 (6)보다 빠르게 (12 씩) 증가하므로 선택합시다 n.
2*6n >= 6n + 4
이제 n0위의 방정식이 모두 n해당 값보다 큰 경우 양수를 찾아야 합니다. 우리는 왼쪽이 오른쪽보다 빠르게 증가한다는 것을 이미 알고 있기 때문에 우리가해야 할 일은 하나의 긍정적 인 해결책을 찾는 것입니다. 따라서 n0 = 2위의 내용을 적용한 이후 로 g(n)=6n, 또는 O(6n)잠재적 Big Oh 표기법 임을 알 수 f(n)있습니다.
이제 Big Oh가되도록 단순화 할 수 있습니까? 예! 6O(n) 이 경우 다음과 g(n) = n같습니다.
c*g(n) >= f(n)
c*n >= 6n + 4
c = 7왼쪽이 오른쪽보다 빠르게 증가하므로 선택합시다 .
7*n >= 6n + 4
위의 모든 n것이 크거나 같다는 사실을 알 수 n0 = 4있습니다. 따라서에 O(n)대한 잠재적 Big Oh 표기법입니다 f(n). g(n)더 이상 단순화 할 수 있습니까 ? 아니!
마지막으로 가장 간단한 Big Oh 표기법은 f(n)입니다 O(n). 우리는 왜이 모든 것을 겪었습니까? Big Oh 표기법은 선형 복잡성 이므로 이제 f(n)선형 임을 알 수 있습니다 O(n). 좋은 점은 이제 f(n)다른 알고리즘 과 시간 복잡성을 비교할 수 있다는 것입니다 ! 예를 들어, 우리는 이제 f(n)함수 h(n) = 123n + 72,, i(n) = n등과 시간이 복잡 하다는 것을 알고 있습니다 j(n) = .0002n + 1234. 위에서 간략히 설명한 동일한 단순화 프로세스를 사용하기 때문에 모두 선형 시간 복잡성을 갖습니다 O(n).
단!!!