개요

Big $O$

정의

점근적(Asymptotic) 실행 시간

개념

방법

4n^2 + 3n + 4 -> 4n^2 -> n^2 -> O(n^2)

종류

O(1): 해시 테이블의 조회/삽입
O($\log{n}$): 이진탐색
O(n): 정렬되지 않은 리스트의 최소/최대값
O($n \times \log{n}$): 병합정렬, Timmsort
O($n^{2}$): 버블정렬
O($2^{n}$): 피보나치 재귀 계산
O(n!): 외판원 문제 brute force 풀이

공간 복잡도

상한과 최악

상한

빅오 표기법과 최악

분할 상환 분석(Amortized Analysis)

Amortized Analysis?

동적 배열

동작: 삽입  삽입    삽입    삽입        삽입 <- 더블링
비용: 1     1       1       1       |   5
:   10    21      12      63      |   34
단계   예제
1 n 개의 삽입 작업에 대해 n*Θ(1) = n 4
2 기존 요소들을 이동 시키는 사이즈 더블링 작업에 Θ(n) 4
3 총 n + 1 개의 요소 삽입 작업 5
4 ((Θ(1) * n) + Θ(n)) / (n + 1) = Θ(1) (4 + 4) / 5 = 1.6

증명

n-th 요소 삽입 시 삽입 비용

배열의 확장은 ${log_2{n}}$보다 클 수 없다

n 개의 삽입에 대한 총 비용 한계

\[\sum\limits_{i=1}^n O(1) + \sum\limits_{i=1}^{\log_2 n} {c}\cdot{2^i} = O(n)\]

참고