답변
브레너 (Brenner)가 말했듯이, 당신의 마지막 가정은 거짓입니다. (n
대신 x
의 사용)의이 Wikipedia page에서 O(n)
의 정의를 보자 :
f(n) = O(n)
경우와 상수c
가 존재하는 경우에만,n0
s.t. 여기에 왜|f(n)| <= c |g(n)|
, 모두n >= n0
에 해당합니다.
O(2^n^2) = O(2^n)
을 확인하고 싶습니다. 분명히 2^n^2
은 O(2^n^2)
에 있으므로 f(n) = 2^n^2
을 선택하고 에 있는지 확인하십시오.위의 공식에이 넣어 :
exists c, n0: 2^n^2 <= c * 2^n for all n >= n0
우리가 적절한 상수 값 n0
및 c
을 찾을 수 있는지 보자되는 위의 사실이다, 또는 우리가 증거에 모순을 도출 할 수 있다면 그것이 사실이 아니라고 :
양쪽에 로그를 가지고 :
log(2^n^2) <= log(c * 2^n)
단순화를 :
log(2)
에 의해
2 ^n log(2) <= log(c) + n * log(2)
나누기 :
n^2 <= log(c)/log(2) * n
더 c
이 없다는 것을 알고 쉽게 알, 위에서 모든 n >= n0
마찬가지입니다 n0
하는, 따라서 O(2^n^2) = O(n^2)
유효한 가정이 아니다.
당신이 물음표로 지정한 마지막으로 가정이 거짓 :
는 당신이 아래의 식을 내 솔루션을 볼 수 있습니다, 해결책을 찾기 위해 노력했다! 그러한 가정을하지 마십시오.
나머지 조작은 정확합니다. 그러나 그들은 실제로 당신을 아무 곳에도 데려 오지 않습니다.
당신은 초안의 중간에이 연습을 완료해야합니다
T(n) = O(T(1)^(3^log2(n)))
그리고 바로 그거야. 그게 해결책이야!
당신은 실제로
3^log2(n) == n^log2(3) ==~ n^1.585
다음은 당신이 얻을 것을 주장 할 수 :
당신이 초안의 두 번째 부분에 만들어 놓은 조작 다소 유사하다T(n) = O(T(1)^(n^1.585))
. 이렇게 남겨 둘 수도 있습니다. 하지만 당신은 지수를 망칠 수 없습니다. 지수의 값을 변경하면 big-O 분류가 변경됩니다.
대단히 고마워요. – Romansko
- 1. 재귀 알고리즘의 시간 복잡도
- 2. 평균 시간 복잡도 찾기
- 3. 주어진 재귀 방정식의 시간 복잡도
- 4. 최대 입력 찾기 (시간 복잡도)
- 5. 재귀 적 의사 코드의 시간 복잡도
- 6. for 루프를 포함하는 재귀 함수의 시간 복잡도
- 7. 시간 복잡도 찾기 j + = sqrt (i))
- 8. 버블 정렬 알고리즘 찾기 시간 복잡도
- 9. 점근 시간 복잡도 (쎄타)
- 10. 다음 메소드의 시간 복잡도
- 11. 시간 복잡도
- 12. 시간 복잡도 :
- 13. 시간 복잡도
- 14. 시간 복잡도
- 15. map.find() 시간 복잡도
- 16. 재귀 프로그램의 시간 복잡성 찾기
- 17. 재귀 알고리즘의 최악의 복잡도
- 18. BST 시간 복잡도
- 19. Recushive 알고리즘의 시간 복잡도 계산
- 20. 파이썬에서 사전 조회의 시간 복잡도
- 21. 함수의 공간 복잡도 및 시간 복잡도 계산
- 22. 숨겨진 보고서에서 수식의 인스턴스 찾기
- 23. 수식의 텍스트 찾기 및 바꾸기
- 24. 다음 재귀 코드의 시간 복잡도 (big-O 표기법)?
- 25. 시간 복잡도 제곱에 의한 지수화
- 26. 아래 코드의 시간 복잡도
- 27. 모듈러 산술의 시간 복잡도
- 28. 셸 정렬의 시간 복잡도?
- 29. 프로그램의 시간 복잡도
- 30. while 루프의 시간 복잡도
지금까지 해보신 것은 무엇입니까? 어디서 붙어 있니? 힌트 : 반복 관계. – Davislor
모든 것이 첨부 된 사진에 있습니다. – Romansko