28
TAOCP Chapter 1.2.9 생성함수 최영만 [email protected] 2011년 3월 3일 목요일

110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

Embed Size (px)

Citation preview

Page 1: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

TAOCPChapter 1.2.9 생성함수

최영만 [email protected]

2011년 3월 3일 목요일

Page 2: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

생성함수Generating Function

2

< an >= a0, a1, a2, a3, ... 인 수열이 있다고 했을 때,

수열의 각 항목을 매개변수parameter 또는 계수로 하는 함수

G(z) = a0 + a1z + a2z2 + ... =

n≥0

anzn.

2011년 3월 3일 목요일

Page 3: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

생성함수

•수열 에 대한 정보를 얻기 위한 하나의 형태•위처럼 수열 을 하나의 수량으로 나타낸 를 생성함수라 부른다.

Generating Function

3

G(z) = a0 + a1z + a2z2 + ... =

n≥0

anzn.

< an >= a0, a1, a2, ...

< an >G(z)

2011년 3월 3일 목요일

Page 4: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

생성함수

•수열 에 대한 정보를 얻기 위한 하나의 형태•위처럼 수열 을 하나의 수량으로 나타낸 를 생성함수라 부른다.

Generating Function

이 것이 중요!

4

G(z) = a0 + a1z + a2z2 + ... =

n≥0

anzn.

< an >= a0, a1, a2, ...

< an >G(z)

2011년 3월 3일 목요일

Page 5: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

생성함수

•생성함수를 이용하면 완전히 새로운 범위의 기법들이 가능해짐•드무아브르가 최초로 도입 1차점화식 (1.2.8절 참조)

•스털링이 더 복잡한 점화식으로 확장 미적분

•오일러가 새로운 방식으로 사용하기 시작 분할

•라플라스가 정점을 찍음 ???

Generating Function

52011년 3월 3일 목요일

Page 6: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

순서

A.더하기B.자리이동C.곱하기D.z 바꾸기E.미분과 적분F. 알려진 생성함수들G.계수 빼내기

62011년 3월 3일 목요일

Page 7: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

더하기 A

7

= + + + ...+ + + + ...

= ( + ) + ( + ) + ( + ) + ...

G(z) =�

n≥0

anzn = a0 + a1z + a2z

2 + ...

H(z) =�

n≥0

bnzn = b0 + b1z + b2z

2 + ...

αG(z) + βH(z) = α�

n≥0

anzn + β

n≥0

bnzn

=�

n≥0

(αan + βbn)zn.

2011년 3월 3일 목요일

Page 8: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

자리이동 Bn≺0일 때, an=0이라고 한다면

의 생성함수

오른쪽으로

8

G(z) = a0 + a1z + a2z2 + ...

zmG(z) = a0zm + a1z

m+1 + a2zm+2 + ...

= a0−m + a1−mz + a2−mz2 + ...

=�

n≥m

an−mzn.

= 0·z0 + 0·z1 + 0·z2 + ...+ a0zm + a1z

m+1 + ...

=�

n≥0

an−mzn = zm�

n≥0

anzn.

< an−m >= 0, ..., 0� �� �, a0, a1, a2, ...m

2011년 3월 3일 목요일

Page 9: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

자리이동 B왼쪽으로

의 생성함수

9

z−m(G(z)−�

n<m

anzn) = z−m

n≥m

anzn

= z−m(amzm + am+1zm+1 + ...)

= a0+m + a1+mz + a2+mz2 + ...

=�

n≥0

an+mzn.

< an+m >= am, am+1, am+2, ...

2011년 3월 3일 목요일

Page 10: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

자리이동 B

10

the simplest case

중요

G(z) = 1, 1, 1, ...

zG(z) = 0, 1, 1, ...

(1− z)G(z) = 1

G(z) =1

1− z= 1 + z + z2 + ...

2011년 3월 3일 목요일

Page 11: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

A+B피보나치 수열 풀기

• 를 에 대한 생성함수라 하자.

‣ 는 에 대한 생성함수

‣ 는 에 대한 생성함수

‣ 는 에 대한 생성함수

• 일 때, 이므로,

=1

...이 이후는 1.2.8절 p116 풀이 참조11

(1− z − z2)G(z) = F0 + (F1 − F0)z + (F2 − F1 − F0)z2

+ (F3 − F2 − F1)z3 + ...

= z

G(z) =z

1− z − z2.

G(z) < Fn >

zG(z) < Fn−1 >

z2G(z)

(1− z − z2)G(z) < Fn − Fn−1 − Fn−2 >

n > 2 Fn − Fn−1 − Fn−2 = 0

< Fn−2 >

2011년 3월 3일 목요일

Page 12: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

A+B응용 (1차 점화 수열)

인 수열의 생성함수 는1차 점화 수열

...형태가 동일

12

G(z)

G(z) =X

1− c1z − ...− cmzm.

an = c1an − 1 + ...+ cman−m

G(z) =z

1− z − z2

2011년 3월 3일 목요일

Page 13: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

곱하기 C

13

자리이동에서 나왔던 도 곱하기의 특별한 사례

두 개

G(z) = a0 + a1z + a2z2 + ...

H(z) = b0 + b1z + b2z2 + ...

G(z)H(z) = (a0 + a1z + a2z2 + ...)(b0 + b1z + b2z

2 + ...)

= (a0b0) + (a0b1 + a1b0)z + (a0b2 + a1b1 + a2b0)z2 + ...

= c0 + c1z + c2z2 + ...

cn =n�

k=0

akbn−k

zmG(z)

2011년 3월 3일 목요일

Page 14: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

곱하기 C

14

특별한 사례 하나 더

에서 일 때,

원래 수열의 합들에 대한 생성함수

두 개

G(z) = a0 + a1z + a2z2 + ...

H(z) = b0 + b1z + b2z2 + ... bn = 1

= 1 + z + z2 + ...

=1

1− z

G(z)H(z) =1

1− zG(z)

= a0 + (a0 + a1)z + (a0 + a1 + a2)z2 + ...

2011년 3월 3일 목요일

Page 15: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

곱하기 C

15

세 개 이상

from

F (z)G(z)H(z) = d0, d1, d2, ...

dn =�

i,j,k≥0i+j+k=n

aibjck.

j≥0

k≥0

ajkzk =

n≥0

zn�

k0,k1,...≥0k0+k1+...=n

a0k0a1k1 . . .

F (z)G(z), cn =n�

k=0

akbn−k

2011년 3월 3일 목요일

Page 16: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

z 바꾸기 D

16

G(z) = a0 + a1z + a2z2 + a3z

3 + ...

G(−z) = a0 − a1z + a2z2 − a3z

3 + ...

G(z) +G(−z) = 2a0 + 2a2z2 + 2a4z

4 + ...1

2(G(z) + G(−z)) = a0 + a2z

2 + a4z4 + . . .

G(z) = a0 + a1z + a2z2 + a3z

3 + ...

G(−z) = a0 − a1z + a2z2 − a3z

3 + ...

G(z)−G(−z) = 2a1z + 2a3z3 + 2a5z

5 + ...1

2(G(z) − G(−z)) = a1z + a3z

3 + a5z5 + . . .

짝수항 추출하기

홀수항 추출하기

2011년 3월 3일 목요일

Page 17: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

z 바꾸기 D

17

Im

Rer-r

-ri

ri

단위원의 복소근complex root들을 이용하면매 m번째 항들만 뽑아낼 수 있다.

sinθ

cosθ

오일러 공식eiθ = cosθ + i sinθ

2011년 3월 3일 목요일

Page 18: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

z 바꾸기 D

18

Im

Rer-r

-ri

ri

단위원의 복소근complex root들을 이용하면매 m번째 항들만 뽑아낼 수 있다.

02π/m

sin(2π/m)

cos(2π/m)

e2π/im = cos(2π/m) + i sin(2π/m) =ω

n mod m=r

anzn =

1

m

0≤k<m

ω−krG(ωkz)

0 ≤ r < m.

증명은 연습문제 14 참고.

위와 같을 때 아래가 성립

2011년 3월 3일 목요일

Page 19: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

z 바꾸기 D

19

Im

Re

e2π/im = cos(2π/m) + i sin(2π/m) =ω

예를 들어 m=3이면, ω = −1

2+

√3

2i

그리고 r=1이면,�

n mod 3=1

anzn =

1

3

0≤k<3

ω−kG(ωkz)

i

-1

-i

0120°

sin(2π/3)

=√3/2

cos(2π/3)

= 1/2

1

a1z + a4z4 + a7z

7 + . . .

=1

3(G(z) + ω−1G(ωz) + ω−2G(ω2z)).

2011년 3월 3일 목요일

Page 20: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

미분과 적분 E

20

G(z) = a0 + a1z + a2z2 + ... =

n≥0

anzn

G�(z) = a1 + 2a2z + 3a3z2 + ... =

k≥0

(k + 1)ak+1zk.

따라서, zG�(z) =�

n≥0

nanzn. < nan > 의 생성함수

미분

2011년 3월 3일 목요일

Page 21: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

미분과 적분 E

21

G(z) = a0 + a1z + a2z2 + ... =

n≥0

anzn

적분

� z

0G(t)dt = a0z +

1

2a1z

2 +1

3a2z

3 + . . . =�

k≥1

1

kak−1z

k.

아까 중요했던 공식이 다시 등장

G(z) =1

1− z= 1 + z + z2 + ...

G�(z) =1

(1− z)2= 1 + 2z + 3z2 + ... =

k≥0

(k + 1)zk.

� z

0G(t)dt = ln

1

1− z= z +

1

2z2 +

1

3z3... =

k≥1

1

kzk.

2011년 3월 3일 목요일

Page 22: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

미분과 적분 E

22

적분� z

0G(t)dt = ln

1

1− z= z +

1

2z2 +

1

3z3... =

k≥1

1

kzk.

또 아까 나왔던 공식에 위 공식을 결합하면,

G(z)H(z) =1

1− zG(z) = a0 + (a0 + a1)z + (a0 + a1 + a2)z

2 + ...

1

1− zln

1

1− z= 0 + (0 + 1)z + (0 + 1 +

1

2)z2 + (0 + 1 +

1

2+

1

3)z3 + ...

= z +3

2z2 +

11

6z3 + ... =

k≥0

Hkzk.

조화수열에 대한 생성함수가 나온다.2011년 3월 3일 목요일

Page 23: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

알려진 생성함수들 F

23

이항정리

(1 + z)r = 1 + rz +r(r − 1)

2z2 + ... =

k≥0

�rk

�zk.

r 이 음의 정수일 때,

1

(1− z)n+1=

k≥0

�−n− 1

k

�(−z)k =

k≥0

�n+ kn

�zk.

xr = 1 + rz +r(r − 2t− 1)

2z2 + · · · =

k≥0

�r − kt

k

�r

r − ktzk.

다음과 같은 일반화도 있다. (연습문제 1.2.6-25 참조)

2011년 3월 3일 목요일

Page 24: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

알려진 생성함수들 F

24

exp z = ez = 1 + z +1

2!z2 + · · · =

k≥0

1

k!zk.

지수급수exponential series

일반화하면 스털링 수가 관련된 다음과 같은 공식이 된다.

(ez − 1)n = zn +1

n+ 1

�n+ 1n

�zn+1 + · · · = n!

k

�kn

�zk

k!.

2011년 3월 3일 목요일

Page 25: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

알려진 생성함수들 F

25

로그급수logarithm series

ln(1 + z) = z − 1

2z2 +

1

3z3 − · · · =

k≥1

(−1)k+1

kzk,

1

(1− z)m+1ln(

1

1− z) =

k≥1

(Hm+k −Hm)

�m+ k

k

�zk.

지수급수와 마찬가지로 스털링 수를 통해서좀 더 일반적인 방정식이 나온다.

(ln1

1− z)n = zn +

1

n+ 1

�n+ 1n

�zn+1 + · · · = n!

k

�kn

�zk

k!.

2011년 3월 3일 목요일

Page 26: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

베르누이 수

알려진 생성함수들 F

26

기타

z(z + 1) . . . (z + n− 1) =�

k

�kn

�zk,

zn

(1− z)(1− 2z) . . . (1− nz)=

k

�kn

�zk,

z

ez − 1= 1− 1

2z +

1

12z2 + · · · =

k≥0

Bkzk

k!.

xr = 1 + rz +r(r + 2t)

2z2 + · · · =

k≥0

r(r + kt)k−1

k!zk.

2011년 3월 3일 목요일

Page 27: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

계수 빼내기 G

27

G(z) zn의 항의 계수가 라고 할 때[zn]G(z)

예를 들어G(z) = a0 + a1z + a2z

2 + · · · [zn]G(z) = an의

[zn]G(z) =1

2πi

|z|=r

G(z)dz

zn+1

2011년 3월 3일 목요일

Page 28: 110218 [아꿈사발표자료] taocp#1 1.2.9. 생성함수

끗생성함수는 우리가 수열을 전시하기 위해

수열을 걸어놓는 빨랫줄이다.- 윌프H.S. Wilf (1989)

2011년 3월 3일 목요일