งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer Asst.Prof. Dr.Surasak Mungsing Aug-141.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer Asst.Prof. Dr.Surasak Mungsing Aug-141."— ใบสำเนางานนำเสนอ:

1 CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer Asst.Prof. Dr.Surasak Mungsing Aug-141

2 8/1/20142 Common algorithm  Greedy Algorithms  Divide and Conquer  Dynamic Programming  Randomized algorithms  Backtracking algorithms

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

4 8/1/20144 Simple Scheduling Problems JobTime J1 J2 J3 J J4J1J2 J Schedule #1: Average completion time = 25 Avg. completion time = ( )/4 = 100/4 = 25 J3 J1 J2 J4 J Schedule #2:Average completion time = Avg. completion time = ( )/4 = 71/4 = 17.75

5 8/1/20145 Approximate Bin Packing (On-line Next Fit) On-line algorithm: Next fit for 0.2, 0.5, 0.4, 0.7, 0.1, 0.3, 0.8 Item Size: 0.2, 0.5, 0.4, 0.7, 0.1, 0.3, empty empty 0.7 empt y 0.8 empty B2 B1 B3 B4 B5

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

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

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

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

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

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

12 Mergesort Aug-14128/1/

13 8/1/ O(n 3 ) 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; }

14 8/1/ Decompose AB into four quadrants A 1,1 = A 1,2 = B 1,1 = B 1,2 = A 2,1 = A 2,2 = B 2,1 = B 2,2 = Eight N/2 by N/2 matrices AB =

15 8/1/ Matrix Multiplication C 1,1 = A 1,1 B 1,1 + A 1,2 B 2,1 C 1,2 = A 1,1 B 1,2 + A 1,2 B 2,2 C 2,1 = A 2,1 B 1,1 + A 2,2 B 2,1 C 2,2 = A 2,1 B 1,2 + A 2,2 B 2,2 A 1,1 A 1,2 A 2,1 A 2,2 B 1,1 B 1,2 B 2,1 B 2,2 = C 1,1 C 1,2 C 2,1 C 2,2

16 8/1/ Closest-point Problem กำหนดให้มีจุด n จุด บนระนาบสองมิติ สิ่งที่อยากทราบคือว่าคู่จุดใดอยู่ใกล้กันที่สุด ให้จุด i อยู่ที่พิกัด (x i, y i ) ดังนั้น d ij ซึ่งคือ ระยะระหว่างจุด หาได้ดังนี้ d ij = √ (x i -x j ) 2 + (y i -y j ) 2 ถ้าใช้วิธีเปรียบเทียบทุกคู่จุด มีอยู่ n จุด ก็ต้องมี n(n-1)/2 คู่ คำนวณระยะของคู่จุดหนึ่งคู่ใช้เวลาคงที่ ต้องคำนวณทุกคู่ ก็ใช้เวลาอยู่ใน O(n 2 )

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

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

19 1-Aug-14 19


ดาวน์โหลด ppt CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer Asst.Prof. Dr.Surasak Mungsing Aug-141.

งานนำเสนอที่คล้ายกัน


Ads by Google