📚 /algorithm

1. 점근적 접근 방법

Asymptotic Analysis

점근적 접근 방법 은 알고리즘의 성능이 입력 크기 n이 매우 커질 때 (무한에 가까울 때) 어떻게 변하는지를 분석하는 방법이다. 이는 작은 입력 크기에서 발생하는 미세한 차이들을 무시하고, 하드웨어, 언어 등의 특정 요인에서 벗어나 추상화하는 과정을 통해 알고리즘이 입력 크기가 커짐에 따라 성능이 어떻게 변화하는지 에 집중한다. 물론 n이 큰 경우에만 의미가 있는 한계가 있다.




2. 점근적 표기법이란?

어떤 알고리즘의 성능을 점근적으로 표기하기 위해 보통 Big-O 표기법을 사용한다.




3. T(n)g(n)

앞으로 점근적 분석에서 알고리즘의 성능을 표현할 때는 두 함수 T(n)g(n)의 관계를 사용하겠다!




4. Big-O

$$ T(n) = O(g(n)) $$


즉, 입력 크기 n 이 커질 때


성립을 위한 조건은


간단한 예시를 살펴보자

예를 들어, T(n) = 3n + 2 라는 알고리즘을 생각해보자. 이 알고리즘이 O(n) 인지 확인해보자. 우선, g(n) = n 으로 두고 T(n) = 3n + 2n 보다 더 느리게 증가하는지 살펴보자.




5. Big-Ω

$$ T(n) = Ω(g(n)) $$


즉, 입력 크기 n 이 커질 때


성립을 위한 조건은


간단한 예시를 살펴보자

예를 들어, 알고리즘의 시간 복잡도가 T(n) = 3n + 2 라고 하자. 이 알고리즘이 Ω(n) 에 속하는지 확인해보자. 여기서 g(n) = n 으로 두고 T(n) ≥ c * g(n) 을 만족하는 상수 cnₒ 를 찾아보자.

이처럼, Big-ΩT(n)g(n) 보다 더 느리게 증가할 수 없다는 것을 나타내므로, 알고리즘의 최소 성능을 평가할 때 매우 유용하다. 즉, Big-Ω 표기법은 알고리즘의 성능이 이 정도 이상으로는 반드시 나온다 는 보장을 제공하는 중요한 도구이다.




6. Big-Θ

$$ T(n) = Θ(g(n)) $$


즉, 입력 크기 n 이 커질 때


성립을 위한 조건은


간단한 예시를 살펴보자

예를 들어, 알고리즘의 시간 복잡도가 T(n) = 3n + 2 라면, 이 알고리즘이 Θ(n) 에 속하는지 확인해보자. 여기서 g(n) = n 으로 가정하고, 두 상수 c1c2 를 찾아보자.

이처럼, Big-Θ 알고리즘이 g(n)과 같은 속도로 증가한다는 것을 나타낸다. T(n)g(n)과 정확히 같은 비율로 증가할 때 Big-Θ 표기법을 사용한다. Big-Θ 는 상한선과 하한선을 모두 포함하므로, 알고리즘의 실제 성능을 정확하게 평가 하는 데 사용된다. T(n)g(n)과 비슷한 비율로 성장한다는 것을 보장하므로, 성능을 평가 시 더 엄격하고 명확한 기준을 제공한다.




7. 증명 예시

7-1. Big O : 함수식을 통한 T(n) = O(n²)의 증명 예시

01 : 문제

$$ \frac{3}{2}n^2 + \frac{5}{2}n - 3 \leq O(n^2) $$

위 수식이 T(n) = O(n²) 인지 증명해보자. 결국 이 문제는 주어진 함수가 보다 더 빠르게 증가하지 않는다는 것을 증명하는 과정이다. 따라서 우리는 상수 cnₒ라는 상수를 찾아서 아래 부등식을 만족시키는 것이 목표이다.

$$ T(n) \leq c \cdot n^2 \quad \text{(for } n \geq n_0) $$

이를 풀기 위해, 위처럼 우리는 주어진 함수 T(n) 의 각 항을 과 비교하면서 cnₒ를 찾아야 한다. 주어진 함수는 총 세 개의 항으로 이루어져 있다.


02 : c, nₒ 찾기

$$ \frac{3}{2}n^2 + \frac{5}{2}n - 3 \leq 2n^2 $$

상수 c의 계수보다 크면서, n의 계수와 상수 -3을 포함할 수 있는 값이어야 한다. 예를 들어, c = 2 로 설정할 수 있다.

이젠 부등식이 성립하는 최소 nₒ를 찾아야 한다. n이 충분히 크면 n부분과 상수보다 커지므로, nₒ = 1 로 설정할 수 있다.

따라서, c = 2, nₒ = 1 일 때 아래 부등식이 성립한다.

$$ T(n) = \frac{3}{2}n^2 + \frac{5}{2}n - 3 \leq 2n^2 \quad \text{for } n \geq 1 $$

이로써 T(n) = O(n²)임을 증명할 수 있다.




7-2. Big Θ : 함수식을 통한 T(n) = Θ(n²)의 증명 예시

01 : 문제

$$ \frac{1}{2}n^2 - 3n = \Theta(n^2) $$

위 수식이 T(n) = Θ(n²) 인지 증명해보자! 이는 함수가 n² 과 정확히 같은 비율로 증가한다는 것을 보이는 문제이다. 우리는 상수 c₁ , c₂ 그리고 nₒ를 찾아서 아래 부등식이 성립하는지를 증명해야 한다.

$$ c_1 n^2 \leq \frac{1}{2}n^2 - 3n \leq c_2 n^2 \quad \text{(for } n \geq n_0) $$


02 : Big-O 증명

우리는 함수의 상한선을 구하기 위해 c₂nₒ를 찾아야 한다. 우선, 주어진 함수 T(n)보다 더 빠르게 증가하지 않는지 확인해보자.

  1. 주어진 함수에서 항과 n항을 살펴보면, 이미 형태이므로 그대로 유지된다.
  2. -3n 항은 에 비해 작은 항이므로 이를 상수 c₂로 보정할 수 있다.

다음 부등식을 만족하는 c₂nₒ를 찾자.

$$ \frac{1}{2}n^2 - 3n \leq c_2 n^2 $$

여기서 $ c_2 = 1 $로 설정하면 다음 부등식이 성립한다.

$$ \frac{1}{2}n^2 - 3n \leq n^2 $$

이 부등식은 nₒ = 6 일 때 성립한다. n >= 6에서는 항이 -3n 보다 커지므로, 상한을 만족한다. 따라서, T(n) = O(n²)임을 증명할 수 있다.


03 : Big-Omega 증명

이제 하한선을 구하기 위해 c₁nₒ를 찾아보자.

$$ c_1 n^2 \leq \frac{1}{2}n^2 - 3n $$

이 부등식이 성립하도록 c₁ 을 구하면 된다. $c₁ = \frac{1}{3}$ 로 설정하면 다음 부등식이 성립한다:

$$ \frac{1}{3}n^2 \leq \frac{1}{2}n^2 - 3n $$

이때도 $nₒ = 8$ 일 때 성립한다. $n \geq 8$ 에서 이 부등식이 만족된다. 따라서 $T(n) = \Omega(n^2)$ 임을 증명할 수 있다.


04 : 결론

결국, 상수 $c_1 = \frac{1}{3}$, $c_2 = 1$, 그리고 $n_0 = 8$ 에서 다음 부등식이 성립한다.

$$ \frac{1}{3}n^2 \leq \frac{1}{2}n^2 - 3n \leq n^2 \quad \text{(for } n \geq 8) $$

따라서, 주어진 함수는 $ \Theta(n^2) $임을 증명할 수 있다.




8. Reference




📚 /algorithm