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

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

บทที่ 2 การวิเคราะห์ อัลกอริทึม. หัวข้อ  การวิเคราะห์อัลกอริทึม  แบบทดลอง และแบบคณิตวิเคราะห์  การนับจำนวนการทำงานของคำสั่งพื้นฐาน  อัตราการเติบโตของฟังก์ชัน.

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


งานนำเสนอเรื่อง: "บทที่ 2 การวิเคราะห์ อัลกอริทึม. หัวข้อ  การวิเคราะห์อัลกอริทึม  แบบทดลอง และแบบคณิตวิเคราะห์  การนับจำนวนการทำงานของคำสั่งพื้นฐาน  อัตราการเติบโตของฟังก์ชัน."— ใบสำเนางานนำเสนอ:

1 บทที่ 2 การวิเคราะห์ อัลกอริทึม

2 หัวข้อ  การวิเคราะห์อัลกอริทึม  แบบทดลอง และแบบคณิตวิเคราะห์  การนับจำนวนการทำงานของคำสั่งพื้นฐาน  อัตราการเติบโตของฟังก์ชัน  สัญกรณ์เชิงเส้นกำกับ  การวิเคราะห์การทำงาน  แบบลำดับ, แบบเลือกทำ, แบบวงวน, แบบเรียก ซ้ำ 2

3 ขั้นตอนการออกแบบอัลกอริทึม 3

4 จุดประสงค์ของการวิเคราะห์ อัลกอริทึม  เพื่อศึกษาประสิทธิภาพของอัลกอริทึม  เวลาการทำงาน  ปริมาณหน่วยความจำที่ใช้ในการทำงาน 4

5 ประเภทการวิเคราะห์อัลกอริทึม  Mathematical Analysis  Experimental Analysis  แปลงเป็นโค้ด  สั่งทำงานกับข้อมูลทดสอบ  จับเวลาการทำงาน  บันทึกผล  วิเคราะห์ความสัมพันธ์ระหว่างเวลาการทำงานกับ ปริมาณข้อมูล มักเป็นรูปแบบฟังก์ชันทาง คณิตศาสตร์ 5

6 SelectionSort 6

7 Selection Sort ( ภาษา C) void selectionSort(int d[], int n) { int k, i; for (k = n - 1; k > 0; k--) { int maxI =1; for (i = 0; i <= k; i++) if (d[i]> d[maxI]) maxI = i; int t = d[k]; d[k] = d[maxI]; d[maxI] = t; } } 7

8 #include int main(int argc, char *argv[]) { int i, k, n, repeat = 10; for( n = 0; n<=20000; n+=2000) { int *d = malloc( n * sizeof(int) ); long sum = 0; for (k=0; k

9 Selection Sort ( ภาษา Java) 9

10 public class TestSelectionSort { public static void main(String[] args) { int repeat = 10; for (int n = 0; n <= 20000; n += 2000) { int[]d = new int[n]; long sum = 0; for (int k = 0; k < repeat; k++) { for (int i = 0; i

11 public class TestSelectionSort { public static void main(String[] args) { int repeat = 10; for (int n = 0; n <= 20000; n += 2000) { int[]d = new int[n]; long sum = 0; for (int k = 0; k < repeat; k++) { for (int i = 0; i

12 สั่งทำงาน พร้อมบันทึกผล  ภาษา C : ใช้ GNU-C Compiler (3.4.2)  ภาษา Java : ใช้ Java 6 (build 1.6.0_14-b08)  Interpreted-only mode (option –Xint ตอนทำงาน )  Compilation to native code ( บังคับ compile ด้วยการเรียกเมท็อดว้ำ ๆ สัก ครั้ง )  Intel Core 2 Duo P Ghz Ram 3GB Windows XP 12

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

14 ใช้จำนวนการทำงานของคำสั่ง แทนเวลา static int counter= 0; static void selectionSort(int[] d) { counter = 1+d.length +d.length-1; for (int k = d.length-1; k > 0; k--) { int maxI =1; counter += 2 + k+2 + k+1; for (int i = 0; i <= k; i++) { counter += 1; if (d[i] > d[maxI]) { maxI=i; counter+=1; } } counter += 3; int t = d[k]; d[k] = d[maxI]; d[maxI] = t; } } 14

15 เขียนโปรแกรมทดลองนับคำสั่ง public class TestSelectionSort { public static void main(String[] args) { int repeat = 10; for (int n = 0; n <= 20000; n += 2000) { int[]d = new int[n]; long sum = 0; for (int k = 0; k < repeat; k++) { for (int i = 0; i

16 นับจำนวนการทำงานของคำสั่ง 16

17 นับเฉพาะคำสั่งตัวแทน static intcounter= 0; static voidselectionSort(int[] d) { for (int k = d.length-1; k > 0; k--) { int maxI =1; for (int i = 0; i <= k; i++) { counter += 1; if (d[i] > d[maxI]) { maxI = i; } } int t d[k]; d[k] = d[maxI]; d[maxI]=t; } } 17

18 นับทุกคำสั่ง VS. นับคำสั่ง ตัวแทน 18

19 Mathematical Analysis  ไม่ต้องเขียนเป็นโปรแกรม ไม่ต้องสั่งทำงาน จริง ไม่ต้องวาดกราฟ วิเคราะห์จาก อัลกอริทึม จะได้เป็นฟังก์ชั่น 19 1

20 นับทุกคำสั่ง VS. นับคำสั่ง ตัวแทน 20

21 คำสั่งตัวแทนต้องเป็นคำสั่ง พื้นฐาน  คำสั่งพื้นฐาน คือคำสั่งที่  ใช้เวลาการทำงานไม่เกินค่าคงที่ค่า หนึ่ง  ใช้เวลาการทำงานไม่แปรตามขนาด ของ input  เช่น + - * / if เปรียบเทียบ return break … 21

22 การวิเคราะห์อัลกอริทึม  เวลาการทำงาน แปรตามจำนวน การทำงานของคำสั่ง  จำนวนการทำงานของคำสั่ง แปร ตาม จำนวนการทำงานของคำสั่ง ตัวแทน  เพื่อความง่าย เราวิเคราะห์ อัลกอริทึมเชิงเวลาด้วยการหา ความสัมพันธ์ของ  จำนวนการทำงานของคำสั่งตัวแทน  ปริมาณข้อมูล 22

23 วัดปริมาณข้อมูลขาเข้า  พิจารณาว่า ขนาดของ input แปร ตามค่าอะไรของ input  ตัวอย่าง : sort(d[1…n])  Input เป็นอาเรย์จำนวน n ช่อง  แต่ละจำนวนมีค่าจำกัด  ดังนั้น n แทนปริมาณข้อมูล  ตัวอย่าง :shortestPath( V, E, w, s )  Input เป็นกราฟถ่วงน้ำหนัก  ขนาดของกราฟ แปรตามจำนวนปม และจำนวนเส้นเชื่อม  ดั้งนั้น |V|+|E| แทนปริมาณของ ข้อมูล 23

24 เปรียบเทียบผลการวิเคราะห์ 24

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

26 เปรียบเทียบอัตราการเติบโต 26

27 27

28 อัตราการเติบโต 28

29 29

30 30

31 31

32 32

33 33

34 ทบทวนสูตรคณิตศาสตร์ 34

35 35

36 36

37 37

38 38

39 39

40 อัตราการเติบโตของฟังก์ชัน 40

41 f(n) vs. g(n) 41

42 ตัวอย่าง 42

43 43

44 L'Hôpital's rule 44

45 45

46 เรียงลำดับฟังก์ชันตามการ เติบโต 46

47 47

48 สัญกรณ์เชิงเส้นกำกับ 48

49 สัญกรณ์เชิงเส้นกำกับ (Asymptotic Notations) 49 little-o  little – omega  Big – O  Big – Omega  Big - Theta 

50 little-o  50

51 little – omega  51

52 Big - Theta  52

53 Big – O  53

54 Big – Omega  54

55 สรุป 55

56 Big – O : ขอบเขตบน 56

57 Big-Omega : ขอบเขตล่าง 57

58 Big – Theta : ขอบเขตกระชับ 58

59 จุดประสงค์การใช้สัญกรณ์เชิง เส้นกำกับ  เข้าใจพฤติกรรมเมื่อพารามิเตอร์มีค่ามาก  วิเคราะห์ได้ง่าย  จัดกลุ่มฟังก์ชันตาอัตราการเติบโต 59

60 จงแสดงว่า 60

61 61 หา อนุพันธ์

62 62

63  ผลบวกของพจน์หลายพจน์ เลือกพจน์ที่โต เร็วสุด  ข้อสังเกต  เช่น 63

64 อัตราการเติบโต 64

65 การวิเคราะห์อัลกอริทึม  การทำงานแบบลำดับ  เลือกทำ  ทำซ้ำเป็นวงวน  ทำซ้ำแบบเรียกซ้ำ 65

66 การทำงานแบบลำดับ 66

67 67

68 68

69 69

70 การเลือกทำ 70

71 การทำงานแบบวงวน 71

72 72

73 73

74 74

75 75

76 ตัวอย่าง Insertion Sort 76

77 ตัวอย่าง while 77

78 78

79 การทำงานแบบเรียกซ้ำ 79

80 ตัวอย่าง การค้นหาแบบทวิภาค 80

81 81

82 ตัวอย่าง : Tower of Hanoi 82

83 dki 83

84 ต้นไม้แทนภาระจริงของการ เรียกซ้ำ 84

85 ขนาดข้อมูล กับ ภาระจริง 85

86 86

87 87

88 88

89 89

90 90

91 91

92 92

93 93

94 94

95 95

96 96

97 97

98 98

99 99

100 100

101 101

102 102

103 103

104 104

105 105

106 106

107 107

108 108


ดาวน์โหลด ppt บทที่ 2 การวิเคราะห์ อัลกอริทึม. หัวข้อ  การวิเคราะห์อัลกอริทึม  แบบทดลอง และแบบคณิตวิเคราะห์  การนับจำนวนการทำงานของคำสั่งพื้นฐาน  อัตราการเติบโตของฟังก์ชัน.

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


Ads by Google