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

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

โครงสร้างข้อมูลและอังกอลิ ทึม ตอน วิเคราะห์อัลกอริทึม อ. พิศิษฐ์ นาคใจ 1.

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


งานนำเสนอเรื่อง: "โครงสร้างข้อมูลและอังกอลิ ทึม ตอน วิเคราะห์อัลกอริทึม อ. พิศิษฐ์ นาคใจ 1."— ใบสำเนางานนำเสนอ:

1 โครงสร้างข้อมูลและอังกอลิ ทึม ตอน วิเคราะห์อัลกอริทึม อ. พิศิษฐ์ นาคใจ 1

2 Algorithm Analysis Software Develops Life Cycle การวัดประสิทธิภาพการทำงานของอังกอลิทึม - ใช้หลักคณิตศาสตร์ในการวัดประสิทธิภาพ การเขียนโปรแกรม แบ่งออกเป็น 2 ลักษณะ 1. เขียนโปรแกรมแบบลูกทุ่ง 2. เขียนโปรแกรมแบบซับซ้อน ( เมพ ) อ. พิศิษฐ์ นาคใจ 2

3 Algorithm ใช้ในการแก้ไขปัญหา ทำงานเป็นลำดับขั้นตอน อาจจะเขียนเป็น Flowchart หรือ ซูโดโค้ดก็ได้ พิจารณาการใช้อังกอลิทึม พิจารณาการใช้หน่วยความจำเท่าไร พิจารณาเวลาในการแก้ไขปัญหาเท่าใด * ปัจจัยที่สำคัญสำหรับการวิเคราะห์คือ เวลาที่ใช้ในการ ทำงาน และ Input ที่ใช้กับอังกอลิทึม อ. พิศิษฐ์ นาคใจ 3

4 ประสิทธิภาพเชิงเวลา การวัดประสิทธิภาพ วัดจาก เวลา และ เนื้อ หน่วยความจำที่ให้ ประสิทธิภาพเชิงเวลา ประสิทธิภาพเชิงเนื้อที่ สำหรับการวัดเชิงเวลา จะเรียกว่า Running Time เขียนอยู่ในรูปของ ฟังก์ชันคณิตศาสตร์ แปลผันตามปัจจัย 2 ตัว ขนาดข้อมูลนำเข้า ชุดคำสั่งฅ Worst case คือค่าสูงสุดของการใช้เวลาในการ แก้ปัญหาของอังกอริทึม Best case คือเวลาที่น้อยที่สุดในการแก้ปัญหา ของอังกอริทึม อ. พิศิษฐ์ นาคใจ 4

5 การคำนวณ Running Time ในการหาความเร็วในการทำงานของโปรแกรม เรามักจะวัดจาก ลักษณะการเขียน Code มากกว่าที่จะวัดจากการรันโปรแกรมโดยตรง ในการหา Running Time จะเขียนอยู่ในรูป คณิตศาสตร์ คือ T(n) = c i C(n) โดยกำหนดให้ T(n) = Running Time c i = เวลาในการทำงานของชุดคำสั่ง จะคิดเป็น 1 หน่วยเวลา C(n)= จำนวนรอบในการทำงานของ ชุดคำสั่ง อ. พิศิษฐ์ นาคใจ 5

6 ตัวอย่างการคำนวณ ตัวอย่างที่ 1 ตัวอย่างที่ 2 ตัวอย่างที่ 3 Sum = N*N+1int a = 1 while(a<=N){ a++; } int a = 1 while(a

7 วิเคราะห์ตัวอย่างที่ 1Sum = N*N+1 Code เวลาใช้ในการ ทำงาน จำนวนรอบการ ทำงาน Sum = N*N+1c1c1 1 T(n) = c 1 (1) = c 1 อ. พิศิษฐ์ นาคใจ 7

8 วิเคราะห์ตัวอย่างที่ 2 for(int a = 1; a<=N; a++) Code เวลาใช้ในการ ทำงาน จำนวนรอบการ ทำงาน int a = 1c1c1 1 while(a<=N){c2c2 N+1 a++; } c3c3 N T(n) = c 1 (1) + c 2 (N+1) (c 3 )1 = c 1 (1) + c 2 (N+1) +(c 3 )(N) = 1+(N+1)+N คิด 1 หน่วยเวลา T(N)= 2N+2 อ. พิศิษฐ์ นาคใจ 8

9 วิเคราะห์ตัวอย่างที่ 3 Code เวลาใช้ในการ ทำงาน จำนวนรอบการ ทำงาน int a = 1c1c1 1 while(a<=N){c2c2 N+1 int b = 1;c3c3 N while(b<=N){c4c4 (N+1)N b++;c5c5 (N)(N) a++; }}c6c6 N T(n) = c 1 (1)+c 2 (N+1)+c 3 (N)+c 4 (N+1)(N)+ c 5 (N)(N)+ c 6 (N) = 1+(N+1)+ (N)+(N+1)(N)+(N)(N)+ (N) = 2N 2 +4N+2 อ. พิศิษฐ์ นาคใจ 9

10 Big Oh อ่านว่า บิ๊กโอ เป็นสัญลักษณ์วัดประสิทธิภาพ เชิงเวลาของอัลกอริทึมมีรูปแบบการเขียนคือ O(f(n)) คุณสมบัติของ Big oh 1.f(n) = c แล้ว O(f(n)) = O(1) เมื่อ c เป็นค่าคงที่ 2.f(n) = cg(n) แล้ว f(n) = O(g(n)) 3.f(n) = an k แล้ว f(n) = O(n k ) 4.f(n) = log a b แล้ว f(n) = O(log b b) อ. พิศิษฐ์ นาคใจ 10

11 ตัวอย่างคุณสมบัติที่ 1 และ 2 f(n) = 5n จาก f(n) = cg(n) แล้ว f(n) = O(g(n)) โดยที่ c เป็นค่าคงที่ในที่นี้คือ 5 ดังนั้น O(F(n)) คือ O(n) f(n) = 1 จาก f(n) = 1 แล้ว O(f(n)) = O(1) f(m) = Am จาก f(m) = cg(m) แล้ว f(m) = O(g(m)) โดย ที่ c เป็นค่าคงที่ในที่นี้คือ A ดังนั้น O(f(m)) คือ O(m) อ. พิศิษฐ์ นาคใจ 11

12 นิยาม นิยาม ถ้า T 1 = O(f(N)) และ T 2 = O(g(N)) ดังนั้น T 1 * T 2 = O(f(N)*g(N)) ตัวอย่างเช่น กำหนดให้ f(n) = 4n, g(n) = 2n, h(n) = f(n)*g(n) จงหา Big-oh ของ แต่ละ Function O(f(n))=O(4n)= O(n) O(g(n)) =O(2n)= O(n) O(h(n))=O(10n 2 )= O(n 2 ) อ. พิศิษฐ์ นาคใจ 12

13 นิยาม ต่อ นิยาม ให้ T 1 = O(f(N)) และ T 2 = O(g(N)) ดังนั้น T 1 + T 2 = max(O(f(N),g(N))) ตัวอย่างเช่น กำหนดให้ f(n) = n 2, g(n) = 2n, h(n) = f(n)+g(n) จงหา Big-oh ของ แต่ละ Function O(f(n))=O(n 2 )= O(n 2 ) O(g(n)) =O(2n)= O(n) O(h(n))=max(O(n 2 ),O(2n) =O(n 2 ) อ. พิศิษฐ์ นาคใจ 13

14 กิจกรรม ให้นักศึกษา ทำการเรียงไพ่ จากน้อยไปมาก A,2,3,…,J,Q,K วิธีการ 1. ให้นักศึกษาหยิบไพ่ 1 ใบ แล้ววางลงบนที่ว่าง 2. หยิบไพ่มาอีกใบ พิจารณาว่ามากกว่า ไพ่ใบ สุดท้ายหรือไม่ 2.1 หากมากกว่าให้ว่างต่อจากไพ่ใบสุดท้าย 2.3 หากน้อยกว่าให้นักศึกษา ให้นักศึกษาขีด 1 ลงบนกระดาษ จากนั้นพิจารณาไพ่ใบถัดไป 3. ทำจนหมดไพ่ในมือ สับไพ่และทำซ้ำวิธีการเดิม 5 ครั้ง อ. พิศิษฐ์ นาคใจ 14

15 อัตราการเติบโตของ Big oh Algorithm1234 Time ( second ) O(n 3 )O(n 2 )O(n log n) O(n) (input size) n = n = n = 1, n = 10,000NA n = 100,000NA อ. พิศิษฐ์ นาคใจ 15

16 อัตราการเจริญของเวลาที่ใช้ ของ อัลกอริทึมทั้ง 4 แบบ อ. พิศิษฐ์ นาคใจ 16

17 อัตราการเติบโต สัญลักษ ณ์ ชื่อ ฟังก์ชัน หมายเหตุ O(1) ค่าคงที่ไม่ใช้ค่าคงที่อื่นในการ แสดงสัญกรณ์ เช่นไม่มีการใช้ O (2) O(logn) ลอการิทึมลอการิทึมทุกฐานอยู่ในระดับ เดียวกัน O(n)O(n) เชิงเส้น O(nlog(n)) แฟกทอ เรียล O(n2)O(n2) n ยกกำลัง 2 O(2n)O(2n) 2 ยกกำลัง n อ. พิศิษฐ์ นาคใจ 17

18 อัตราการเติบโต อ. พิศิษฐ์ นาคใจ 18

19 629 เรียงไผ่ 5 จั่ว = 4 สลับที่ = 2 อ. พิศิษฐ์ นาคใจ 19

20 คำถามหลังกิจกรรม จำนวนครั้งที่น้อยที่สุดในการเรียงไผ่ จำนวนครั้งที่มากที่สุดในการเรียงไผ่ อ. พิศิษฐ์ นาคใจ 20

21 Quiz ให้นักศึกษาหยิบกระดาษ ½ แผ่น เขียนชื่อ รหัส นักศึกษา ให้ชัดเจน แล้วตอบว่าข้อใดถูกหรือ ผิด 1. O(n 2 +3) = O(n) 2. O(n+3) = O(1) 3. O(2n+3) = O(n) 4. O(n 3 +n 2 ) = O(n 3 ) 5. O(3log n)) = O(log n) อ. พิศิษฐ์ นาคใจ 21


ดาวน์โหลด ppt โครงสร้างข้อมูลและอังกอลิ ทึม ตอน วิเคราะห์อัลกอริทึม อ. พิศิษฐ์ นาคใจ 1.

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


Ads by Google