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

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

CSC201 Analysis and Design of Algorithms CSC201 Analysis and Design of Algorithms Dynamic Programming, Backtracking Asst.Prof. Dr.Surasak Mungsing E-mail:

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


งานนำเสนอเรื่อง: "CSC201 Analysis and Design of Algorithms CSC201 Analysis and Design of Algorithms Dynamic Programming, Backtracking Asst.Prof. Dr.Surasak Mungsing E-mail:"— ใบสำเนางานนำเสนอ:

1 CSC201 Analysis and Design of Algorithms CSC201 Analysis and Design of Algorithms Dynamic Programming, Backtracking Asst.Prof. Dr.Surasak Mungsing Aug-141

2 8/1/20142 Common algorithms  Greedy Algorithms  Divide and Conquer  Dynamic Programming  Backtracking algorithms

3 8/1/20143

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

5 8/1/20145 กรณีที่ 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

6 8/1/20146 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

7 8/1/20147 Dynamic Programming Approach หาค่า 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 d(S,T) = min { 1 + d(A,T), 2 + d(B,T), 5 + d(C,T) }

8 8/1/20148 Dynamic Programming Approach หาค่า 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 d(S,T) = min { 1 + d(A,T), 2 + d(B,T), 5 + d(C,T) }

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

10  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)  function "fibonacci", parameters 'n' (integer > 0): if n equals 1 return 0; if n equals 2 return 1; 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) Fibonacci Algorithm 10

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

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

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

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

15 8/1/ Example - Resource Allocation Problem The resource allocation problem described as a multi-stage graph.

16 8/1/ 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

17 8/1/201417

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

19 8/1/ Stack Applications: Backtracking

20 8/1/ Stack Applications: Backtracking

21 1-Aug CSE221/ICT221 Analysis and Design of Algorithms


ดาวน์โหลด ppt CSC201 Analysis and Design of Algorithms CSC201 Analysis and Design of Algorithms Dynamic Programming, Backtracking Asst.Prof. Dr.Surasak Mungsing E-mail:

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


Ads by Google