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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
อัลกอริทึม ITS101 2/2011.
Advertisements

แนวคิดในการเขียนโปรแกรม
การศึกษาและประยุกต์ใช้ขั้นตอนวิธีเชิง วิวัฒน์แบบหลายจุดประสงค์บนคลังข้อมูล เจเมทัล Study of Evolutionary Algorithm in Multi- objective on Library jMetal.
ประเภทของโปรแกรมคอมพิวเตอร์
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
Object-Oriented Analysis and Design
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรม GUI
แผนผัง FlowChart Flow Chart คือ ขั้นตอนที่นำผลที่ได้จากการกำหนดและการ วิเคราะห์ปัญหามาเขียนเป็นแผนภาพหรือสัญลักษณ์ ประโยชน์ของผังงาน -ช่วยลำดับขั้นตอนการทำงานของโปรแกรม.
ซอฟต์แวร์.
โครงสร้าง ภาษา HTML.
บทที่ 5 การจำลองแบบเชิงวัตถุ Object Modeling
(Sensitivity Analysis)
Surachai Wachirahatthapong
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
ขั้นตอนวิธี (Algorithm)
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
การเขียนโปรแกรมภาษาซี
บทที่ 4 อัลกอริทึมแบบเรียงลำดับ (Sequential Algorithm)
วิธีการทางคอมพิวเตอร์
การออกแบบฐานข้อมูลและการบริหารธุรกิจ
การออกแบบและการวิเคราะห์อัลกอริทึม
โปรแกรมภาษาจาวาเบื้องต้น Basic Java Programming 3(2-2-5)
ที่ใช้ใน Object-Oriented Design
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
Week 12 Engineering Problem 2
Week 12 Engineering Problem 2
วิชา วิศวกรรมซอฟต์แวร์ (Software Engineering)
Introduction : Principle of Programming
A Comparison on Quick and Bubble sort on large scale data
chatper 2 Software Requirement
DEVELOPMENT PRACTICING C- PROGRAMMING IMPLEMENTATION SYSTEM REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication.
Software Framework & Design Pattern
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
ซอฟต์แวร์คอมพิวเตอร์ ชั้นมัธยมศึกษาปีที่ ม.4/2 โรงเรียนมัธยมวัดป่ามะไฟ
School of Information Communication Technology,
Course outline Software Architecture and Design
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
การเขียนซูโดโค้ด และการเขียนโฟลชาร์ต
DEVELOPMENT PRACTICING C- PROGRAMMING IMPLEMENTATION SYSTEM REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication.
Course outline Software Architecture and Design
SMARTPAYMENT REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao.
บทที่ 2 แนวคิดในการเขียนโปรแกรม. ขั้นตอนการ พัฒนาโปรแกรม ในการพัฒนาโปรแกรมมีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรม ครั้งใดจะต้องปฏิบัติตามขั้นตอนเหล่านี้
Sequence Diagram Communication Diagram
INTRODUCTION SOFTWARE ARCHITECTURE AND DESIGN WATTANAPON G SUTTAPAK Software Engineering, School of Information Communication Technology, University of.
Activity Diagram Wattanapong suttapak, Software Engineering,
บทที่ 2 การวิเคราะห์อัลกอริทึม
โครงสร้างข้อมูลและขั้นตอนวิธี (Data Structures and Algorithms)
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
บทที่ 1 ระบบคอมพิวเตอร์.
หลักการเขียนโปรแกรม ( )
COURSE OUTLINE CURRENT TOPIC(JAVA WEB APPLICATION) Wattanapong suttapak, Software Engineering, school of Information communication Technology, university.
SE WEBSITE REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao.
Design pattern WATTANAPONG SUTTAPAK Software Engineering,
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
Wattanapong suttapak SE, ICT University of Phayao.
Lesson 10 Software Evolution
โครงสร้างข้อมูลและอังกอลิทึม
COURSE OUTLINE STRUCTURE PROGRAMMING Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
การจัดเรียงข้อมูล (sorting)
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 9 Heap and Hash 1.
chapter 2 - Construction and destruction - Overloading method
2 มิ. ย 2547 โดย วชิราวุธ ธรรมวิเศษ 1 บทที่ 1 แนะนำเทคโนโลยีจาวา Introduction to Java Technology.
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
State Diagram Wattanapong suttapak, Software Engineering,
Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao เกณฑ์การนำเสนอ และเกณฑ์การให้ คะแนน ครั้งที่
MVC DESIGN PATTERN WATTANAPON G SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO 1.
Yeunyong Kantanet School of Information and Communication Technology
ใบสำเนางานนำเสนอ:

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

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

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

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

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

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

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 )

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 )

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 ซึ่งเป็นจำนวนเต็มขนาดใหญ่เช่นกัน

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 )

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