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

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

การแบ่งแยกและเอาชนะ Divide & Conquer 1. บทนำ ☺ กลวิธีนี้มีใช้เพื่อจัดการกับปัญหาใน หลากหลายศาสตร์กับการออกแบบอัลกอริทึม เพื่อแก้ไขปัญหาเชิงคำนวณ แนวคิดการ.

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


งานนำเสนอเรื่อง: "การแบ่งแยกและเอาชนะ Divide & Conquer 1. บทนำ ☺ กลวิธีนี้มีใช้เพื่อจัดการกับปัญหาใน หลากหลายศาสตร์กับการออกแบบอัลกอริทึม เพื่อแก้ไขปัญหาเชิงคำนวณ แนวคิดการ."— ใบสำเนางานนำเสนอ:

1 การแบ่งแยกและเอาชนะ Divide & Conquer 1

2 บทนำ ☺ กลวิธีนี้มีใช้เพื่อจัดการกับปัญหาใน หลากหลายศาสตร์กับการออกแบบอัลกอริทึม เพื่อแก้ไขปัญหาเชิงคำนวณ แนวคิดการ แก้ปัญหาแบบนี้มีหลักการว่า แบ่งปัญหาใหญ่นั้น ออกเป็นปัญหาย่อยๆ หลาย ๆ ปัญหาที่มีขนาด เล็กกว่า หาคำตอบของแต่ละปัญหาย่อย แล้วนำ คำตอบย่อยๆ ที่ได้นี้มารวมกันเพื่อกลายเป็น คำตอบของปัญหาใหญ่ อาจจะซับซ้อนน้อยกว่า และใช้เวลาโดยรวมที่ดีกว่าก็ได้ ☺ อัลกอริทึมแบบแบ่งแยกและเอาชนะมักมี ประสิทธิภาพที่ดีกว่าอัลกอริทึมที่ทำงานอย่าง ตรงไปตรงมา ค่อยเป็นค่อยไป นอกจากนี้ยัง เขียนบรรยายตัวอัลกอริทึมในรูปของการทำซ้ำ แบบเรียกซ้ำได้อย่างเหมาะมาก ทำให้เขียน บรรยายอัลกอริทึมได้อย่างไม่ซับซ้อน และ วิเคราะห์ประสิทธิภาพการทำงานได้ง่าย 2

3 หัวข้อ ☺ โครงของอัลกอริทึมแบบ Divide & Conquer ☺ ตัวอย่าง  Binary search  Modular exponentiation  Karatsuba integer multiplication  Strassen matrix multiplication  Merge sort  Quick sort  Quick select  Closet point  Min + Max  Celebrity problem 3

4 โครงของอัลกอริทึม แบบ Divide & Conquer 4

5 Divide – Conquer - Combine DQ ( P) { if ( P is trivial ) return Solve ( P ) Divide P into P 1, P 2, …, P k for ( i =1to k ) S i = DQ ( P i ) S = Combine ( S 1, S 2, …, S k ) return S } 5

6 Binary Search 6

7 7

8 8

9 9

10 10

11 11

12 บางครั้งใช้ binary search ดีกว่า 12

13 13

14 Modular exponentiation 14

15 ☺ แสดงโดยการใช้เครื่องคิดเลขให้ดูก่อน 15

16 16

17 17

18 18

19 19

20 การหาค่า Fibonacci 20

21 Karatsuba integer multiplication 21

22 22

23 A x B 23

24 A x B อีกแบบ 24

25 A x B : Karatsuba (1962) 25

26 เปรียบเทียบเวลาการทำงาน 26

27 Strassen matrix multiplication 27

28 A x B : การคูณเมทริกซ์ MatrixMult( A[1..n][1..n], B[1..n][1..n] ){ C = new array[1..n][1..n] for ( i = 1; i <= n; i++ ) { for(j= 1; j<= n; j++){ C[i][j] = 0 for ( k = 1; k <= n; k++ ) { C[i][j] += A[i][k] * B[k][j] } } } return C n } 28

29 A x B : Divide & Conquer 29

30 A x B : Divide & Conquer 30

31 A x B : Strassen (1969) 31

32 Master Method ( ตีความ ) 32

33 Merge Sort 33

34 Merge Sort 34

35 Merge Sort 35

36 Merge Sort 36

37 Merge 37

38 Merge : #cmps 38

39 39

40 Merge Sort : ถ้าแบ่ง

41 Quick Sort 41

42 Quick Sort 42

43 43

44 Quick Sort 44

45 Partition ( การแบ่งส่วน ) 45

46 46

47 Quick Sort 47

48 Quick Sort : กรณีเร็วสุด 48

49 Quick Sort : กรณีช้าสุด 49

50 Quick Sort : กรณีเฉลี่ย 50

51 Quick Sort : กรณีเฉลี่ย 51

52 Quick Sort : เวลาการทำงาน 52

53 เวลาการทำงาน 53

54 เวลา / n log n 54


ดาวน์โหลด ppt การแบ่งแยกและเอาชนะ Divide & Conquer 1. บทนำ ☺ กลวิธีนี้มีใช้เพื่อจัดการกับปัญหาใน หลากหลายศาสตร์กับการออกแบบอัลกอริทึม เพื่อแก้ไขปัญหาเชิงคำนวณ แนวคิดการ.

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


Ads by Google