이 문서는 [[CONCRETE-MATH]] 2장.합 - 2.합과 점화식을 공부한 노트입니다.

위의 식은 다음과 같다.

한편으로는 다음 점화식과 같다고도 볼 수 있다.

예제

다음과 같은 식이 있다고 하자.

  • 은 n을 몇 배 하고 어떤 상수를 더한 것이다.

그렇다면 다음과 같이 점화식을 꾸밀 수 있을 것이다.

python 으로 표현하자면 다음과 같을 것이다.

def R(n):
    if n == 0:
        return alpha
    return R(n-1) + beta + gamma * n

# alpha, beta, gamma의 값은 아직 모른다

작은 값들부터 넣어보며 생각해보면 다음을 알 수 있다.

이를 다음과 같이 일반해로 유도해내자.

그리고 다음과 같은 경우들을 생각해보자.

R_n = 1 인 경우

이라면

  • 잘 생각해 보면 이 점화식대로라면, 의 값이 무엇이건 간에 이라는 것을 알 수 있다.
    • 는 초항이므로, 합을 몇 번이고 반복해도 딱 한 번만 더하기 때문이다.
  • 0과 곱하므로 지금 시점에서는 알아낼 방법이 없다.

R_n = n 인 경우

이라면

  • 잘 생각해 보면 이 점화식대로라면, 의 값이 무엇이건 간에 라는 것을 알 수 있다.
    • 더하는 항의 수 만큼 가 증가하기 때문이다.
  • 0과 곱하므로 지금 시점에서는 알아낼 방법이 없다.

R_n = n^2 인 경우

이라면

  • 잘 생각해 보면 이 점화식대로라면, 의 값이 무엇이건 간에 라는 것을 알 수 있다.
    • 이기 때문이다.
  • 0과 곱하므로 지금 시점에서는 알아낼 방법이 없다.

응용

다음과 같은 합이 있다고 하자.

python으로는 다음과 같을 것이다.

def sigma(n):
    sum = 0
    for k in range(0, n+1):
        sum += a + b*k
    return sum

위 합의 점화식은 다음과 같다.

python으로는 다음과 같을 것이다.

def S(n):
    if n == 0:
        return a
    return S(n-1) + a + (b*n)

그렇다면 과 같은 방식으로, 다음과 같이 점화식을 꾸밀 수 있다.

모양이 같으므로, 어렵지 않게 다음의 사실을 알아낼 수 있다.

이를 에 대입해보면 다음과 같이 될 것이다.

검증

검증해보고 싶다.

이를 풀어 쓰면 구조를 이해하기 쉬울 것 같다.

일반해와 똑같은 모양이 나왔다.

예제: 하노이의 탑

하노이의 탑 점화식은 다음과 같다.

def T(n):
    if n == 0:
        return 0
    return 2*T(n-1) + 1

양변을 으로 나누면 과 같은 모양이 된다.

def S(n):
    if n == 0:
        return 0
    return S(n-1) + 2**(-n)

def T(n):
    return S(n) * (2**n)

그렇다면 씩 더해가는 것이므로 다음과 같이 표현할 수 있다.

def S(n):
    sum = 0
    for k in range(1, n+1):
        sum += 2**(-k)
    return sum

def T(n):
    return S(n) * (2**n)

고등학교 때 배운 등비수열의 합 공식 을 적용해 보면

따라서 하노이의 탑에 n개의 원판이 있을 때, 이를 옮기는 최소한의 횟수는 임을 알 수 있다.

# 최적화 완료
def T(n):
    return 2**n - 1

일반화

위의 풀이법을 사용하면 다음 형태의 점화식을 일반화할 수 있을 것 같다.

양 변에 을 곱하자. (단, .)

검증

위의 일반해를 하노이의 탑으로 검증해 보자.

하노이의 탑 점화식은 다음과 같았다.

일반화에 사용한 형태의 점화식이 다음과 같았으므로,

하노이의 탑에서 각 변수의 값은 다음과 같다.

  •  
  •  
  •  
  •  

따라서 일반해는 다음과 같다.

예제: quick-sort 퀵 소트

퀵 소트의 점화식은 다음과 같다.

점화식을 정리해 보자.

일단 양 변에 n을 곱해서, 분모의 n을 제거한다.

위의 식에서 아래 식을 빼보자.

즉, 다음과 같다.

그리고 점화식은 다음과 같이 정리된다.

를 참고해 꾸며보자.

을 적용하자.

퀵 소트 점화식의 닫힌 형식

위에서 얻은 퀵 소트 점화식의 해는 다음과 같았다.

해를 잘 살펴보면 조화수(Harmonic number)가 식의 중간에 들어가 있음을 알 수 있다.

퀵 소트 점화식의 해를 조화수를 사용해 정리해 보자.

만 떼어서 작업하는 쪽이 편할 것 같다.

간단하게 된 합을 적용해 보자.

Links