ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยAreva Kattiya ได้เปลี่ยน 10 ปีที่แล้ว
1
CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer
Asst.Prof. Dr.Surasak Mungsing Apr-17
2
Common algorithm Greedy Algorithms Divide and Conquer
Dynamic Programming Randomized algorithms Backtracking algorithms 4/4/2017
3
Greedy Algorithms เป็นเทคนิคที่การตัดสินใจเลือกหนทางปฏิบัติโดยพิจารณาทางเลือกที่เห็นว่าดีที่สุดในขณะนั้น หนทางปฏิบัติที่เลือกอาจเป็นเพียง Local optimum ตัวอย่างการใช้เทคนิค Greedy Algorithm Dijkstra’s, Prim’s และ Kruskal’s Algorithms ปัญหาการกำหนดงาน (Simple Scheduling Problems) ปัญหาการบรรจุ (Approximate Bin Packing) 4/4/2017
4
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 = ( )/4 = 100/4 = 25 J3 J1 J2 J4 36 21 11 3 Schedule #2:Average completion time = 17.75 Avg. completion time = ( )/4 = 71/4 = 17.75 4/4/2017
5
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
6
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
7
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
8
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
9
เป็นเทคนิคการออกแบขั้นตอนวิธีที่แบ่งออกเป็น 2 ขั้นตอน
Divide and Conquer เป็นเทคนิคการออกแบขั้นตอนวิธีที่แบ่งออกเป็น 2 ขั้นตอน Divide ซึ่งเป็นขั้นตอนการแบ่งปัญหาออกเป็นส่วนย่อยๆแล้วแก้ปัญหาย่อยเหล่านั้นโดยวิธีการของฟังก์ชันที่เรียกตัวเองอย่างน้อย 2 ครั้ง Conquer เป็นขั้นตอนของการสร้างผลลัพธ์ของปัญหาใหญ่จากผลลัพธ์ของปัญหาย่อย 4/4/2017
10
ตัวอย่างการแก้ปัญหาโดยใช้เทคนิค Divide and Conquer
ปัญหา the Maximum Subsequence Sum การเรียงลำดับแบบ Mergesort และ Quicksort ปัญหาการคูณเมตริกซ์ (Matrix Multiplication) ปัญหาการหาคู่ของจุดที่ใกล้กันที่สุด (Closest-point Problem) 4/4/2017
11
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
12
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
13
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
14
AB = Decompose AB into four quadrants A1,1 = 3 4 A1,2 = 1 6 B1,1 = 5 6 B1,2 = 9 3 A2,1 = 5 1 A2,2 = 2 9 B2,1 = 1 1 B2,2 = 8 4 Eight N/2 by N/2 matrices 4/4/2017
15
Matrix Multiplication
A1, A1,2 A2,1 A2,2 B1, B1,2 B2,1 B2,2 = C1, 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
16
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
17
Closest-point Problem
ขั้นตอนการแก้ปัญหานี้ด้วยกลวิธีการแบ่งแยกและเอาชนะ (Divide and Conquer) แบ่งจุดเป็นสองฝั่ง (ซ้ายและขวา) ขนาดพอๆกัน หาคู่จุดที่ใกล้กันที่สุดของฝั่งซ้าย หาคู่จุดที่ใกล้กันที่สุดของฝั่งขวา หาคู่จุดที่ใกล้กันที่ข้ามฝั่ง (จุดหนึ่งอยู่ฝั่งซ้ายและอีกจุดหนึ่งอยู่ฝั่งขวา) เปรียบเทียบสามคู่ที่ได้จากขั้นตอนที่ 2, 3 และ 4 ก็จะได้คู่จุดที่ใกล้กันที่สุดในระนาบ T(n) = 2T(n/2) + O(n) + (เวลาของขั้นตอนที่ 4) 4/4/2017
18
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
19
4-Apr-17
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.