← Back to Blog

[Algorithm] Optimality Analysis

computer-science > algorithm

2026-03-182 min read

#development #computer-science #algorithm

Reference

Mathematics Background

i=1ni=n(n+1)2i=1ni2=2n3+3n2+n6n33i=1niknk+1k+1i=0k2i=2k+11i=1ki2i=(k1)2k+1+2\begin{align} &\sum^n_{i=1} i = \frac{n(n+1)}{2}\\ &\sum^n_{i=1} i^2 = \frac{2n^3 + 3n^2 + n}{6} \approx \frac{n^3}{3}\\ &\sum^n_{i=1} i^k \approx \frac{n^{k+1}}{k+1}\\ &\sum^k_{i=0} 2^i = 2^{k+1} - 1\\ &\sum^k_{i=1} i 2^i = (k-1)2^{k+1} + 2 \end{align}

To study

Classifying Functions

complexity image

비교하는 방법

보통 최악의 경우를 위해 계산하기 때문에 무한대 상황을 가정한다.

limnf(n)g(n)\lim_{n\rightarrow\infin}\frac{f(n)}{g(n)}

결과값이 무한대로 갈 경우,
fω(g)f\in\omega(g) 또는 최소한 fΩ(g)f\in\Omega(g) 이다.

complexity image2

O(g), Θ(g), ΩO(g),\ \Theta(g),\ \Omega 의 성질

fO(g)gΩ(f)f \in O(g) \leftrightarrow g \in \Omega(f) 이면
O(f+g)=O(max(f,g))O(f + g) = O(\max(f, g))Ω(f+g)=Ω(max(f,g))\Omega(f + g) = \Omega(\max(f, g)) 를 만족한다.

Analyzing Algorithms and Problems

조건1: Correctness가 증명되어야 한다

조건2: Amount of Work Done

Worst-Case Complexity

Average Complexity

예시

int seqSearch(int[] E, int n, int K)
    int ans, index;
    ans = -1; // Assume failure
    for (index = 0; index < n; index++)
        if (K == E[index])
            ans = index; // Success
            break; // Done
    return ans;

Worst-Case

Average-Behavior Analysis

A(n)=Pr(succ)Asucc(n)+Pr(fail)Afail(n)A(n) = Pr(\text{succ})A_{\text{succ}}(n) + Pr(\text{fail})A_{\text{fail}}(n)

가정