Asst.Prof. Dr.Surasak Mungsing

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
Advertisements

รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
การจำลองความคิด รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
EEET0485 Digital Signal Processing Asst.Prof. Peerapol Yuvapoositanon DSP3-1 ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ DSP 6 The Fast.
การทำงานแบบเลือกทำ (Selection)
Chapter 1 โครงสร้างข้อมูลและอัลกอริธึมส์
Data Structures and Algorithms
Data Structures and Algorithms
Lecture 13: ฟังก์ชันเรียกตัวเอง
Data structure & Algorithms
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
บทที่ 1. พื้นฐานความรู้ทั่วไป
ฟังก์ชัน (Function).
การจำลองความคิด
Image Processing & Computer Vision
การตัดสินใจ โดยกระบวนการวิเคราะห์ตามลำดับชั้นกับงานชลประทาน
Surachai Wachirahatthapong
C Programming Lecture no. 6: Function.
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
CHAPTER 1 Major Sources of Errors in Numerical Methods
CSC201 Analysis and Design of Algorithms P and NP Problems
Asst.Prof. Dr.Surasak Mungsing
CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
การเขียนโปรแกรมภาษาซี
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 15 มิถุนายน 2550 Structure Programming มหาวิทยาลัยเนชั่น.
Chapter 6 Decision Statement
Chapter 7 Iteration Statement
คำสั่งควบคุมการทำงานของ ActionScripts
โครงสร้างข้อมูลคืออะไร ?
การออกแบบโปรแกรม ขั้นตอนการแก้ปัญหา การนิยามปัญหา (Problem definition)
Week 2 Variables.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
Computer Programming for Engineers
Computer Programming for Engineers
2.1 วิธีแก้ปัญหาด้วยคอมพิวเตอร์ (Computer problem solving methods)
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
วิชา วิศวกรรมซอฟต์แวร์ (Software Engineering)
การเร่งโครงการ Expedite Project.
Shortest-Path Algorithms
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
การแบ่งหนังสือออกตามลักษณะการจัดทำและความเหมาะสมของผู้อ่านแต่ละกลุ่ม
Recursive Method.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การแก้ปัญหาโปรแกรม (Flowchart)
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
การค้นในปริภูมิสถานะ
Introduction ธนวัฒน์ แซ่เอียบ.
แนะนำรายวิชา การออกแบบและวิเคราะห์ขั้นตอนวิธี. รหัสวิชา ชื่อวิชา Design and Analysis of Algorithm หน่วยกิต 3 (2-2-5) ภาคเรียน 2 ปี 2556 เริ่ม 4.
บทที่ 6 การจัดการโครงการ Project Management ญาลดา พรประเสริฐ.
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
การค้นในปริภูมิสถานะ
กำหนดการพลวัต (Dynamic programming)
Week 13 Basic Algorithm 2 (Searching)
การแบ่งแยกและเอาชนะ Divide & Conquer
การแบ่งแยกและเอาชนะ Divide & Conquer
ผังงานโปรแกรม (Program Flowchart)
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
Data Structure & Algorithm Concept
การวิเคราะห์และออกแบบขั้นตอนวิธี
Asst.Prof. Dr.Surasak Mungsing
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 11: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy,
การวิเคราะห์และออกแบบขั้นตอนวิธี
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
อัลกอริทึม (Algorithm) ???
ใบสำเนางานนำเสนอ:

Asst.Prof. Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSC201 Analysis and Design of Algorithms Dynamic Programming, Backtracking Asst.Prof. Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th Apr-17

Common algorithms Greedy Algorithms Divide and Conquer Dynamic Programming Backtracking algorithms 4/4/2017

Dynamic Programming 4/4/2017

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

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

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 { 4 + 18, 11 + 13 } = 22 4/4/2017

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 { 4 + 18, 11 + 13 } = 22 4/4/2017

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 { 9 + 18, 5 + 13, 16 + 2 } = min { 27, 18, 18 } = 18 d(C,T) = 4 4/4/2017

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) = { 1 + 22, 2 + 18, 5 + 4 } = min { 23, 20, 9 } = 9 4/4/2017

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)

ตัวอย่างการใช้เทคนิคของ 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 4/4/2017

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

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 4/4/2017

Example - Resource Allocation Problem The first two stage decision of resource allocation problem. Second state decision 4/4/2017

Example - Resource Allocation Problem The resource allocation problem described as a multi-stage graph. 4/4/2017

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 4/4/2017

Backtracking Algorithm 4/4/2017

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

Stack Applications: Backtracking 4/4/2017

Stack Applications: Backtracking 4/4/2017

CSE221/ICT221 Analysis and Design of Algorithms 4-Apr-17 CSE221/ICT221 Analysis and Design of Algorithms