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

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

WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 4 analysis of algorithm efficiency.

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


งานนำเสนอเรื่อง: "WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 4 analysis of algorithm efficiency."— ใบสำเนางานนำเสนอ:

1 WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 4 analysis of algorithm efficiency and complexity 1

2 จุดประสงค์ บทเรียนที่ 4 2 สามารถวิเคราะห์ความซับซ้อนและประสิทธิภาพของอัลกอริทึมได้

3 ประสิทธิภาพและความซับซ้อนของอัลกอริทึม 3 โดยปกติการวัดประสิทธิภาพของการเขียนโปรแกรม มี ดังต่อไปนี้  เวลาในการประมวลผล  จำนวนบรรทัดในการประมวลผล (line of code-loc)  จำนวนวัตถุ (object) ของทุกๆ คลาส (class) ในกรณีเขียนแบบ OOP() ในบทนี้เราจะศึกษาในส่วนของเวลาที่ใช้ในการประมวลผล

4 ประสิทธิภาพและความซับซ้อนของอัลกอริทึม 4 เวลาในการประมวลผล แบ่งเป็น 2 แบบ 1. วัดตามหน่วย เวลาเป็น วินาที นาที ชั่วโมง 2. วัดตามจำนวนเท่า โดยสมมติเป็น O ใหญ่ โดยชื่อภาษาไทยเรียกว่า สัญญากรณ์โอใหญ่ (big O notation) โดยปกติแล้วการวัดเวลาในการประมวลผล นิยมใช้วิธีที่ 2 มากกว่าวิธีที่ 1 เนื่องจาก วิธีที่ 1 นั้นมีตัวแปรที่ทำให้เกิดผลกระทบต่อการเปลี่ยนแปลง ของเวลา เป็นจำนวนมาก เช่น - ระบบฮาร์ดแวร์แบบเดียวกันทั้งหมด - อยู่ภายใต้ระบบปฎิบัติการเดียวกัน - มีโหลดของโปรแกรมที่กำลังทำงานพร้อมกับการรันเหมือนกัน - ที่สำคัญต้องเขียนด้วยภาษาเดียวกัน

5 Big O notation 5 for(int i=0;i<10;i++){ System.out.print(i); } t int i =0; while( i< 10 ){ System.out.print(i); i = i + 1; } t t t 3t t+10*3t แต่ในการคำนวณจริง เราถือว่า ทุกๆ การทำงาน loop จะต้องมี 3t เสมอ ดังนั้นเพื่อลดความซับซ้อนในการคำนวณ ให้นำ 3t ออก คิดแค่ t เดียว จะได้ว่า การทำงานนี้ใช้เวลา 10t

6 Big O notation 6 for(int i=0;i<10;i++){ System.out.print(i); } 10t for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ System.out.print(i); } 10 3 t for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ for(int k=0;k<10;k++){ System.out.print(i); } 10 2 t

7 Big O notation 7 for(int i=0;i<n;i++){ System.out.print(i); } nt for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ System.out.print(i); } n3tn3t for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ for(int k=0;k<n;k++){ System.out.print(i); } n2tn2t O(n) O(n 2 ) O(n 3 )

8 Big O notation 8 for(int i=0;i<n;i++){ System.out.print(i); } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ System.out.print(i); } n2tn2t for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ System.out.print(i); } nt + n 2 t O(n 2 )O(n 2 +n) =O(n 2 )

9 Big O notation 9 for(int i=0;i<n1;i++){ for(int j=0;j<n2;j++){ System.out.print(i); } O(n 2 ) โดยสมมติให้ n1 และ n2 เป็นค่าจำนวนเต็มที่มีขนาดใหญ่ จึงประมาณค่า n1 n2 มีค่าเท่ากับ n ซึ่งเป็นจำนวนเต็มขนาดใหญ่เช่นกัน

10 Big O notation 10 for(int i=0;i<n1;i++){ for(int j=0;j<n2;j++){ System.out.print(i); } for(int j=0;j<n2;j++){ System.out.print(i); } O(2n 2 ) for(int i=0;i<n1;i++){ for(int j=0;j<n2;j++){ System.out.print(i); System.out.print(j); } O(2n 2 ) for(int i=0;i<n1;i++){ for(int j=0;j<n2;j++){ System.out.print(i); int k = i+j; } O(2n 2 )

11 Worst Case,Average Case and Best Case 11 จะได้เรียนต่อไปในบทถัดไป


ดาวน์โหลด ppt WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 4 analysis of algorithm efficiency.

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


Ads by Google