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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Data Structures and Algorithms
Advertisements

Data Structures and Algorithms
Asst.Prof. Dr.Surasak Mungsing
CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer
การติดตามและ ประเมินผลโครงการ
System Requirement Collection (2)
บทที่ 5 การควบคุมทิศทางการทำงานของโปรแกรม
Structure Programming การเขียนโปรแกรมเชิงโครงสร้าง
หน่วยที่ 3 ภาษาคำสั่งพื้นฐานที่ใช้เขียนโปรแกรม PLC
สื่อการสอนด้วยโปรมแกรม “Microsoft Multipoint”
หน่วยการเรียนรู้ที่ 2 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
ตัวผกผันการคูณของเมทริกซ์
. แผ น กลุ่ม 1 กลุ่ม 2 กลุ่ม 3 กลุ่ม 4 กลุ่ม 5 รวม 1. สหกรณ์/กลุ่ม เกษตรกรได้รับ การส่งเสริม สนับสนุนการ ดำเนินงาน สหกรณ์ กลุ่มเกษตรกร
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
หน่วยที่ 5 การเวียนเกิด
หลักการโปรแกรม 1 Lecture 8: การทำซ้ำ (while, do-while)
เรื่อง หลักการเขียนโปรแกรม เบื้องต้น จัดทำโดย นางสาวชาดา ศักดิ์บุญญารัตน์
โปรแกรมคำนวณคะแนน สหกรณ์ ตามเกณฑ์ดีเด่นแห่งชาติ กรมส่งเสริม สหกรณ์ กองพัฒนาสหกรณ์ด้านการเงิน และร้านค้า วิธีการใ ช้
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
บทที่ 3 นักวิเคราะห์ระบบและการ วิเคราะห์ระบบ. 1. นักวิเคราะห์ระบบ (System Analysis) 1.1 ความหมายของนักวิเคราะห์ระบบ นักวิเคราะห์ระบบ (System Analysis:
ซอร์ฟแวร์ ( Software ). Microsoft excel Microsoft excel Microsoft power point.. Link Link.
คำสั่งควบคุมการทำงาน
Project Management by Gantt Chart & PERT Diagram
ผังงาน..(Flow Chart) หมายถึง...
ระบบบัญชาการในสถานการณ์ Incident Command System: ICS
การตรวจสอบคุณภาพเครื่องมือ
หน่วยที่ 1 ข้อมูลทางการตลาด. สาระการเรียนรู้ 1. ความหมายของข้อมูลทางการตลาด 2. ความสำคัญของข้อมูลทางการตลาด 3. ประโยชน์ของข้อมูลทางการตลาด 4. ข้อจำกัดในการหาข้อมูลทาง.
เกม คณิตคิดเร็ว.
หลักการโปรแกรม อ.ธนากร อุยพานิชย์.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
หน่วยการเรียนที่ 6 เรื่อง การจัดการฐานข้อมูลด้วย PHP Function
การเพิ่มประสิทธิภาพ ระบบบริหารจัดการความเสี่ยง
Data Structure & Algorithm Concept
การจัดการระบบฐานข้อมูล ภาษาที่ใช้ในระบบจัดการฐานข้อมูล
การวิเคราะห์และออกแบบขั้นตอนวิธี
การบริหารโครงการ Project Management
แล้วทำการเรียงลำดับข้อมูลใหม่โดยเรียงจากน้อยไปหามาก
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
โครงสร้างภาษา C Arduino
บทที่ 1 ความรู้ทั่วไปเกี่ยวกับคอมพิวเตอร์
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 13: การคำนวณได้และการตัดสินใจของปัญหา ที่ยากต่อการแก้ไข.
การวิเคราะห์และออกแบบขั้นตอนวิธี
หน่วยการเรียนที่ 4 เรื่อง การควบคุมทิศทางการทำงาน
กลุ่มคำและประโยค ภาษาไทย ม. ๓
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
Control Statement เงื่อนไขคำสั่งในโปรแกรม ภาษา C
Asst.Prof. Dr.Surasak Mungsing
บทที่ 8 การควบคุมโครงการ
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
การขอโครงการวิจัย.
บริษัท พัฒนาวิชาการ (2535) จำกัด
บทที่ 9 การทำซ้ำ (Loop).
Continuous Quality Improvement
SMS News Distribute Service
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 11: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy,
ผู้ช่วยศาสตราจารย์จุฑาวุฒิ จันทรมาลี
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
Data Structures and Algorithms 2/2561
บทที่ 7 การประมวลผลอาร์เรย์
การวิจัยทางการท่องเที่ยว
OPERATOR ภาษาปาสคาล (Pascal)
หน่วยการเรียนรู้ที่ 2 การกำหนดประเด็นปัญหา
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบวนซ้ำ
ฟังก์ชันของโปรแกรม Computer Game Programming
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
Decision: Single and Double Selection (if and if-else statement)
การวิเคราะห์และออกแบบขั้นตอนวิธี
อัลกอริทึม (Algorithm) ???
ใบสำเนางานนำเสนอ:

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

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

Dynamic Programming 10/14/2019

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

กรณีที่ 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 10/14/2019

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 10/14/2019

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 10/14/2019

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 10/14/2019

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 10/14/2019

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 10/14/2019

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

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

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

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

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

Backtracking Algorithm 10/14/2019

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

Stack Applications: Backtracking 10/14/2019

Stack Applications: Backtracking 10/14/2019

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