204512-53/lecture10

จาก Theory Wiki
รุ่นแก้ไขเมื่อ 09:31, 11 ตุลาคม 2553 โดย Meta (คุย | มีส่วนร่วม) (หน้าที่ถูกสร้างด้วย '== Dynamic Programming == === ปัญหาที่ 1 เกมเก็บคะแนน === ไฟล์:ex1.jpg จากร…')
(ต่าง) ←รุ่นแก้ไขก่อนหน้า | รุ่นแก้ไขล่าสุด (ต่าง) | รุ่นแก้ไขถัดไป→ (ต่าง)
ไปยังการนำทาง ไปยังการค้นหา

Dynamic Programming

ปัญหาที่ 1 เกมเก็บคะแนน

Ex1.jpg

จากรูปแต่ละ node มีคะแนนอยู่ ต้องเริ่มจาก start ไปยัง end ให้ได้คะแนนรวมสูงสุดจะทำอย่างไร
วิธีการที่ง่ายที่สุดคือคำนวณผลรวมจากทุกเส้นทางแล้วหาเส้นทางที่มากที่สุด จากความสูง k จะใช้เวลา O(2k)

พิจารณาปัญหาแบบ bottom-up ดูจากโหนดที่ 1 -> 2 -> … -> n ที่โหนด 2 และ โหนด 3 การจะไปที่โหนด 5 จะเกิดการทับซ้อนของปัญหา จะต้องการเลือกเส้นทางที่มีคะแนนมากกว่า

พิจารณาปัญหาแบบ top-down ดูจากโหนดที่ n -> (n-1) -> … -> 1 สังเกตโหนดที่ 5 จะเกิดการทับซ้อนของปัญหา จะต้องการเลือกเส้นทางที่มีคะแนนมากกว่าจาก 2 เส้นทางคือโหนด 2 หรือโหนด 3


ปัญหาที่ 2 วิธีการเดินทาง

Ex2.jpg

วิธีเดินทางจากโหนด A ไปยังโหนด B ไปได้กี่วิธี

วิธีที่ง่ายสุดนับทุกเส้นทางจากโหนด A ไปยังโหนด B จากรูปมีเส้นเชื่อมโหนดครบทุกเส้นทำให้สามารถคำนวณได้เลยไม่ต้องนับ จะได้ หรือ จะได้ 56 วิธี

Ex2 1.jpg

จากรูปด้านบนถ้าเส้นเชื่อมไม่ครบทุกโหนดการคำนวณทำได้ยาก การจะนับทีละเส้นทางจาก A -> B ใช้เวลานาน ถ้าพิจารณาจากโหนด B ย้อนกลับขึ้นไป การจะรู้ค่าที่โหนด B ต้องรู้ค่าของ 2 โหนดก่อนหน้า โหนดก่อนหน้าก็ต้องรู้ค่าของโหนดก่อนหน้าถัดไปอีกเรื่อยๆ จนถึงโหนด A ดังนั้นถ้ามีการบันทึกค่าที่โหนดปัจจุบันไว้จะทำให้โหนดถัดมาค่าได้เลยไม่ต้องเริ่มใหม่ทำให้หาวิธีเดินทางได้ 20 วิธีดังนี้

Ex2 2.jpg

ปัญหาที่ 3 ปัญหาการขึ้นบันได

มีบันได n ขั้น มีวิธีการเดินขึ้น 2 วิธี คือ เดินขึ้นทีละขั้น หรือเดินขึ้นทีละ 2 ขั้น จะมีรูปแบบในการขึ้นไปถึงขั้นที่ n กี่รูปแบบ

พิจารณาจากขั้นที่ n จำนวนรูปแบบการขึ้นบันไดมาขั้นที่ n ต้องรู้รูปแบบการขึ้น 2 ขั้นก่อนหน้า (ขั้นที่ n-1 และ n-2) ถ้าให้ F(n) แทนจำนวนรูปแบบการขึ้นบันไดขั้นที่ n จะได้ว่า F(n) = F(n-1)+F(n-2)

ปัญหาที่ 4 การแบ่งหุ้น

มีใบหุ้น nใบ แต่ละใบมีมูลค่า a1, a2, a3, …, an จะจัดได้กี่รูปแบบ
ถ้ามีใบหุ้น 10 ใบมูลค่าดังนี้ 1, 4, 2, 1, 3, 4, 7, 10, 16 จัดรูปแบบได้ดังนี้

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
0 x
1 x x
4 x x x x
2 x x x x x x x
1 x x x x x x x x
3 x x x x x x x x x x x
4 x x x x x x x x x x x x x x x
7 x x x x x x x x x x x x x x x x x x x x x x
10 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
16 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x