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

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

การวิเคราะห์และออกแบบขั้นตอนวิธี

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


งานนำเสนอเรื่อง: "การวิเคราะห์และออกแบบขั้นตอนวิธี"— ใบสำเนางานนำเสนอ:

1 การวิเคราะห์และออกแบบขั้นตอนวิธี
CSE 221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 04: Big O ดร.สุรศักดิ์ มังสิงห์ 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

2 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Big-Oh สัญลักษณ์ O ถูกแนะนำมาใช้ในการบ่งบอกอัตราการเติบโตเปรียบเทียบระหว่างฟังก์ชันในปี ค.ศ โดยพิจารณาจากพฤติกรรมที่เรียกว่า Asymptotic behavior ปัจจุบันถูกใช้ในการจำแนกฟังก์ชันและกลุ่มของฟังก์ชัน 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

3 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Upper Bound Notation เรากล่าวได้ว่าเวลาที่ใช้ในการเรียงลำดับแบบ Insertion Sort คือ O(n2) ถ้าจะกล่าวให้ถูกต้องต้องพูดว่าเวลาที่ใช้ในการเรียงลำดับแบบ Insertion Sort อยู่ในลำดับ O(n2) อ่าน O ว่า “Big-O” In general a function f(n) is O(g(n)) if  positive constants c and n0 such that f(n)  c  g(n)  n  n0 e.g. if f(n)=1000n and g(n)=n2, n0 > 1000 and c = 1 then f(n0) < 1.g(n0) and we say that f(n) = O(g(n)) The O notation indicates 'bounded above by a constant multiple of.' 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

4 Big-Oh, the Asymptotic Upper Bound
Big-Oh เป็นสัญลักษณ์ที่นิยมใช้กันมากที่สุดในการวิเคราะห์เวลาที่ใช้ในการทำงานของอัลกอริธึมเนื่องจากเรามักจะพิจารณาจากเวลาที่ใช้มากที่สุด (worst case time) ถ้าเวลาที่ใช้ในการทำงานของอัลกอริธึม เป็น O(n2) ดังนั้นเวลาในการทำงานของอัลกอริธึมจะไม่เกิน quadratic function สำหรับ input จำนวน n ที่ใหญ่พอ upper bound บางตัวอาจจะดูกว้างเกินไป แต่ก็ยังนับว่าเป็น upper bound ได้ เช่น 2n2 = O(n3) . จากนิยาม ถ้าใช้ค่า c = 1 and n0 = 2 O(n2) จะกระชับกว่า 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

5 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Example 1 6 g(n) f(n) สำหรับทุกค่า n>6, g(n) > 1 f(n). ฟังก์ชัน f (n) จะอยู่ใน big-O of g(n) นั่นคือ, f(n) is in O(g(n)). 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

6 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Example 2 g(n) f(n) 5 มีค่า n0 ซึ่งสำหรับทุกค่า n>n0, ถ้า f(n) < 1 g(n) ดังนั้น f(n) is in O(g(n)) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

7 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Example 3 5 h(n) f(n) 3.5 h(n) มีค่า n0=5, c=3.5, สำหรับทุกค่า n>n0, ถ้า f(n) < c h(n) ดังนั้น f(n) is in O(h(n)). 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

8 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

9 Exercise on O-notation
Show that f(n)=3n2+2n+5 is in O(n2) 10 n2 = 3n2 + 2n2 + 5n2  3n2 + 2n + 5 for n  1  f(n) หรือ f(n) ≤10 n2 เมื่อพิจารณา c = 10, n0 = 1 f(n) ≤c g(n2 ) for n  n0 ดังนั้น f(n) is in O(n2) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

10 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Usage เรามักจะใช้สมการอย่างง่ายที่สุดเมื่อเขียนด้วยสัญลักษณ์ Big-Oh เช่น 3n2+2n+5 = O(n2) สมการเหล่านี้ก็ไม่ผิด แต่เราไม่นิยมเขียนกัน 3n2+2n+5 = O(3n2+2n+5) 3n2+2n+5 = O(n2+n) 3n2+2n+5 = O(3n2) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

11 Exercise on O-notation
f1(n) = 10 n + 25 n2 f2(n) = 20 n log n + 5 n f3(n) = 12 n log n n2 f4(n) = n1/2 + 3 n log n O(n2) O(n log n) For each function, find the simplest and g(n) such that f_i(n) = O(g(n)) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

12 Classification of Function : BIG-Oh
A function f(n) is said to be of at most logarithmic growth if f(n) = O(log n) A function f(n) is said to be of at most quadratic growth if f(n) = O(n2) A function f(n) is said to be of at most polynomial growth if f(n) = O(nk), for some natural number k > 1 A function f(n) is said to be of at most exponential growth if there is a constant c, such that f(n) = O(cn), and c > 1 A function f(n) is said to be of at most factorial growth if f(n) = O(n!). 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

13 Classification of Function : BIG-Oh (cont.)
A function f(n) is said to have constant running time if the size of the input n has no effect on the running time of the algorithm (e.g., assignment of a value to a variable). The equation for this algorithm is f(n) = c Other logarithmic classifications: f(n) = O(n log n) f(n) = O(log log n) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

14 A polynomial of degree k is O(nk)
Big O Fact A polynomial of degree k is O(nk) Proof: ถ้า f(n) = bknk + bk-1nk-1 + … + b1n + b0 และให้ ai = | bi | ดังนั้น f(n)  aknk + ak-1nk-1 + … + a1n + a0 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

15 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Some Rules Transitivity f(n) = O(g(n)) and g(n) = O(h(n))  f(n) = O(h(n)) Addition f(n) + g(n) = O(max { f(n) ,g(n)}) Polynomials a0 + a1n + … + adnd = O(nd) Heirachy of functions n + log n = O(n); 2n + n3 = O(2n) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

16 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Some Rules Base of Logs ignored logan = O(logbn) Power inside logs ignored log(n2) = O(log n) Base and powers in exponents not ignored 3n is not O(2n) a(n)2 is not O(an) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

17 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Big-Oh Complexity O(1) The cost of applying the algorithm can be bounded independently of the value of n. This is called constant complexity. O(log n) The cost of applying the algorithm to problems of sufficiently large size n can be bounded by a function of the form k log n, where k is a fixed constant. This is called logarithmic complexity. O(n) linear complexity O(n log n) n lg n complexity O(n2) quadratic complexity 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

18 Big-Oh Complexity (cont.)
O(n3) cubic complexity O(n4) quartic complexity O(n32) polynomial complexity O(cn) If constant c 1, then this is called exponential complexity O(2n) exponential complexity O(en) exponential complexity O(n!) factorial complexity 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

19 Practical Complexity t < 500
5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

20 Practical Complexity t < 5000
5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

21 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Practical Complexity 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

22 Things to Remember in Analysis
ค่าคงที่ (Constants) หรือเทอมที่อยู่ในลำดับต่ำ (low-order terms) จะถูกละทิ้ง เช่น ถ้า f(n) = 2n2 ดังนั้น f(n) = O(n2) ทรัพยากรที่สำคัญที่สุดที่วิเคราะห์คือ running time; ปัจจัยอื่นที่สำคัญรองลงมาได้แก่ algorithm used และ input to the algorithm ค่า Parameter N, โดยปกติหมายถึงจำนวนข้อมูลที่ใช้ในการประมวลผลซึ่งมีผลกระทบมากที่สุดต่อระยะเวลาที่ใช้ในการทำงานของอัลกอริธึม N อาจหมายถึง degree of polynomial, ขนาดของไฟล์ข้อมูลที่ใช้ในการเรียงลำดับหรือการค้นหา, จำนวนของโหนดในกราฟ เป็นต้น 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

23 Things to Remember in Analysis
กรณีที่แย่ที่สุด (Worst case) หมายถึงระยะเวลาการทำงานของอัลกอริธึมในกรณีที่ข้อมูลนำเข้ามีการเรียงตัวกันในรูปแบบที่ต้องใช้เวลาในการทำงานมากที่สุด กรณีโดยเฉลี่ย (Average case) หมายถึงระยะเวลาการทำงานของอัลกอริธึมที่คาดว่าจะใช้สำหรับประมวลผลข้อมูลนำเข้าโดยปกติทั่วๆไป (typical input data) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

24 General Rules for Analysis (1)
1. ประมวลผลกลุ่มคำสั่งตามลำดับ (Consecutive statements) นับเวลาของกลุ่มคำสั่งที่ใช้เวลานานที่สุด เช่น ส่วนของคำสั่งที่เป็น loop เดียวตามด้วยส่วนของคำสั่งที่เป็นสอง loop ซ้อนกัน ผลลัพธ์คือ O(n2). Block #1 Block #2 t1 t2 t1+ t2 = max(t1,t2) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

25 General Rules for Analysis(2)
2. คำสั่งประเภท If/Else if cond then S1 else S2 Block #1 Block #2 t1 t2 Max(t1,t2) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

26 General Rules for Analysis(3)
3. For Loops Running time of a for-loop is at most the running time of the statements inside the for-loop times number of iterations for (i = sum = 0; i < n; i++) sum += a[i]; for loop iterates n times, executes 2 assignment statements each iteration ==> asymptotic complexity of O(n) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

27 General Rules for Analysis(4)
4. Nested For-Loops ทำการวิเคราะห์จากข้างในออกมา (Analyze inside-out) เวลาที่ใช้ทั้งหมดคือเวลาที่ใช้ในการประมวลผลคำสั่งคูณด้วยผลคูณของขนาดของ loop ทั้งหมด เช่น for (i =0; i < n; i++) for (j = 0, sum = a[0]; j <= i ; j++) sum += a[j]; printf("sum for subarray - through %d is %d\n", i, sum); 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

28 General Rules for Analysis
5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

29 General Rules for Analysis
กลยุธในการวิเคราะห์ วิเคราะห์จากข้างในออกมา (analyze from inside out) วิเคราะห์การเรียกใช้ฟังก์ชันก่อน (analyze function calls first) 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี

30 CSE221NMT221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี
Next Lecture Sorting Algorithms and Analysis 5-Jun-19 CSE221NMT221/ICT การวิเคราะห์และออกแบบขั้นตอนวิธี


ดาวน์โหลด ppt การวิเคราะห์และออกแบบขั้นตอนวิธี

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


Ads by Google