반복 관계에서 변수 변경


20

현재 저는 알고리즘 소개 (CLRS)를 자율적으로 연구하고 있으며이 책에서 반복 관계를 해결하기 위해 설명하는 특정 방법이 있습니다.

이 예제에서는 다음과 같은 방법을 설명 할 수 있습니다. 우리가 재발한다고 가정하자

T(n)=2T(n)+logn

처음에 그들은 대체를 m = lg (n)로 한 다음 다시 재귀에 연결하고 다음을 얻습니다.

T(2m)=2T(2m2)+m

이 시점까지 나는 완벽하게 이해합니다. 다음 단계는 혼란스러운 단계입니다.

그들은 지금 재발의 "이름 바꾸기" 및하자 S ( m ) = T ( 2 m ) 분명히 생산,S(m)S(m)=T(2m)

S(m)=2S(m/2)+m

어떤 이유로이 이름 변경이 왜 작동하는지 명확하지 않으며 부정 행위처럼 보입니다. 누구든지 이것을 더 잘 설명 할 수 있습니까?

답변:


15

부정 행위가 아닙니다. 미적분학에서 대체가 어떻게 까다로운 적분을 해결하는 데 사용될 수 있는지 생각하십시오. 치환은 방정식을 조작하기 쉽게 관리 할 수있게합니다. 또한 대체는 다소 복잡한 반복을 익숙한 것으로 변환 할 수 있습니다.

S(m)=T(2m)T(2m)=2T(2m2)+mS(m/2)=T(2m2)k=m/2S(k)=T(2k)S(m)

S(m)=2S(m/2)+m.
SO(mlogm)ST(n)mTO(lognloglogn)

맞아요, 대체가 문제를보다 쉽게 ​​만드는 데 도움이되는 방법과 n의 복잡성을 얻기 위해 값을 다시 연결하는 방법을 완전히 이해합니다. 내 질문은 S (m) = T (2 ^ m)을 보낸 후에 어떻게 S (m / 2)를 도출하는 것입니다. 어떤 이유로 든 나에게 명백하지 않습니다. 보다 구체적으로, T (2 ^ (m / 2)) = S (m / 2)라고 어떻게 결론 지을 수 있습니까? 재발 T에서와 같이 하위 문제의 크기는 제곱근이되고 재발 S에서는 하위 문제의 크기가 절반으로 줄어 듭니다.

내가 이해하지 못하는 유일한 부분은 "S (m / 2) = T (2 ^ (m / 2))"라고 말할 때입니다. 그것은 저에게 명백하지 않은 유일한 부분입니다. 변수 대체를하는 아이디어에는 익숙하지만 전체 재발을 대체하는 아이디어에는 익숙하지 않습니다.

아, 마지막 편집은 저에게 도움이되었습니다. 지금은 분명합니다, 감사합니다!

1
나는 조금 의심했다. 내가 함수 S ()를 k쓰면 방정식 S (k) = 2S (k / 2) + m 아래에 도달 m합니다.k
Atinesh

4

S(m)=T(2m)STm2m

S

  1. Sm2m

  2. T

따라서 전환은 다음과 같습니다.

m2mT(2m)=S(m)
m22m/2T(2m/2)=S(m2).
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.