ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยPhitchaya Tongproh ได้เปลี่ยน 10 ปีที่แล้ว
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 จะได้เรียนต่อไปในบทถัดไป
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.