DM_lect_8-adv counting

Download Report

Transcript DM_lect_8-adv counting

461191 Discrete Math
Lecture 8: Advanced Counting Techniques
San Ratanasanya
CS, KMUTNB
Today’s topics






Solutions to Midterm Exam
Administrivia
Recurrence Relations
Divide-and-Conquer Algorithms and
Recurrence Relations
Generating Functions
Inclusion-Exclusion and its Applications
2
Administrivia


Merry X’mas 2008
Happy New Year 2009
3
Recurrence Relations

ั พันธ์เวียนเกิด) เป็ นปั ญหา
Recurrence Relations (ความสม
้
ั พันธ์ระหว่างเทอมในลาดับในการ
ทีส
่ ามารถใชความส
ม
แก ้ปั ญหา

Logistic map or Reproduction and Starvation


Non-linear analysis


จานวนของกระต่าย, จานวนเงินในธนาคาร, ฯลฯ
ทฤษฎีไร ้ระบบ (Chaos Theory)
Recurrence relation สาหรับ ลาดับ {an} คือสมการทีแ
่ สดง
ั พันธ์ของเทอมก่อนๆของลาดับนั น
an ในรูปความสม
้ โดยที่
n ≥ n0 และ n0 เป็ น Nonnegative Integer ซงึ่ เราจะเรียก
ลาดับนัน
้ ว่าเป็ นคาตอบ (Solution) ของ relation ก็ตอ
่ เมือ
่ 4
Examples

ให ้ {an} เป็ น ลาดับ ทีเ่ ป็ นไปตาม สมการ an-1 - an-2
สาหรับค่า n ≥ 2 และสมมติให ้ a0 = 3 และ a1 = 5 จงหา
ค่าของ aa22, =a3a1 – a0 = 5 - 3 = 2
a3 = a2 – a1 = 2 – 5 = -3

จงหาว่าลาดับ {an} เป็ น solution ของ recurrence
relation yesan = 2aลn-1
an-2ำดัหรื
อไม่ นค
ถำตอบของ
้า
ำดับ-หลำยล
บสำมำรถเป็



an = 3n
an = 2n
an = 5
no
recurrence relation เดียวกันได้ หำกเรำไม่กำหนด
Initial condition ให้กบั relation นัน
้
yes
5
Modeling with Recurrence Relations



้ เทอมในลาดับก่อนที่ recurrence relation
Initial condition ใชระบุ
จะมีผล
สมการของ recurrence relation และ initial condition ทาให ้
คาตอบของ relation เป็ นเอกเทศ (unique) หรือ มีได ้เพียงลาดับ
เดียว
้
ทาให ้เราสามารถนาไปใชในการสร
้างแบบจาลอง (modeling or
่
simlation) เพือ
่ ดูพฤติกรรมของปั ญหาบางอย่างได ้ เชน

การคานวณดอกเบีย
้ ทบต ้น


การแพร่พันธุ์


Pn = Pn-1 + xPn-1 = … = (1+x)nP0 โดยที่ x คือ อัตราดอกเบีย
้ และ P0 คือจานวน
เงินเริม
่ ต ้น หรือ initial condition
Fibonacci Sequence: fn = fn-1 + fn-2
Tower of Hanoi
6
Examples

ฝากเงินจานวน 10000 ด ้วยอัตราดอกเบีย
้ 2% ต่อเดือน
เมือ
่ เวาผ่านไป 15 เดือน จะมีเงินทัง้ หมดเท่าไหร่ สมมติ
2
ให ้ไม่มPก
ี 15ารถอนหรื
อ14ฝากเงิ
างนี
= P14 + 0.02P
= 1.02Pน
= 1.02(1.02P
14 ในระหว่
13) ้ = 1.02 P13
= … = 1.0215P0 = 13458.6833  13458.22

ลูกหนูตัวผู ้และตัวเมียแรกเกิดคูห
่ นึง่ ถูกนาไปปล่อยไว ้ใน
พืน
้ ทีท
่ ดลองแห่งหนึง่ เพือ
่ ดูอต
ั ราการแพร่พันธุ์ หนูจะ
เริม
่ ผสมพันธุเ์ มือ
่ มีอายได ้ 2 เดือน สมมติวา่ หนูแต่ละคูม
่ ี
การผสมพันธุท
์ ก
ุ ๆ 1 เดือน และจะออกลูกมาเป็ นตัวผู ้
และตัวเมีย 1 คูท
่ ก
ุ ครัง้ เมือ
่ เวลาผ่านไป 1 ปี จะมีหนู
7
f12 = 144
8
Tower of Hanoi




มีเสา 3 เสา
มีแผ่นจานขนาดต่างกัน 3 แผ่น อยูท
่ เี่ สาแรก
ต ้องการย ้ายจานทัง้ หมดไปทีเ่ สาที่ 2 จะต ้องย ้ายจาน
ทัง้ หมดกีค
่ รัง้
Hint:
โดยมีเงือ
่ นไขว่า
• Recursive



ให้ยำ้ ยจำนได้ครัง้ ละ 1 แผ่น
แผ่นจำนทีเ่ ล็กกว่ำต้องอยูบ
่ นแผ่นจำนทีใ่ หญ่กว่ำเท่ำนัน
้
• Divide-and-Conquer
เปลีย
่ นจานวนเสาและจานวนแผ่นจานเพือ
่ เพิม
่ ความ
ั ซอนในการเล่
้
ซบ
น
9
Tower of Hanoi




สมมติวา่ เสาทีห
่ นึง่ มีจานวางอยู่ n จาน เราสามารถ ย ้ายจาน n-1
ไปทีเ่ สาที่ 3 โดยมีจานวนการย ้ายเป็ น n-1 ครัง้
จากนัน
้ ทาการย ้ายแผ่นจานขนาดใหญ่สด
ุ ไปไว ้ทีเ่ สาที่ 2 ซงึ่ ใช ้
การย ้าย 1 ครัง้
แล ้วทาการย ้ายแผ่นจาน n-1 แผ่นทีเ่ สาที่ 3 ไปยังเสาที่ 2 ซงึ่ ต ้อง
ใช ้ การย ้าย n-1 ครัง้
ดังนัน
้ เราสามารถเขียนสมการ recurrence relation ได ้ดังนี้







ให ้ Hn จานวนครัง้ ในการย ้ายแผ่นจาน n แผ่น โดยมี initial condition คือ H1 = 1
Hn = Hn-1 + 1 + Hn-1 = 2Hn-1 + 1 = 2(2Hn-2 + 1) + 1 = 22Hn-2 + 2 + 1
= 2(22Hn-3 + 1) + 2 + 1 = 23Hn-3 + 22 + 2 + 1
…
= 2n-1H1 + 2n-2H1 + 2n-3H1 + … + 2 + 1
= 2n-1 + 2n-2 + 2n-3 + … + 2 + 1
= 2n - 1
10
Vending Machine

ตู ้ขายน้ าตู ้หนึง่ รับเฉพาะเหรียญ 1 บาท และ 5 บาท จง
หา recurrence relation ของจานวนวิธใี นการหยอด
เหรียญ โดยทีค
่ ด
ิ ลาดับของการหยอดเหรียญด ้วย






ให ้ Pn แทนวิธใี นการหยอดเหรียญ n บาท
P1 = 1, P2 = 1, P3 = 1, P4 = 1, P5 = 2
P6 = 3, P7 = 4, P8 = 5, ….
สงั เกตุวา่ P6 = 3 = 2 + 1, P7 = 4 = 3 + 1, P8 = 5 = 4 + 1, …
Pn = Pn-1 + Pn-5
See Example 6-8 in Section 7.1
11
Bit Strings

จงหำ Recurrence Relation และ Initial Condition สำหรับจำนวน
ของ Bit Strings ทีม
่ ีควำมยำว n ทีไ่ ม่มี 0 2 ตัวอยูต
่ ด
ิ กัน พร้อมทัง้ หำ
จำนวนของ Bit Strings ดังกล่ำวทีม
่ ีควำมยำว 5 บิต
ให้ an แทนจำนวนของ bit strings ทีม
่ ีควำมยำว n และไม่มี 0 2 ตัวอยูต
่ ด
ิ กัน
an-1 แทนจำนวนของ bit strings ทีม
่ ีควำมยำว n-1 และไม่มี 0 2 ตัวอยูต
่ ด
ิ กัน
an-2 แทนจำนวนของ bit strings ทีม
่ ีควำมยำว n-2 และไม่มี 0 2 ตัวอยูต
่ ด
ิ กัน
เพรำะฉะนัน
้ an = an-1 + an-2, n  3  Sum Rule
Initial Condition:
a1 = 2  {‘0’, ‘1’}
a2 = 3  {‘01’, ‘10’, ‘11’}
ดังนัน
้ a5 = a4 + a3 = 8 + 5 = 13
(ถ้ำเทียบกับ Fibonacci Sequence จะเห็นว่ำ an = fn+2 เนื่องจำก a1 = f3, a2 = f4)
Solving Linear Recurrence Relations


้ {an} มากกว่าทีจ
โดยทั่วไปเราต ้องการหา Explicit Formula หรือ สมการทีใ่ ชหา
่ ะต ้อง
ทาการหา an ด ้วยวิธ ี recursive ในทีน
่ เี้ ราสนใจเฉพาะ recurrence relation ทีส
่ ามารถ
้
แทนด ้วยผลรวมเชงิ เสนของเทอมก่
อนหน ้าได ้
Linear Homogeneous Recurrence Relation of Degree k with
Constant Coefficient


an = c1an-1 + c2an-2 + … + ckan-k โดยที่ c1, c2, c3, …, ck เป็ นจานวนจริง และ ck ≠ 0
(1)
Examples

k = 1; การคิดดอกเบีย
้ ทบต ้น


Pn = (1+x)Pn-1
k = 2; Fibonacci

an = an-1 + an-2
13
Linear Homogeneous Recurrence
Relation with Constant Coefficient

Theorem 1: ให ้ c1 และ c2 เป็ นจานวนจริง สมมติ r2 – c1r – c2 = 0 มี
รากของสมการ r1 และ r2 ทีแ
่ ตกต่างกัน ดังนั น
้ ลาดับ {an} จะเป็ น
คาตอบของ Recurrence Relation
an = c1an-1 + c2an-2 ก็ตอ
่ เมือ
่ an = α1r1n + α2r2n สาหรับค่า n = 0, 1 ,2,
…
โดยที่ α1 และ α2 เป็ นค่าคงที่
ั พันธ์เวียนเกิด an = an-1 + 2an-2, a0 = 2, a1 = 7
จงหาคาตอบของความสม





จาก Characteristic Equation จะได ้ว่า r2 – r – 2 = 0 ซงึ่ จะได ้ Characteristic Root เป็ น r1 = 2,
r2 = -1
จะได ้ว่า an = α12n + α2(-1)n
จากนัน
้ เราสามารถหาค่า α1 และ α2 จากการแทน initial condition ลงในสมการข ้างต ้นจะได ้
α1 = 3 และ α2 = -1
สุดท ้ายจะได ้ an = 3·2n -(-1)n
จงหา Explicit Formula ของ Fibonacci Number


n
Characteristic Equation: r2 – 1r – 11 =50nและ
Characteristic
Root: r1,2 = (1 ± √5)/2
1 1 5 

 


fn 
หา α1 และ α2 ได ้ว่า α1 = 1/√5,
5  α22 = -1/√5
5  2 
14
Linear Homogeneous Recurrence
Relation with Constant Coefficient
Theorem 2: ให ้ c1 และ c2 เป็ นจานวนจริง โดยที่ c2 ≠ 0 สมมติวา่ สมการ r2
– c1r – c2 = 0 มีรากของสมการ r0 รากเดียว ดังนั น
้ ลาดับ {an} จะเป็ น
คาตอบของ Recurrence Relation
an = c1an-1 + c2an-2 ก็ตอ
่ เมือ
่ an = α1r0n + α2nr0n สาหรับค่า n = 0, 1 ,2, …
โดยที่ α1 และ α2 เป็ นค่าคงที่
(กรณีนี้ เราถือว่า r0 เป็ น Double Root หรือ เป็ น root ทีม
่ ี Multiplicity =
2)

ั พันธ์เวียนเกิด an = 6an-1 - 9an-2, a0 = 1,
จงหาคาตอบของความสม
a1 = 6
ึ่ จะได ้ r0 = 3
 r2 – 6r + 9 = 0 ซง
 α1 = 1 และ α2 = 1
 สุดท ้ายจะได ้ an = 3n + n3n
15
Linear Homogeneous Recurrence
Relation with Constant Coefficient
Theorem 3: ให ้ c1, c2, c3, …, ck เป็ นจานวนจริง และสมมติวา่ Characteristic
Equation เป็ น r2 – c1rk-1 – … - ck = 0 มีรากของสมการ k รากทีแ
่ ตกต่างกัน
คือ r1, r2, …, rk ดังนั น
้ ลาดับ {an} จะเป็ นคาตอบของ Recurrence Relation
an = c1an-1 + c2an-2 + … + ckan-k ก็ตอ
่ เมือ
่
an = α1r1n + α2r2n + … + αkrkn สาหรับค่า n = 0, 1 ,2, …
โดยที่ α1, α2 , …, αk เป็ นค่าคงที่

ั พันธ์เวียนเกิด an = 6an-1 - 11an-2 + 6an-3
จงหาคาตอบของความสม
โดยมี Initial Condition เป็ น a0 = 2, a1 = 5, และ a2 = 15
ึ่ จะได ้ r1 = 1, r2 = 2, r3 = 3
 r3 – 6r2 + 11r - 6 = 0 ซง
 จะได ้ว่า an = α1 + α22n + α33n
 จากนั น
้ เราสามารถหาค่า α1, α2, α2 ได ้ α1 = 1, α2 = -1, α3 = 2
 ดังนั น
้ an = 1 - 2n + 2·3n
16
Linear Homogeneous Recurrence
Relation with Constant Coefficient
Theorem 4: ให ้ c1, c2, c3, …, ck เป็ นจานวนจริง และสมมติวา่
Characteristic Equation เป็ น r2 – c1rk-1 – … - ck = 0 มีรากของสมการ t
รากทีแ
่ ตกต่างกัน คือ r1, r2, …, rt ด ้วย Multiplicity m1, m2, …, mt
ตามลาดับ โดยที่ mi 1, 2, …, t
ดังนั น
้ ลาดับ {an} จะเป็ นคาตอบของ Recurrence Relation
an = c1an-1 + c2an-2 + … + ckan-k ก็ตอ
่ เมือ
่
an = (α1,0 + α1,1n + … + α1,m1-1nm-1)r1n
+ (α2,0 + α2,1n + … + α2,m2-1nm-1)r2n
+ … + (αt,0 + αt,1n + … + αt,mt-1nm-1)rtn
สาหรับค่า n = 0, 1 ,2, … โดยที่ αi,j , 1 ≤ i ≤ t, 0 ≤ j ≤ mi-1 เป็ นค่าคงที่

ั พันธ์เวียนเกิด an = -3an-1 - 3an-2 - an-3, a0 = 1, a1 = -2 , a2 =
จงหาคาตอบของความสม
-1




r3 + 3r2 + 3r + 1 = 0 ซงึ่ มีรากของสมการ r = -1 ด ้วย Multiplicity เท่ากับ 3
ดังนั น
้ General Solution จะเป็ น an = α1,0(-1)n + α1,1n(-1)n + α1,2n2(-1)n
a1,0 = 1, a1,1 = 3, และ α1,2 = -2
จะได ้ an = (1 + 3n – 2n2)(-1)n
17
Solving Linear Recurrence Relations

Linear Non-Homogeneous Recurrence Relation with Constant
Coefficient



มีรป
ู สมการคล ้ายกับ (1) แต่จะมี f(n) เพิม
่ เข ้ามา
an = c1an-1 + c2an-2 + … + ckan-k + f(n) โดยที่ c1,c2,c3,…,ck เป็ นจานวนจริง, ck
ั ทีข
≠ 0 และ f(n) เป็ นฟั งก์ชน
่ น
ึ้ อยูก
่ บ
ั n และไม่เท่ากับ 0
สว่ นต ้นของสมาการเรียกว่า Associated Homogeneous Recurrence
Relation สว่ น f(n) เรียกว่า Particular Solution
จุดสำคัญของ Recurrence Relation แบบนี้คอ
ื ทุกๆเทอมจะเป็ นผลรวมของ
Associated Homogeneous Recurrence Relation และ Particular Solution
18
Linear Non-Homogeneous Recurrence
Relation with Constant Coefficient
Theorem 5: ถ้ำ {an(p)} เป็ น particular solution ของ non-homogeneous
linear recurrence relation with constant coefficient
an = c1an-1 + c2an-2 + … + ckan-k + F(n)
แล้ว ทุกๆคำตอบของ Recurrence Relation จะอยูใ่ นรูปของ
{an(p) + an(h)}
เมือ
่ an(h) คือ คำตอบของ associated homogeneous recurrence relation
an = c1an-1 + c2an-2 + … + ckan-k

จงหำคำตอบของ recurrence relation an = 3an-1 + 2n และถ้ำ a1 =3 คำตอบของ relation นี้คอ
ื อะไร

เนื่องจำก associated homogeneous recurrence relation คือ an = 3an-1 ดังนัน
้ Solution ในส่วนนี้คอ
ื
an(h) = 3n เมือ
่  เป็ นค่ำคงที่

เนื่องจำก particular solution อยูใ่ นรูปของ F(n) = 2n เรำจึงใช้ pn = cn + d เมือ
่ c และ d เป็ นค่ำคงที่ ซึง่
เป็ น solution ของ linear function

สมมติวำ่ pn = cn + d เป็ น solution จริง แล้วนำ solution นี้ไปแทนใน an จะได้วำ่

an = 3an-1 + 2n  cn + d = 3(c(n-1) + d) +2n

จำกนัน
้ แก้สมกำรหำค่ำ c และ d จะได้วำ่ c = -1, d = -3/2 เพรำะฉะนัน
้ an(p) = -n - 3/2

ดังนัน
้ an = an(p) + an(h) = -n - 3/2 + 3n

ถ้ำให้ a1 = 3 จะได้วำ่  = 11/6 เพรำะฉะนัน
้ an = -n - 3/2 + (11/6)3n
Linear Non-Homogeneous Recurrence
Relation with Constant Coefficient
Theorem 6: สมมติให้ {an} เป็ น non-homogeneous linear recurrence relation with
constant coefficient ทีอ่ ยูใ่ นรูปของ
an = c1an-1 + c2an-2 + … + ckan-k + F(n)
โดยที่ c1, c2, …, ck เป็ นจำนวนจริง และ
F(n) = (btnt + bt-1nt-1 + … b1n + b0)sn
โดยที่ bt, bt-1, …, b0 และ s เป็ นจำนวนจริง
เมือ่ s ไม่ใช่รำกของ characteristic equation ของ associated homogeneous recurrence
relation แล้ว จะมี particular solution ในรูป
(ptnt + pt-1nt-1 + … p1n + p0)sn
เมือ่ s เป็ นรำกของ characteristic equation และมี multiplicity m แล้ว จะมี particular
solution ในรูป
nm(ptnt + pt-1nt-1 + … p1n + p0)sn

ดู Example 12, 13 ใน Section 7.2
20
Divide-and-Conquer



Recursive Algorithm นัน
้ จะทาการแก ้ปั ญหาจาก Input
ทีก
่ าหนด โดยการแบ่งปั ญหาให ้มีขนาดเล็กลงเรือ
่ ยๆ
่ Binary
จนถึงจุดทีส
่ ามารถหาคาตอบได ้อย่างรวดเร็ว เชน
Search และ Merge Sort
กระบวนการเหล่านีเ้ ราทาต่อเนือ
่ งกันไปเรือ
่ ยๆ จนถึง
ขนาดของปั ญหาทีเ่ ล็กทีส
่ ด
ุ และได ้คาตอบทันที ซงึ่
กระบวนการนีใ้ นสว่ นแรกเรียกว่า Divide (แบ่ง) ปั ญหาให ้
มีขนาดเล็กลง เป็ นหลายๆ ปั ญหาทีส
่ ามารถใชวิ้ ธก
ี าร
เดียวกันในการแก ้ปั ญหาได ้ สว่ นนีเ้ ราเรียกว่า Conquer
(ครอบครอง)
21
ดังนัน
้ วิธก
ี ารแก ้ปั ญหาลักษณะนีจ
้ งึ ถูกเรียกว่า Divide-
Divide-and-Conquer Recurrence
Relations



สมมติวา่ Recursive Algorithm ได ้แบ่งปั ญหาขนาด n
ออกเป็ นปั ญหาย่อยๆ จานวน a ปั ญหาโดยทีแ
่ ต่ละปั ญหา
มีขนาดเป็ น n/b โดยที่ n หารb ลงตัวและสมมติวา่ ยังมี
เศษเหลือของปั ญหาทีเ่ ราต ้องใชอี้ ก g(n) เพือ
่ แก ้ปั ญหา
ในสว่ นนี้
การแก ้ปั ญหาทัง้ หมด หรือการ Conquer นัน
้ ก็คอ
ื การรวม
คาตอบของปั ญหาย่อยและปั ญหาเศษเหลือเข ้าด ้วยกัน
เป็ นคาตอบของปั ญหาใหญ่ทงั ้ หมด
้
สมมติให ้ f(n) เป็ นจานวนการทางานทีต
่ ้องใชในการ
แก ้ปั ญหาขนาด n เราจะได ้ f(n) ทีอ
่ ยูใ่ นรูปของ
22
Recurrence Relation ดังนี้
Examples

Binary Search

ใน Binary Search เราแบ่งการ search ออกเป็ น 2 สว่ น แต่ละสว่ นมีขนาดครึง่ หนึง่
ของจานวนทัง้ หมด หรือ n/2 และดูวา่ x ทีต
่ ้องการหานั น
้ อยูใ่ นสว่ นใด โดยการ
้
เปรียบเทียบอีก 2 ครัง้ ดังนั น
้ จานวนการทางานทีใ่ ชสามารถเขี
ยนได ้เป็ น


Fast Integer Multiplication

สมมติเราต ้องการคูณจานวนเต็มความยาว 2n บิต 2 ตัว เราสามารถแสดงให ้เห็นว่า
การคูรกันของเลขขนาด 2n นั น
้ สามารถลดรูปให ้เหลือเป็ นการคูณกันของเลขขนาด
n จานวน 3 ครัง้ พร ้อมกับการเลือ
่ น (Shift) และการบวกของเลข Binary (ดู
รายละเอียดจาก Example 4 ใน Section 7.3)


f(n) = f(n/2) + 2
f(2n) = 3f(n) + Cn เมือ
่ C เป็ นค่าคงที่
Fast Matrix Multiplication

ปกติแล ้วการคูณกันของ matrix ขนาด n x n 2 ตัว จะเป็ น O(n3) แต่ได ้มีการคิดค ้น
่ ในปี 1969 V. Strassen ได ้เสนอวิธก
วิธก
ี ารทีร่ วดเร็วยิง่ กว่า เชน
ี ารทีล
่ ดจานวนการ23
คูณลงเหลือ
Divide-and-Conquer Recurrence
Relations
Theorem 1: ให้ f เป็ นฟังก์ชน
ั เพิม
่ (Increasing Function) ทีเ่ ป็ นไปตำม Recurrence Relation
f(n) = a·f(n/b) + c
เมือ
่ ใดก็ตำมที่ n หำรด้วย b ลงตัว, a ≥ 1, b เป็ นจำนวนเต็มทีม
่ ำกกว่ำ 1, และ c เป็ นจำนวนจริงทีม
่ ีคำ่ เป็ นบวก แล้ว
O(log n), a  1
f ( n)  
ba
(n log
และถ้ำ n = 2k โดยที่ k เป็ นจำนวนเต็มบวกแล้
วจะได้
วำ่ ), a  1
โดยที่ C1 = f(1) + c / (a-1) และ
O
logb a
f (n)  C1n
 C2
C2 = -c / (a-1)
้
ซงึ่ Theorem 1 สามารถใชประมาณค่
า Complexity ของ Divide-and-Conquer
Algorithm ได ้ และนาไปสู่ Master Theorem ซงึ่ มีความสาคัญในการวิเคราะห์
Master algorithm
Theorem: ให้ f เป็ นฟังก์ชน
ั เพิม
่ (Increasing Function) ทีเ่ ป็ นไปตำม Recurrence Relation

f(n) = a·f(n/2) + c·nd
เมือ
่ ใดก็ตำมที่ n = bk, โดยที่ k เป็ นจำนวนเต็มบวก, a ≥ 1, b เป็ นจำนวนเต็มทีม
่ ำกกว่ำ 1, และ
c, d เป็ นจำนวนจริง โดยที่ c มีคำ่ เป็ นบวกและ d ไม่เป็ นจำนวนลบ (Nonnegative) แล้ว
O(n d ), a  b d

f (n)  O(n d log n), a  b d

logb a
d
O
(
n
),
a

b

24
Examples

ให ้ f(n) = 5f(n/2) + 3 และ f(1) = 7 จงหา f(2k) โดยที่ k เป็ นจานวน
เต็มบวก และประมาณค่า f(n) ถ ้า f เป็ น Increasing Function

จาก Theorem 1; a =5, b = 2, c = 3
กาหนดให ้ n = 2k จะได ้ว่า f(n) = 5k(31/4) -3/4

เนือ
่ งจาก f เป็ น Increasing Function ดังนัน
้ f(n) = O(nlogba) = O(nlog5)


้
จงประมาณจานวน Bit Operation ทีใ่ ชในการคู
ณกันของจานวนเต็ม
ขนาด n บิต



จากตัวอย่างก่อนหน ้า เราได ้ว่า f(n) = 3f(n/2) + Cn
ใช ้ Master Theorem จะได ้ว่า f(n) = O(nlog23) ≈ O(n1.6)
้
จงประมาณจานวนของการคูณและการบวกทีต
่ ้องใชในการคู
ณกัน
ของ Matrix ขนาด n x n

จากตัวอย่างก่อนหน ้า เราได ้ว่า f(n) = = 7f(n/2) + 15n2/4
25
Example

Closet-pair Problem: ปั ญหาในการหาจุด 2 จุดทีอ
่ ยูใ่ กล ้
่ 2กันทีส
่ ด
ุ ใน Set ของจุด n จุด ใน Space เชน
x  x )  ( y า
y งของจุ
)
Dimension Euclidean Space ซงึ่ (ระยะห่
ด 2 จุด
สามารถหาได ้จาก
ซงึ่ ต ้องทาการ
คานวณทัง้ หมด C(n,2) = n(n-1)/2 คู่ ดังนัน
้ จะมี O(n2)
แต่ทว่า เมือ
่ ใช ้ Divide-and-Conquer ทีส
่ ามารถแสดง
สมการในรูปของ Recurrence Relation
O(n log n) จะได ้ f(n) =
2f(n/2) + 7n
ทาให ้สามารถลดจานวนการคานวณลงเหลือ
2
i


j
2
i
j
26
Generating Functions




ึ ษาเกีย
จากการศก
่ วกับลาดับทีผ
่ า่ นมาจะเห็นว่าสมการที่
้ ้างลาดับแบบต่างๆนั น
ใชสร
้ อยูใ่ นรูปของการกระจาย ซงึ่
อาจทาให ้เกิดความผิดพลาดได ้ง่าย
เราสามารถเขียนสมการดังกล่าวนีใ้ หม่ให ้อยูใ่ นรูปทีเ่ กิด
้ กรมกาลัง
ความผิดพลาดได ้น ้อยลง โดยการใชอนุ
(Power Series)
กล่าวคือพยายามจัดเทอมต่างๆให ้อยูใ่ นรูปของ
ั ประสท
ิ ธิข
สม
์ องตัวแปรของอนุกรมกาลัง
ั ก่อกาเนิด
เราเรียกอนุกรมกาลังทีไ่ ด ้นีว้ า่ ฟั งก์ชน
(Generating Function)
27
Using Generating Functions to
Solve Recurrence Relations

จงเปลีย่ นรูปของ recurrence relation ak = 3ak-1 สำหรับ k =1,2,3… ทีม
่ ี initial condition
a0 = 2


k
ให้ G(x) เป็ น generating function ของ {ak} นั่นคือ G ( x)   ak x
k 0

เนื่องจำก xG( x) 

a x
k
k 0

k 1

  ak 1 x k
k 1
นำ G(x) และ xG(x) มำแทนลงใน recurrence relation จะได้วำ่



G ( x)  3xG( x)   ak x  3 ak 1 x  a0   (ak  3ak 1 ) x k  2
k
k 0


k 1
k 1

1
  ak xk
หรือ G(x) – 3xG(x) = (1-3x)G(x) = 2 นั่นคือ G(x) = 2/(1-3x) และจำก Table 1,
(1  ax) k 0
ทำให้ G ( x)  2

3
k 0

k
ดังนัน
้

k
x   2  3k x k
k
a k  2  3k x k
k 0
Inclusion-Exclusion
Theorem 1: หลักกำรของกำรเพิม
่ เข้ำ-ตัดออก
ถ้ำให้ A1, A2, …, An เป็ น Set จำกัด จะได้วำ่
| A1  A2  ...  An |
 A  | A  A
1i  n

i
1i  j  n
i
j
|
n 1
|
A

A

A
|

...

(

1
)
| Ai  A j  ...  An |
 i j k
1i  j  k  n



กรณี 2 Set: |A  B| = |A| + |B| - |A  B|
กรณี 3 Set: |A  B  C| = |A| + |B| + |C|
- |A  B| - |A  C| - |B  C|
+ |A  B  C|
้
ใชแผนภาพเวนน์
(Venn Diagram) ชว่ ยในการคานวณ
30
Examples

ั ้ เรียนวิชา discrete math ชน
ั ้ หนึง่ มี นศ.จากภาควิชา CS 65 คน, มีนศ. 17 คน
ในชน
จากภาควิชา Math และนศ. อีก 11 คนทีเ่ รียนทัง้ 2 ภาควิช=า 65
จงหาว่
ง้ หมดใน
+ 17านศ.ทั
– 11 =
71
ั ้ เรียนนีม
ชน
้ ก
ี ค
ี่ น
= 142 + 90 -12 = 220



1000
1000   1000

มีจานวนเต็มบวกทีไ่ ม่เกิน 1000 กีจ
่ านวนทีส
่ ามารถหารด ้วย7
หรื อ
 11 ลงตั
 ว
 7   11   7 11
ั ้ ปี ท ี่ 1 ทัง้ หมด 1807=คน
สมมติมน
ี ศ.ชน
มี 453
คนที+เ่ รี567
ยน CS,
567=คนเรี
ยนEE, และ
1807
– (453
– 299)
1086
299 คนเรียนทัง้ 2 ภาค จานวนนศ.ทีไ่ ม่ได ้เรียนทัง้ 2 ภาคนีม
้ เี ท่าไหร่
ิ ปศาสตร์ 2092 คนต ้องลงเรียนภาษาอย่างน ้อย 1 ภาษาจากภาษาสปน
นศ.คณะศล
ี ปรากฎว่ามีนศ. 1232 คนลงเรียนภาษาสเปน, 879 คนเรียน
ฝรั่งเศส และรัสเซย
ี –นอกจากนี
ภาษาฝรั่งเศส, 114 คนเรียนภาษารั
สเซย
ย
้ ังมี+103
เ่ รีย–นภาษาสเปน
= 2092
(1232 + 879
114คนที
– 103
23 – 14)
=7
ี อยู่ 23 คน และ อีก 14 คนทีเ่ รียน 31
และฝรั่งเศส มีนศ.ทีเ่ รียนภาษาสเปนและรั
สเซย
Applications of Inclusion-Exclusion

้
หลักการของการเพิม
่ เข ้า-ตัดออก สามารถนาไปใชในการตอบ
คาถามทีเ่ กีย
่ วกับการนับสงิ่ ทีไ่ ม่มอ
ี ยูใ่ น set นัน
้ หรือคุณสมบัตท
ิ ี่
ิ ใน set นัน
สมาชก
้ ไม่ม ี ได ้
เพราะว่า |A1  A2  …  An| = N(P1P2…Pn) เมือ
่ N(P1P2…Pn)
ิ ทีม
คือจานวนของสมาชก
่ ค
ี ณ
ุ สมบัต ิ P
ดังนัน
้ N(P’1P’2…P’n) = N - |A1  A2  …  An|

ึ ษาเพิม
ศก
่ เติมใน Section 7.6


32
Homework 7






Section 7.1
 11, 23, 26, 28, 40, 41
Section 7.2
 6, 11, 38, 50
Section 7.3
 9, 10, 17, 20, 36, 37
Section 7.4
 13, 19, 25, 32, 39, 44
Section 7.5
 9, 12, 18, 21
Section 7.6


3, 6, 7, 12
Supplementary
 --
33
Programming Assignment 2
1.
2.
3.
4.
5.
6.
จงเขียนโปรแกรมทีใ่ ช้ในกำรทอนเงินตำมจำนวนทีร่ ะบุให้ดว้ ย Greedy Algorithm เพือ
่ ให้ใช้จำนวน
เหรียญหรือธนบัตรน้อยทีส
่ ุดในกำรทอน โดยมีเหรียญ 1, 5, และ 10 บำท รวมทัง้ ธนบัตรใบละ 20, 50,
100, และ 500 บำทในกำรทอนเงิน
Anagram เป็ นคำทีเ่ กิดจำกกำรสลับลำดับของตัวอักษรในคำเดิม. จงเขียนโปรแกรมเพือ
่ สร้ำง anagram
ทัง้ หมดของคำทีร่ ะบุให้ โดยกำหนดให้ไม่มีชอ
่ งว่ำงในคำนัน
้
จงเขียนโปรแกรมเพือ
่ แก้ปญ
ั หำ Tower of Hanoi ทีม
่ ีแผ่นจำน 3 แผ่น และเสำ 3 เสำ โดยให้แสดง
ขัน
้ ตอนกำรเคลือ
่ นย้ำยแผ่นจำนโดยละเอียดทุกขัน
้ ตอน เช่น peg 1, disk 1  peg 3 => peg 1, 2
disk, peg 2, 0 disk, peg 3, 1 disk เป็ นต้น
จงเขียนโปรแกรมเพือ
่ สร้ำงตำรำงสำหรับเกม Kakuro เมือ
่ กำหนดจำนวนช่อง และผลบวกทีต
่ อ
้ งกำรมำให้
จงเขียนโปรแกรมเพือ
่ คำนวณ matrix ขนำด n x n ทัง้ แบบปกติ และแบบ divide-and-conquer จำกนัน
้
ให้ทำกำรเปรียบเทียบว่ำวิธีใดเร็วกว่ำ
จงเขียนโปรแกรมเพือ
่ ทำกำรหำค่ำของเลขยกกำลังทีม
่ ีประสิทธิภำพมำกกว่ำวิธีปกติ พร้อมทัง้ พิสูจน์ให้เห็น
ว่ำวิธีดงั กล่ำวมีประสิทธิภำพมำกกว่ำวิธีปกติจริง
Each program should be submitted with a report showing
its code and how it works (some screen shorts plus descriptions).
34