본문
160817(수) - 알고리즘 for Java [빅-오]
알고리즘 for Java [빅-오]
빅-오 표기법의 정의
O(g(n)) = {f(n) : n >= n0 인 모든 n에 대해 0 <= f(n) <= cg(n) 을 만족하는 양의 상수 c와 n0가 존재한다}
※ 목적은 "주어진 알고리즘의 증가율f(n)과 크거나 같은 최소의 증가율 g(n)을 찾는 것.
n이 작을 경우의 증가율은 중요하지 않으므로 생략(n0보다 작을 때의 증가율은 무시)
ex)
1. f(n) = 3n + 8의 상한은?
n >= 8인 모든 n에 대하여 3n + 8 = 4n
3n + 8 = O(n), c = 4, n0 = 8
2. f(n) = n^2 + 1의 상한은?
n >= 1인 모든 n에 대하여 n^2 + 1 <= 2n^2
n^2 + 1 = O(n), c = 1, n0 = 1
-> 이해 가지 않음. O(n^2), c = 2, n0 = 1 아닌가?
3. f(n) = n^4 + 100n^2 + 50의 상한은?
n >= 11인 모든 n에 대하여 n^4 + 100n^2 + 50 <= 2n^4
n^4 + 100n^2 + 50 = O(n^4), c = 2, n0 = 11
4. f(n) = 2n^3 - 2n^2의 상한은?
n >= 1인 모든 n에 대하여 2n^3 - 2n^2 <= 2n^3
2n^3 - 2n^2 = O(n^3), c = 2, n0 = 1
5. f(n) = n의 상한은?
n >= 1인 모든 n에 대하여 n <= n^2
n = O(n^2), c = 2, n0 = 1
-> c = 1 아닌가?
6. f(n) = 410의 상한은?
n >= 1인 모든 n에 대하여 410 <= 410
410 = n(1), c = 1, n0 = 1
※ 점근적 상한을 증명하는 유일한 n0와 c의 값은 없다.
'Architecture > 자료구조 및 알고리즘' 카테고리의 다른 글
170613(화) - Stanford Engineering's Algorithms (Introduction) (0) | 2017.06.13 |
---|---|
161203(토) - 알고리즘 문제해결 전략 (0) | 2016.12.03 |
160809(화) - 알고리즘 for Java (0) | 2016.08.10 |
160112P(화) (0) | 2016.01.12 |
160110P(일) (0) | 2016.01.11 |
댓글