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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
สื่อการเรียนรู้ โดย นางสุมิตรา ดีมี
Advertisements

รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
Stack.
Data structure & Algorithms
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
ภาษามาตรฐานสำหรับนิยามข้อมูล และการใช้ข้อมูล
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer
9. การออกแบบขั้นตอนวิธี
MySQL Case study about MySQL On XAMPP server Update : August 23,2012
Shortest-Path Algorithms
การค้นในปริภูมิสถานะ
แนะนำรายวิชา การออกแบบและวิเคราะห์ขั้นตอนวิธี. รหัสวิชา ชื่อวิชา Design and Analysis of Algorithm หน่วยกิต 3 (2-2-5) ภาคเรียน 2 ปี 2556 เริ่ม 4.
O “take what you can get now” o make a decision that appears to be good (close to optimal solution) o proceed by searching a sequence of choices iteratively.
การจัดเรียงข้อมูล (sorting)
การค้นในปริภูมิสถานะ
การแบ่งแยกและเอาชนะ Divide & Conquer
Timed Math Quiz. โปรแกรมสุ่มคำนวณเลขแข่งกับ เวลา.
QueueQueue Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Linked List ( ต่อ ) Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
อัลกอริทึมและผังงาน อาจารย์สมเกียรติ ช่อเหมือน
ความก้าวหน้าการพัฒนากฎหมาย ที่อยู่ในความรับผิดชอบของกรมอนามัย
Chapter 9 ตัวชี้ pointer.
INC 161 , CPE 100 Computer Programming
Data Structure & Algorithm Concept
การวิเคราะห์และออกแบบขั้นตอนวิธี
การแสดงขั้นตอนวิธีด้วยรหัสเทียม (Pseudo-Code)
การเตรียมความพร้อมรับการประเมิน จาก สมศ.
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Complexity Lecturers : Boontee Kruatrachue Room no Kritawan Siriboon Room no. 913 Text : Data Structures & Algorithm.
CPE 332 Computer Engineering Mathematics II
13 October 2007
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
SQL – Web Programming and Web Database
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 13: การคำนวณได้และการตัดสินใจของปัญหา ที่ยากต่อการแก้ไข.
การวิเคราะห์และออกแบบขั้นตอนวิธี
กลุ่มอาชีวอนามัย สำนักโรคจากการประกอบอาชีพและสิ่งแวดล้อม
การวัดอัลกอริทึม (Analysis of Algorithm)
Asst.Prof. Dr.Surasak Mungsing
Data Structure and Algorithm
Dr.Surasak Mungsing CSE 221/ICT221 Analysis and Design of Algorithms Lecture 04: Time complexity analysis in form of Big-Oh.
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 04: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูป.
งานวันข้าวโพดเทียนบ้านเกาะ
เพื่อเข้าถึงแหล่งงบประมาณ
โครงการส่งเสริมเกษตรทฤษฎีใหม่ และเกษตรกรรมยั่งยืน ปี 2560
2. Algorithm Analysis.
Problem Solving ขั้นตอนวิธีและการแก้ปัญหาสำหรับวิทยาการคอมพิวเตอร์
ผู้อำนวยการกองกฎหมาย
การเขียนโปรแกรมย่อย.
Linked List (ต่อ) Lecturer : Kritawan Siriboon, Room no. 913
ปฏิบัติการที่ 05 การดำเนินการกับเมทริกซ์
เรื่องวิวัฒนาการนาฏศิลป์ไทย
เรื่อง การทอผ้าห่มสี่เขา/ตะกอ
การกระจายอายุของบุคลากร มหาวิทยาลัยมหิดล สำนักงานสภามหาวิทยาลัย
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
การกระจายอายุของบุคลากร มหาวิทยาลัยมหิดล คณะวิทยาศาสตร์
Data Structures & Algorithms Using Python
Algorithms Analysis Sanchai Yeewiyom
การกระจายอายุของบุคลากร เวชศาสตร์เขตร้อน
การสรุปผลข้อมูล และ Action Query
บทที่ 9 ปัญหาการขนส่ง Transportation Problem
การวิเคราะห์และออกแบบขั้นตอนวิธี
9. GRAPH ALGORITHMS.
การวิเคราะห์โจทย์ปัญหา (Problem Analysis)
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 03: ขั้นตอนวิธีและการวิเคราะห์ขั้นตอนวิธี Dr.Surasak.
การวิเคราะห์และออกแบบขั้นตอนวิธี
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
Constraint Satisfaction Problem (CSP)
อัลกอริทึม (Algorithm) ???
ใบสำเนางานนำเสนอ:

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

Common algorithm Greedy Algorithms Divide and Conquer Dynamic Programming Randomized algorithms Backtracking algorithms 4/23/2019

Greedy Algorithms เป็นเทคนิคที่การตัดสินใจเลือกหนทางปฏิบัติโดยพิจารณาทางเลือกที่เห็นว่าดีที่สุดในขณะนั้น หนทางปฏิบัติที่เลือกอาจเป็นเพียง Local optimum ตัวอย่างการใช้เทคนิค Greedy Algorithm Dijkstra’s, Prim’s และ Kruskal’s Algorithms ปัญหาการกำหนดงาน (Simple Scheduling Problems) ปัญหาการบรรจุ (Approximate Bin Packing) 4/23/2019

ตัวอย่างการแก้ปัญหา Simple Scheduling Problems Job Time J1 J2 J3 J4 15 8 3 10 J4 J1 J2 J3 15 23 26 36 Schedule #1: Average completion time = 25 Avg. completion time = (15 + 23 + 26 + 36)/4 = 100/4 = 25 J3 J1 J2 J4 36 21 11 3 Schedule #2:Average completion time = 17.75 Avg. completion time = (3 + 11 + 21 + 36)/4 = 71/4 = 17.75 4/23/2019

Approximate Bin Packing (On-line Next Fit) Item Size: 0.2, 0.5, 0.4, 0.7, 0.1, 0.3, 0.8 B1 B2 B3 empty B4 B5 empty empty 0.1 0.8 empty 0.5 empty 0.7 0.4 0.3 0.2 On-line algorithm: Next fit for 0.2, 0.5, 0.4, 0.7, 0.1, 0.3, 0.8 4/23/2019

Approximate Bin Packing (On-line First Fit) Item Size: 0.2, 0.5, 0.4, 0.7, 0.1, 0.3, 0.8 B1 empty B2 B3 empty B4 empty empty 0.1 0.8 0.5 0.7 0.3 0.4 0.2 On-line algorithm: First fit for 0.2, 0.5, 0.4, 0.7, 0.1, 0.3, 0.8 4/23/2019

Approximate Bin Packing (On-line Best Fit) Item Size: 0.2, 0.5, 0.4, 0.7, 0.1, 0.3, 0.8 B1 empty B2 empty B3 0.3 empty B4 0.1 0.8 0.5 0.7 0.4 0.2 On-line algorithm: Best fit for 0.2, 0.5, 0.4, 0.7, 0.1, 0.3, 0.8 4/23/2019

Approximate Bin Packing (Off-line Best Fit) Item Size: 0.8, 0.7, 0.5, 0.4, 0.3, 0.2, 0.1 0.1 0.2 B1 B2 0.3 B3 0.4 0.8 0.7 0.5 Off-line algorithm: Best fit for 0.8, 0.7, 0.5, 0.4, 0.3, 0.2, 0.1 4/23/2019

เป็นเทคนิคการออกแบขั้นตอนวิธีที่แบ่งออกเป็น 2 ขั้นตอน Divide and Conquer เป็นเทคนิคการออกแบขั้นตอนวิธีที่แบ่งออกเป็น 2 ขั้นตอน Divide ซึ่งเป็นขั้นตอนการแบ่งปัญหาออกเป็นส่วนย่อยๆแล้วแก้ปัญหาย่อยเหล่านั้นโดยวิธีการของฟังก์ชันที่เรียกตัวเองอย่างน้อย 2 ครั้ง Conquer เป็นขั้นตอนของการสร้างผลลัพธ์ของปัญหาใหญ่จากผลลัพธ์ของปัญหาย่อย 4/23/2019

ตัวอย่างการแก้ปัญหาโดยใช้เทคนิค Divide and Conquer ปัญหา the Maximum Subsequence Sum การเรียงลำดับแบบ Mergesort และ Quicksort ปัญหาการคูณเมตริกซ์ (Matrix Multiplication) ปัญหาการหาคู่ของจุดที่ใกล้กันที่สุด (Closest-point Problem) 4/23/2019

The Maximum Subsequence Sum Problem ให้ A1, A2, A3, …, AN เป็นเลขจำนวนเต็มบวกหรือลบก็ได้ จงหา  = Ak ที่มีค่ามากที่สุด j k=i ถ้า Input -2, 11, -4, 13, -5, -2 Max subsequence sum = ? คำตอบที่ถูกต้องคือ 20 (A2 through A4) 4/23/2019

Mergesort 1 26 24 13 2 38 27 15 1 26 24 13 2 38 27 15 1 26 24 13 2 38 27 15 1 26 24 13 2 38 27 15 1 26 24 13 2 38 27 15 1 26 24 13 2 38 27 15 1 26 24 13 2 38 27 15 1 26 24 13 2 38 27 15 Apr-19 4/23/2019 12

O(n3) Matrix Multiplication C=AB where A, B, and C are N x N matrices Public static int [ ] [ ] multiply (int [ ] [ ] a, int [ ] [ ] b) { int n=a.length; int [ ] [ ] c=new int [n] [n]; for ( int i=0; I < n; i++) // initialization for( int j = 0; j < n; j++) c [i] [j] = 0; for ( int i=0; I < n; i++) for ( int j = 0; j < n; j++) for ( int k = 0; k < n; k++) c [i] [j] += a[i] [k] * b[k] [j]; return c; } 4/23/2019

Example AB = 1 2 5 7 3 4 1 6 5 1 2 9 4 3 5 6 4 5 3 1 5 6 9 3 1 1 8 4 3 1 4 1 Decompose AB into four quadrants A1,1 = 3 4 1 2 A1,2 = 1 6 5 7 B1,1 = 5 6 4 5 B1,2 = 9 3 3 1 A2,1 = 5 1 4 3 A2,2 = 2 9 5 6 B2,1 = 1 1 3 1 B2,2 = 8 4 4 1 Eight N/2 by N/2 matrices 4/23/2019

Matrix Multiplication A1,1 A1,2 A2,1 A2,2 B1,1 B1,2 B2,1 B2,2 = C1,1 C1,2 C2,1 C2,2 C1,1 = A1,1B1,1 + A1,2B2,1 C1,2 = A1,1B1,2 + A1,2B2,2 C2,1 = A2,1B1,1 + A2,2B2,1 C2,2 = A2,1B1,2 + A2,2B2,2 4/23/2019

Closest-point Problem กำหนดให้มีจุด n จุด บนระนาบสองมิติ สิ่งที่อยากทราบคือว่าคู่จุดใดอยู่ใกล้กันที่สุด ให้จุด i อยู่ที่พิกัด (xi, yi) ดังนั้น dij ซึ่งคือระยะระหว่างจุด หาได้ดังนี้ dij = √ (xi-xj)2 + (yi-yj)2 ถ้าใช้วิธีเปรียบเทียบทุกคู่จุด มีอยู่ n จุด ก็ต้องมี n(n-1)/2 คู่ คำนวณระยะของคู่จุดหนึ่งคู่ใช้เวลาคงที่ ต้องคำนวณทุกคู่ ก็ใช้เวลาอยู่ใน O(n2) 4/23/2019

Closest-point Problem ขั้นตอนการแก้ปัญหานี้ด้วยกลวิธีการแบ่งแยกและเอาชนะ (Divide and Conquer) แบ่งจุดเป็นสองฝั่ง (ซ้ายและขวา) ขนาดพอๆกัน หาคู่จุดที่ใกล้กันที่สุดของฝั่งซ้าย หาคู่จุดที่ใกล้กันที่สุดของฝั่งขวา หาคู่จุดที่ใกล้กันที่ข้ามฝั่ง (จุดหนึ่งอยู่ฝั่งซ้ายและอีกจุดหนึ่งอยู่ฝั่งขวา) เปรียบเทียบสามคู่ที่ได้จากขั้นตอนที่ 2, 3 และ 4 ก็จะได้คู่จุดที่ใกล้กันที่สุดในระนาบ T(n) = 2T(n/2) + O(n) + (เวลาของขั้นตอนที่ 4) 4/23/2019

Closest-point Problem สมมติให้ dL คือระห่างระหว่างคู่จุดใกล้กันที่สุดที่ได้พบแล้วฝั่งซ้ายและ dR คือระห่างระหว่างคู่จุดใกล้กันที่สุดที่ได้พบแล้วฝั่งขวา d = min (dL, dR) การพิจาณาคู่จุดข้ามฝั่งจะพิจารณาเฉพาะจุดที่อยู่ห่างจากเส้นแบ่งไม่เกิน d และจุดใดที่อยู่ห่างกันตามแนวดิ่งเกิน d ก็ไม่ต้องสนใจ ด้วยวิธีการพิจารณาดังกล่าวจะใช้เวลาหาคู่จุดที่ใกล้ที่สุดข้ามฝั่งเป็น O(n) ดังนั้น เวลาที่ใช้ในการหาคู่จุดที่ใกล้ที่สุด n จุดบนระนาบ T(n) = 2T(n/2) + O(n) + (เวลาของขั้นตอนที่ 4) = 2T(n/2) + O(n) +O(n)= O(n log n) 4/23/2019

เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic Programming, Backtracking Next Lecture: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic Programming, Backtracking 23-Apr-19