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 =50nและ
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
1i n
i
1i j n
i
j
|
n 1
|
A
A
A
|
...
(
1
)
| Ai A j ... An |
i j k
1i 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