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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Chapter 5 Expert Systems
Advertisements

THE PARTS OF A FLOWERING PLANT AND THEIR FUNTION.
พีชคณิตบูลีน Boolean Algebra.
จำนวน สถานะ NUMBER OF STATES. ประเด็นที่ สนใจ The number of distinct states the finite state machine needs in order to recognize a language is related.
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
Data Structures and Algorithms
Data Structures and Algorithms
ระบบการจัดเก็บในคลังสินค้า
ออโตมาตาจำกัด FINITE AUTOMATA
INC341 State space representation & First-order System
INC 551 Artificial Intelligence
Asst.Prof. Dr.Surasak Mungsing
MAT 231: คณิตศาสตร์ไม่ต่อเนื่อง (3) Function Growth & Time-Complexity
การวิเคราะห์ประสิทธิภาพของอัลกอริธึม (Performance Analysis)
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them? At the heart of computer program.
โครงสร้างควบคุมการทำงาน
วิธีการ Auto ship.
List ADTs By Pantharee S..
Chapter 3 Simple Supervised learning
Chapter 1/1 Arrays. Introduction Data structures are classified as either linear or nonlinear Linear structures: elements form a sequence or a linear.
หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรที่ ๑ ทักษะการโปรแกรม เบื้องต้น วันที่สาม.
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
Mathematical Model of Physical Systems. Mechanical, electrical, thermal, hydraulic, economic, biological, etc, systems, may be characterized by differential.
Programming & Algorithm
Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.
ว เคมีพื้นฐาน พันธะเคมี
ANSI/ASQ Z1.4 Acceptance Sampling Plans
ครูวิชาการสาขาเคมี โรงเรียนมหิดลวิทยานุสรณ์
Click when ready Wang991.wordpress.com © All rights reserved Stand SW 100.
PHP. Date and Time date(format,timestamp)
Timed Math Quiz. โปรแกรมสุ่มคำนวณเลขแข่งกับ เวลา.
Linked List ( ต่อ ) Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
CHAPTER 18 BJT-TRANSISTORS.
Page : Stability and Statdy-State Error Chapter 3 Design of Discrete-Time control systems Stability and Steady-State Error.
สื่อการเรียนรู้ด้วยตัวเอง ชุดฝึกเขียนสรุป (Writing Summary)
อัลกอริทึมและผังงาน อาจารย์สมเกียรติ ช่อเหมือน
(Data Structure) CSI2202 โครงสร้างข้อมูล
Integrity Constraints
บทที่ 6 การเขียนโปรแกรมแบบมีเงื่อนไข
Chapter 9 ตัวชี้ pointer.
บทที่ 14 กลวิธีการทดสอบซอฟต์แวร์ (TESTING STRATEGIES)
INC 161 , CPE 100 Computer Programming
“ชีวิตที่ไร้กังวล” A WORRY FREE LIFE. “ชีวิตที่ไร้กังวล” A WORRY FREE LIFE.
การวิเคราะห์และออกแบบขั้นตอนวิธี
การแสดงขั้นตอนวิธีด้วยรหัสเทียม (Pseudo-Code)
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
ภาษา JavaScript Webpage Design and Programming Workshop ( )
Complexity Lecturers : Boontee Kruatrachue Room no Kritawan Siriboon Room no. 913 Text : Data Structures & Algorithm.
13 October 2007
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 13: การคำนวณได้และการตัดสินใจของปัญหา ที่ยากต่อการแก้ไข.
บทที่ 2 ขั้นตอนการทำงาน (Algorithm)
บทที่ 1 ความรู้เบื้องต้น เกี่ยวกับระบบสารสนเทศ
การวัดอัลกอริทึม (Analysis of Algorithm)
Data Structure and Algorithm
Dr.Surasak Mungsing CSE 221/ICT221 Analysis and Design of Algorithms Lecture 04: Time complexity analysis in form of Big-Oh.
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 04: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูป.
2. Algorithm Analysis.
Problem Solving ขั้นตอนวิธีและการแก้ปัญหาสำหรับวิทยาการคอมพิวเตอร์
(การสุ่มตัวอย่างเพื่อการยอมรับ)
อัตถิภาวนิยม existentialism J.K. Stevens, instructor
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 11: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy,
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
Data Structures and Algorithms 2/2561
Algorithms Analysis Sanchai Yeewiyom
Data Structures and Algorithms 2/2561
Inventory Control Models
4.4 AVL Trees AVL (Adelson-Velskii and Landis) tree เป็น binary search tree กำกับด้วยเงื่อนไขของการสมดุล และประกันว่า depth ของ tree จะเป็น O(log n) อย่างง่ายที่สุดคือกำหนดว่า.
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 03: ขั้นตอนวิธีและการวิเคราะห์ขั้นตอนวิธี Dr.Surasak.
การวิเคราะห์และออกแบบขั้นตอนวิธี
ใบสำเนางานนำเสนอ:

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

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

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

Exercise on O-notation f1(n) = 10 n + 25 n2 f2(n) = 20 n log n + 5 n f3(n) = 12 n log n + 0.05 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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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

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

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

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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

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

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