CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
ระบบสมการเชิงเส้น F M B N เสถียร วิเชียรสาร.
Advertisements

DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
บำรุง พ่วงเกิด Office: ME201 Homepage: 12/17/2008
บทที่ 3 ลำดับและอนุกรม (Sequences and Series)
Number Theory (part 1) ง30301 คณิตศาสตร์ดิสครีต.
Chapter 2 Root of Nonlinear Functions
EEET0485 Digital Signal Processing Asst.Prof. Peerapol Yuvapoositanon DSP3-1 ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ DSP 5 The Discrete.
DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
EEET0485 Digital Signal Processing Asst.Prof. Peerapol Yuvapoositanon DSP3-1 ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ DSP 6 The Fast.
ครั้งที่ 8 Function.
ชื่อสมบัติของการเท่ากัน
การใช้งานโปรแกรม Excel เบื้องต้น
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
AVL Tree.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
จำนวนนับ และการบวก การลบ การคูณ การหารจำนวนนับ
ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์
การประยุกต์สมการเชิงเส้นตัวแปรเดียว
คณิตศาสตร์และสถิติธุรกิจ
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
Image Processing & Computer Vision
ระบบอนุภาค.
C Programming Lecture no. 6: Function.
บทที่ 4 การโปรแกรมเชิงเส้น (Linear Programming)
CSC201 Analysis and Design of Algorithms P and NP Problems
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
Asst.Prof. Dr.Surasak Mungsing
MAT 231: คณิตศาสตร์ไม่ต่อเนื่อง (4) ความสัมพันธ์ (Relations)
การจำแนกบรรทัดข้อความ
จำนวนทั้งหมด ( Whole Numbers )
ระบบจำนวนเต็ม โดย นางสาวบุณฑริกา สูนานนท์
โครงสร้างข้อมูลแบบคิว
ค33211 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 5
ค21201 คณิตศาสตร์เพิ่มเติม 1
ภาควิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยสยาม
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)
การออกแบบโปรแกรม ขั้นตอนการแก้ปัญหา การนิยามปัญหา (Problem definition)
ค21201 คณิตศาสตร์เพิ่มเติม 1
F M B N สมบัติของจำนวนนับ ตัวคูณร่วมน้อย (ค.ร.น.).
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
School of Information Communication Technology,
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
แบบฝึกหัด จงหาคำตอบที่ดีที่สุด หรือหาค่ากำไรสูงสุด จาก
Recursive Method.
โครงสร้างข้อมูล Queues
จำนวนจริง จำนวนอตรรกยะ จำนวนตรรกยะ เศษส่วน จำนวนเต็ม จำนวนเต็มบวก
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
การค้นในปริภูมิสถานะ
อัลกอริทึมแบบละโมบ.
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
วิธีเรียงสับเปลี่ยนและวิธีจัดหมู่
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)
โครงสร้างข้อมูลแบบ สแตก (stack)
การค้นในปริภูมิสถานะ
กำหนดการพลวัต (Dynamic programming)
การแบ่งแยกและเอาชนะ Divide & Conquer
การแบ่งแยกและเอาชนะ Divide & Conquer
การวิเคราะห์และออกแบบขั้นตอนวิธี
Asst.Prof. Dr.Surasak Mungsing
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 11: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy,
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
ใบสำเนางานนำเสนอ:

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

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

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

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

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

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

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 0.3 B3 B4 empty empty 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/4/2017

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

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

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

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

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

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

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

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

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

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

4-Apr-17