งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic."— ใบสำเนางานนำเสนอ:

1 Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th
CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic Programming, Backtracking Dr.Surasak Mungsing Oct-19

2 Common algorithms Greedy Algorithms Divide and Conquer
Dynamic Programming Backtracking algorithms 10/14/2019

3 Dynamic Programming 10/14/2019

4 Dynamic Programming เป็นเทคนิคการเขียนโปรแกรมที่ไม่ใช้ Recursive call เพื่อปรับปรุงประสิทธิภาพการทำงานของขั้นตอนวิธีให้ดีขึ้น โดยทั่วไปแล้วมีหลายกรณีที่การแก้ปัญหาโดยขั้นตอนวิธีแบบ Recursive algorithm ให้ผลลัพธ์เร็วกว่าวิธีการอื่นที่ไม่ใช้ Recursive call ถ้าสงสัยว่าโปรแกรมแปลภาษา (Compiler) อาจส่งผลให้โปรแกรมทำงานอย่างไม่มีประสิทธิภาพ ก็สามารถช่วย Compiler ได้โดยเขียนโปรแกรมแบบ non-recursive บันทึกผลลัพธ์ย่อยของแต่ละขั้นตอนอย่างเป็นระบบลงในตาราง คือหลักการของ Dynamic Programming 10/14/2019

5 กรณีที่ Greedy Method ใช้ไม่ได้ผล
Find a shortest route from S to T. Greedy method solution: S  A  D  T = =23 Dynamic Programming solution: S  C  F  T = = 9 10/14/2019

6 Dynamic Programming Approach
d(S,T) = min { 1 + d(A,T), 2 + d(B,T), 5 + d(C,T) } หาค่า d(A,T) d(A,T) = min { 4 + d(D,T), 11 + d(E,T) } d(D,T) = 18 and d(E,T) = 13 d(A,T) = min { , } = 22 10/14/2019

7 Dynamic Programming Approach
d(S,T) = min { 1 + d(A,T), 2 + d(B,T), 5 + d(C,T) } หาค่า d(A,T) d(A,T) = min { 4 + d(D,T), 11 + d(E,T) } d(D,T) = 18 and d(E,T) = 13 d(A,T) = min { , } = 22 10/14/2019

8 Dynamic Programming Approach
d(S,T) = min { 1 + d(A,T), 2 + d(B,T), 5 + d(C,T) } หาค่า d(B,T) และ d(C,T) d(B,T) = min { 9 + d(D,T), 5 + d(E,T), 16 + d(F,T) } = min { , , } = min { 27, 18, 18 } = 18 d(C,T) = 4 10/14/2019

9 Dynamic Programming Approach
d(S,T) = min { 1 + d(A,T), 2 + d(B,T), 5 + d(C,T) } ดังนั้น Shortest Path จาก S ไป T หรือ d(S,T) คือ d(S,T) = { , , } = min { 23, 20, 9 } = 9 10/14/2019

10 Fibonacci Algorithm let a = 0; let b = 1;
function "fibonacci", parameters 'n' (integer > 0): if n equals 1 return 0; if n equals 2 return 1; return fibonacci(n-2) + fibonacci(n-1); (end of function) let a = 0; let b = 1; while n is greater than 2 do: { let c = a + b; let a = b; let b = c; subtract 1 from n; } (end of loop) return b; (end of function)

11 ตัวอย่างการใช้เทคนิคของ Dynamic programming
ปัญหาการคำนวณตัวเลข Fibonacci number ซึ่งหากใช้วิธีการของ Recursive algorithm จะมีความซับซ้อนด้านเวลาเป็น Exponential คือ O(2n) แต่หากเปลี่ยนมาใช้วิธีการของ non-recursive algorithm เป็นลักษณะของ Linear algorithm จะช่วยให้การทำงานมีประสิทธิภาพยิ่งขึ้นมากเป็น O(n) All-pairs Shortest Path Dijkstra’s algorithm (Single-source, Shortest-path) Resource Allocation Problems 10/14/2019

12 Example - Resource Allocation Problem
ตารางผลตอบการการจัดทรัพยากรให้โครงการ(Profit matrix) P(i,0) = 0 10/14/2019

13 Example - Resource Allocation Problem
Let (i,j) represent the state attained where i resources have been allocated to project 1, 2, 3, …, j เริ่มแรก จัด resource i ให้ Project 1 ดังนั้นจะเหลือเพียง 3 - i ที่สามารถจัดให้ Project 2 10/14/2019

14 Example - Resource Allocation Problem
The first two stage decision of resource allocation problem. Second state decision 10/14/2019

15 Example - Resource Allocation Problem
The resource allocation problem described as a multi-stage graph. 10/14/2019

16 Backward Reasoning Approach
The longest path is S  C  H  L  T 2 resources allocated to project 1 1 resource allocated to project 2 0 resource allocated to project 3 And 0 resource allocated to project 4 10/14/2019

17 Backtracking Algorithm
10/14/2019

18 Backtracking Algorithm
เป็นเทคนิคที่ใช้ในการหาคำตอบให้กับปัญหาที่ต้องมีการทดสอบผลของการการตัดสินใจในแต่ละขั้นตอนว่าจะดำเนินการต่อไปอย่างไร ถ้าได้คำตอบที่ต้องการก็จะหยุดการทำงาน แต่ถ้าผลการตัดสินใจที่ผ่านมาไม่ได้คำตอบที่ต้องการก็จะมีการย้อนกลับขั้นตอนตามเส้นทางการตัดสิใจเดิมและตัดสินใจเดินหน้าค้นหาคำตอบต่อไปใหม่ ตัวอย่างของการใช้เทคนิคนี้ในการออกแบบขั้นตอนวิธีเช่น การแก้ปัญหา 8 ราชินี (Eight Queens Problem) ปัญหายุทธศาสตร์ของเกมส์ (Games) ปัญหาการหาทางออกจากเขาวงกต 10/14/2019

19 Stack Applications: Backtracking
10/14/2019

20 Stack Applications: Backtracking
10/14/2019

21 การคำนวณได้และการตัดสินใจของปัญหาที่ยากต่อการแก้ไข
Next Lecture: การคำนวณได้และการตัดสินใจของปัญหาที่ยากต่อการแก้ไข 14-Oct-19


ดาวน์โหลด ppt Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.

งานนำเสนอที่คล้ายกัน


Ads by Google