ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 알고리즘...6
    일지 2021. 5. 14. 17:47

    점화식의 점근적 분석 방법

    대표적인 방법으로 반복 대치, 추정후 증명, 마스터 정리가 존재한다.

     

    - 반복 대치

    : 어떤 함수의 입력이 n일 때 소요 시간을 T(n)이라 할 경우 T(n)을 T(n - 1)로 대치하고 T(n - 1)을 T(n - 2)로 대치하는 것을 반복하여 T(1)까지 대치하는 분석 방법이다.

     


    어떤 함수의 입력이 n일 때 소요 시간 T(n)은 다음과 같이 나타낼 수 있다.

     

    T(n) = T(n - 1) + c

     

    이때 c는 자기 호출을 제외한 나머지를 수행하는 시간을 나타낸다. 


     

    병합 정렬 알고리즘의 반복 대치를 통한 분석은 다음과 같이 진행할 수 있다.

     

    MergeSort

    MergeSort(A[], p, r)
    {
    	if (p < r) then {
        	q ← |_ q + r / 2 _|
            MergeSort(A[], p, q)
            MergeSort(A[], q + 1, r)
            Merge(A, p, q, r)
        }
    }

     

    입력이 n 일 때 소요 시간을 T(n)이라고 하면 다음과 같이 나타낼 수 있다.

     

    A: 병합 정렬을 반으로 나눠 실행하기 때문에 발생

    B: 병합 정렬 후 통합 작업 실행으로 발생

     

    이를 전개하면 다음과 같다.

     

    ※ n = 2^k로 가정해도 일반성을 잃지 않으므로 이를 k에 대한 식으로 쓰면 k = logn이 된다.

     


    n = 2^k로 가정해도 되는 이유는 다음과 같다.

     

    어떤 n이라도 n과 2n 사이에는 2의 멱수가 하나 존재한다.

    이때 임의의 상수 r에 대해 T(n) = O(n^r)이면 T(2n) = O((2n)^r) = O(2^rn^r) = O(n^r)이므로 T(2n) = T(n)이 된다.

     

    이를 위의 사실에 대해 적용하면

    T(n) ≤ T(2^k) ≤ T(2n)으로 볼 수 있고 이때 T(n) = T(2n)이므로 T(n) = T(2^k) = T(2n)의 관계가 성립한다.

     

    그러므로 n 이후로 처음 만나는 2의 멱수도 항상 n에 대한 함수와 같은 점근적 복잡도를 지니므로 n = 2^k로 가정해도 문제가 없게 된다.


     

    댓글

Designed by Tistory.