Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 04: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูป.

Slides:



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

พีชคณิตบูลีน Boolean Algebra.
จำนวน สถานะ NUMBER OF STATES. ประเด็นที่ สนใจ The number of distinct states the finite state machine needs in order to recognize a language is related.
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
Conic Section.
Data Structures and Algorithms
Data Structures and Algorithms
ออโตมาตาจำกัด FINITE AUTOMATA
INC341 State space representation & First-order System
INC 551 Artificial Intelligence
Functions & Sub Program ฟังก์ชันและโปรแกรมย่อย
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.
โครงสร้างควบคุมการทำงาน
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.
In-Class Exercises Discrete Mathematics
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
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. โปรแกรมสุ่มคำนวณเลขแข่งกับ เวลา.
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 โครงสร้างข้อมูล
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Integrity Constraints
บทที่ 6 การเขียนโปรแกรมแบบมีเงื่อนไข
Chapter 9 ตัวชี้ pointer.
บทที่ 14 กลวิธีการทดสอบซอฟต์แวร์ (TESTING STRATEGIES)
INC 161 , CPE 100 Computer Programming
Control Statements.
การวิเคราะห์และออกแบบขั้นตอนวิธี
การแสดงขั้นตอนวิธีด้วยรหัสเทียม (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)
การวัดอัลกอริทึม (Analysis of Algorithm)
Asst.Prof. Dr.Surasak Mungsing
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.
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
การวิเคราะห์และออกแบบขั้นตอนวิธี
Inventory Control Models
4.4 AVL Trees AVL (Adelson-Velskii and Landis) tree เป็น binary search tree กำกับด้วยเงื่อนไขของการสมดุล และประกันว่า depth ของ tree จะเป็น O(log n) อย่างง่ายที่สุดคือกำหนดว่า.
การวิเคราะห์โจทย์ปัญหา (Problem Analysis)
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 03: ขั้นตอนวิธีและการวิเคราะห์ขั้นตอนวิธี Dr.Surasak.
การวิเคราะห์และออกแบบขั้นตอนวิธี
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
Determine the moment about point A caused by the 120 kN
ใบสำเนางานนำเสนอ:

Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 04: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูป แบบของ Big-Oh Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th Feb-19

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

Upper Bound Notation เวลาที่ใช้ในการเรียงลำดับแบบ Insertion Sort มีความซับซ้อนอญุ่ในลำดับ O(n2) อ่าน O ว่า “Big-O” นิยาม f(n) is O(g(n)) if  positive constants c and n0 such that f(n)  c  g(n)  n  n0 ตัวอย่าง เช่น if f(n)=1000n และ g(n)=n2, n0 > 1000 และ c = 1 then f(n0) < 1.g(n0) เราสามารถกล่าวได้ว่า f(n) = O(g(n)) The O notation indicates 'bounded above by a constant multiple of.' 24-Feb-19

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) จะกระชับกว่า 24-Feb-19

สำหรับทุกค่า n>6, f(n) < 1 g(n); Example 1 สำหรับทุกค่า n>6, f(n) < 1 g(n); f(n) is in O(g(n)) 24-Feb-19

สำหรับทุกค่า n>n0 เมื่อ n0= 5 (กรณีนี้ c=1) Example 2 f(n) is in O(g(n)) ถ้า f(n) < 1 g(n) สำหรับทุกค่า n>n0 เมื่อ n0= 5 (กรณีนี้ c=1) 24-Feb-19

ดังนั้น f(n) is in O(h(n)). Example 3 n0=5, c=3.5, สำหรับทุกค่า n>n0, ถ้า f(n) < c h(n) ดังนั้น f(n) is in O(h(n)). 24-Feb-19

24-Feb-19

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(n) for n  n0 ดังนั้น f(n) is in O(n2) 24-Feb-19

เรามักจะใช้สมการอย่างง่ายที่สุดเมื่อเขียนด้วยสัญลักษณ์ Big-Oh 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) 24-Feb-19

Exercise on O-notation O(n log n) 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 For each function, find the simplest and g(n) such that f_i(n) = O(g(n)) 24-Feb-19

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!). 24-Feb-19

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) 24-Feb-19

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 24-Feb-19

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) 24-Feb-19

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) 24-Feb-19

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 24-Feb-19

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 24-Feb-19

Practical Complexity t < 500 24-Feb-19

Practical Complexity t < 5000 24-Feb-19

Practical Complexity 24-Feb-19

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, ขนาดของไฟล์ข้อมูลที่ใช้ในการเรียงลำดับหรือการค้นหา, จำนวนของโหนดในกราฟ เป็นต้น 24-Feb-19

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

General Rules for Analysis (1) 1. ประมวลผลกลุ่มคำสั่งตามลำดับ (Consecutive statements) นับเวลาของกลุ่มคำสั่งที่ใช้เวลานานที่สุด เช่น ส่วนของคำสั่งที่เป็น loop เดียว ทำงานมากที่สุด n ครั้ง ความซับซ้อนของขั้นตอนวิธีจะอยู่ในลำดับ O(n) ถ้าส่วนของคำสั่งมีการทำงานเป็นสอง loop ซ้อนกัน แต่ละ loop ทำงานมากที่สุด n ครั้ง ความซับซ้อนของขั้นตอนวิธีจะอยู่ในลำดับ O(n2). Block #1 t1 t2 Block #2 t1+ t2 = max(t1,t2) 24-Feb-19

General Rules for Analysis(2) 2. คำสั่งประเภท If/Else if cond then S1 else S2 Block #1 t1 Block #2 t2 Max(t1,t2) 24-Feb-19

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) 24-Feb-19

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); 24-Feb-19

General Rules for Analysis 24-Feb-19

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

การวิเคราะห์ความซับซ้อนของขั้นตอนวิธีการเรียงลำดับข้อมูล Next Lecture: การวิเคราะห์ความซับซ้อนของขั้นตอนวิธีการเรียงลำดับข้อมูล 24-Feb-19