Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them? At the heart of computer program.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
John Rawls  John Rawls is the most famous American social contract theorist argued that “Justice is fairness” He Thought human natural have a appropriate.
Advertisements

THE PARTS OF A FLOWERING PLANT AND THEIR FUNTION.
INC 551 Artificial Intelligence Lecture 2. Review Environment Action Sense, Perceive Make Decision Agent World Model Deliberative Agent.
INTELLECTUAL CAPITAL : IC Group 3: Tipada Subhasean Nongluk Charoeschai Nerisa Wangkarat
Educational Objectives
Supreeya Wongtra-ngan,MD.,MHPEd. CLINICAL COMPETENCIES  Factual Knowledge  Technical Skill  Problem Solving Skill  Communication Skill  Manners &
Chapter 9 : Designing Approach
Graphical User Interface charturong.ee.engr.tu.ac.th/CN208
Braille OCR Mobile Application
Lower higher quality Monthly Review on Dec,11 03/07/57.
Emergency Response System for Elderly and PWDs: Design & Development
VARIABLES, EXPRESSION and STATEMENTS. Values and Data Types Value เป็นสิ่งพื้นฐาน มีลักษณะเป็น ตัวอักษร หรือ ตัวเลข อาทิ 2+2 หรือ “Hello world” Value.
อาจารย์ มธ. อธิบายการใช้ โมเดลของ
ระบบการจัดเก็บในคลังสินค้า
: Chapter 1: Introduction 1 Montri Karnjanadecha ac.th/~montri Image Processing.
Color Standards A pixel color is represented as a point in 3-D space. Axis may be labeled as independent colors such as R, G, B or may use other independent.
What is Cluster Analysis? Finding groups of objects such that the objects in a group will be similar (or related) to one another and different from (or.
ออโตมาตาจำกัด FINITE AUTOMATA
Shell Script Programming (Loop) 1 Unix Operating System Computer Science Department (FLAS-KU) - Prasertsak U. อ้างอิงจาก freeos.
How ใช้ถามเกี่ยวกับอาการ ( manner ) การคมนาคม และการขนส่ง How can I get to the police station ? By taking the white bus. How did she walk ? slowly.
Inductive, Deductive Reasoning ผศ.( พิเศษ ) น. พ. นภดล สุชาติ พ. บ. M.P.H.
Course Software Engineering SE Overview and Introduction.
December 25 th, 2013 Naresuan University Hospital, Faculty of Medicine, Naresuan University December 25 th, 2013 Naresuan University Hospital, Faculty.
Computer Graphics.
Problem with Subjunctive Verbs Some verbs and noun require a subjunctive. A subjunctive is a change in the usual form of the verb. It is often a verb word.
INC 551 Artificial Intelligence
INC341 Steady State Error Lecture 6.
        วงจรดิจิตอลลอจิก 3(2-1-3)
Asst.Prof. Dr.Surasak Mungsing
MAT 231: คณิตศาสตร์ไม่ต่อเนื่อง (3) Function Growth & Time-Complexity
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
องค์ประกอบและสถาปัตยกรรม คอมพิวเตอร์ Computer Architecture and Organization Pretest.
8/3/2014The Realities of software Testing1 Software testing Realities What is the realities of software testing Why does the software testing not complete.
Merchant Marine Training Centre วิชาการเป็นเลิศ เชิดชู คุณธรรม ผู้นำ.
บทที่ 2 งบการเงินพื้นฐาน BASIC FINANCIAL STATEMENTS 2.
การเตรียมโครงงาน วิศวกรรม ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์ หัวข้อ การเตรียมโครงงาน การเตรียมหัวข้อโครงงาน.
S Sex attitudes and practices among some Bangkok University Thai students Sample size : 40 students : 20 boys, 20 girls Age Range : years old Average.
Menu and Interactive with Powerpoint ให้นำเรื่อง Input /Output Technology มา จัดทำ การนำเสนอ โดยใช้หลักการ Menu and Interactive with powerpoint มาประยุกต์
Introduction to Earned Value Analysis.
 Fungi reproduce using spores produced in the sporangium.  Spores contain the genetic material for growth of a new organism, protected by a tough coat.
iWaLL โดย 1. นายวีกิจ สัจจะมโนรมย์
STACK ADT By Pantharee S.. Stack Model  A list with the restriction that insertions deletions can be performed in only one position (LIFO)  Push – insert.
Project Framework Risk & Issue Management Sponsor Management
M prapansilp 09 1 มุมมองในระบบและกลไก เพื่อเด็กไทยมีโภชนาการสมวัย โครงการพัฒนาระบบและกลไกเพื่อ เด็กไทยมีโภชนาการสมวัย หลุยส์แทรเวิร์น กรุงเทพฯ 28 มิถุนายน.
การสร้าง WebPage ด้วย Java Script Wachirawut Thamviset.
ทุนทางปัญญา Intellectual Capital KM743 Session 3.1
เอกสารเรียนวันที่ 27 มกราคม 2555
เอกสารเรียนวันที่ 7 กันยายน 2555
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.
An Online Computer Assisted Instruction Development of Electronics Devices Subject for Learning Effectiveness Testing By Assoc.Prof. Suwanna Sombunsukho.
Bitcoin Mining. Hello, I’m Pawaris and I love Bitcoin.
The Analysis of Strands, Standards and Indicators for Tests
How do scientists think and find( พบ ) answers?.
อัลกอริทึมและผังงาน อาจารย์สมเกียรติ ช่อเหมือน
บทที่ 1 ความรู้เบื้องต้น เกี่ยวกับระบบสารสนเทศ
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: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูป.
Development Strategies
I WISH YOU A GREAT DAY! ฉันขอให้คุณ มีความสุขมากๆในวันนี้ นะคะ!
นโยบายแห่งชาติด้านยาของไทย
ที่มาและหน่วยงานกาชาดต่างๆ
The management of change Changes in work patterns and jobs
การวิเคราะห์และออกแบบขั้นตอนวิธี
โครงการสัมมนาเชิงปฏิบัติการบูรณาการภาครัฐและเอกชนในการจัดยุทธศาสตร์เศรษฐกิจภาคตะวันออก This template can be used as a starter file to give updates for.
การประมาณการโครงการ.
Lesson 7-6: Function Operations
STRATEGIES FOR SUCCESS
กลยุทธ์การทดสอบซอฟต์แวร์ วิศวกรรมซอฟต์แวร์ (Software Engineering)
การวิเคราะห์และออกแบบขั้นตอนวิธี
ใบสำเนางานนำเสนอ:

Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them? At the heart of computer program design are two (sometimes conflicting) goals. To design an algorithm that is easy to understand, code, debug. To design an algorithm that makes efficient use of the computer’s resources.

Algorithm Efficiency (cont) Goal (1) is the concern of Software Engineering. Goal (2) is the concern of data structures and algorithm analysis. When goal (2) is important, how do we measure an algorithm’s cost?

How to Measure Efficiency? Empirical comparison (run programs) Asymptotic Algorithm Analysis Critical resources: Factors affecting running time: For most algorithms, running time depends on “size” of the input. Running time is expressed as T(n) for some function T on input size n. Empirical comparison is difficult to do “fairly” and is time consuming. Critical resources: Time. Space (disk, RAM). Programmers effort. Ease of use (user’s effort). Factors affecting running time: Machine load. OS. Compiler. Problem size. Specific input values for given problem size.

Growth Rate The growth rate for an algorithm is the rate at which the cost (running time) of the algorithm grows as the size of its input grows. Empirical comparison is difficult to do “fairly” and is time consuming. Critical resources: Time. Space (disk, RAM). Programmers effort. Ease of use (user’s effort). Factors affecting running time: Machine load. OS. Compiler. Problem size. Specific input values for given problem size.

Big O Notation Big O Notation หรือ อันดับขนาด (Order of Magnitude) หมายถึงปริมาณที่เครื่องคอมพิวเตอร์ทำไม่ขึ้นกับขนาดของโปรแกรมหรือ จำนวนบรรทัดของโปรแกรม เป็นฟังก์ชันที่ได้จากการประมาณค่าทางคณิตศาสตร์ซึ่งเป็นฟังก์ชันที่สัมพันธ์กับขนาดของปัญหา ให้ข้อมูลในการเปรียบเทียบอัลกอลิทึม List[1] = 0; List[2] = 0; : List [1000] = 0; Algorithm 1 For(i=1;i<=n;i=i+1) List [i] = 0; Algorithm 2 Algorithm 1 และ Algorithm 2 มีอันดับขนาดคือ O(n) Empirical comparison is difficult to do “fairly” and is time consuming. Critical resources: Time. Space (disk, RAM). Programmers effort. Ease of use (user’s effort). Factors affecting running time: Machine load. OS. Compiler. Problem size. Specific input values for given problem size.

Examples of Growth Rate (1) for (i=1; i<=1000; i=i+1) 1000 times <<application code>>; for (i=1; i<=1000; i=i+2) 500 times for (i=1; i<1000; i=i*2) 10 times for (i=1000; i>=1; i=i/2) 10 times Asymptotic analysis is defined for equations. We need to convert programs to equations to analyze them. The traditional notation is (1), not (c). (n) even though the value of sum is n2.

Examples (2) for (j=1; j<=10; j=j+1) 10 times for (i=1; i<=10; i=i+1) 10 iterations <<application code>>; 100 iterations for (j=1; j<=10; j=j+1) 10 iterations for (i=1; i<=10; i=i*2) log210 iterations 10*log210 iterations for (j=1; j<=10; j=j+1) 10 times for (i=1; i<=j; i=i+1) (10+1)/2 times 55 iterations Asymptotic analysis is defined for equations. We need to convert programs to equations to analyze them. The traditional notation is (1), not (c). (n) even though the value of sum is n2.

Example: Input Size = n for (i=1; i<=n; i=i+1) T(n) = n <<application code>>; for (i=1; i<=n; i=i+2) T(n) = n/2 for (i=1; i<n; i=i*2) <<application code>>; T(n) for (i=n; i>=1; i=i/2) Asymptotic analysis is defined for equations. We need to convert programs to equations to analyze them. The traditional notation is (1), not (c). (n) even though the value of sum is n2.

Examples (2) for (j=1; j<=n; j=j+1) for (i=1; i<=n; i=i+1) <<application code>>; for (i=1; i<=n; i=i*2) for (i=1; i<=j; i=i+1) Asymptotic analysis is defined for equations. We need to convert programs to equations to analyze them. The traditional notation is (1), not (c). (n) even though the value of sum is n2.

Examples (3) // Find largest value int largest(int array[], int n) { int currlarge = 0; // Largest value seen for (int i=1; i<n; i++) // For each val if (array[currlarge] < array[i]) currlarge = i; // Remember pos return currlarge; // Return largest } As n grows, how does T(n) grow? Cost: T(n) = c1n + c2 steps

Growth Rate Graph

Best, Worst, Average Cases Sequential search for K in an array of n integers: Begin at first element in array and look at each element in turn until K is found Best case: Worst case: Average case: Best: Find at first position. Cost is 1 compare. Worst: Find at last position. Cost is n compares. Average: (n+1)/2 compares IF we assume the element with value K is equally likely to be in any position in the array.

Which Analysis to Use? While average time appears to be the fairest measure, it may be difficult to determine. When is the worst case time important? Average time analysis requires knowledge of distributions. For example, the assumption of distribution used for average case in the last example. Worst-case time is important for real-time algorithms.

Big-O Notation Big-oh notation represents the growth rate. It's useful to be able to estimate the cpu or memory resources an algorithm requires. Example: If T(n) = 3n2 then T(n) is in O(n2). Wish tightest upper bound: While T(n) = 3n2 is in O(n3), we prefer O(n2). It provides more information in this example to say O(n2) than O(n3).

Big-Oh Examples Example 1: Finding value X in an array T(n) is in O(n). Example 2: T(n) = c1n2 + c2n T(n) is in O(n2). Example 3: T(n) = c. We say this is in O(1). We are doing average case. cs is a constant. The actual value is irrelevant.

Running Time Examples (1) Example 1: O(1) a = b; This assignment takes constant time, so it is O(1). Example 2: O(n) sum = 0; for (i=1; i<=n; i++) O(n) sum += n; Asymptotic analysis is defined for equations. We need to convert programs to equations to analyze them. The traditional notation is (1), not (c). (n) even though the value of sum is n2.

Running Time Examples (2) Example 3: O(n2) sum = 0; O(1) for (j=1; j<=n; j++) O(n2) for (i=1; i<=j; i++) sum++; for (k=0; k<n; k++) O(n) A[k] = k; First statement is (1). Double for loop is i = (n2). Final for loop is (n). Result: (n2).

Running Time Examples (3) Example 4: O(n2) sum1 = 0; O(1) for (i=1; i<=n; i++) O(n2) for (j=1; j<=n; j++) sum1++; sum2 = 0; O(1) for (j=1; j<=i; j++) sum2++; sum is n2. First loop, sum is n2. Second loop, sum is (n+1)(n)/2. Both are (n2). sum is (n+1)(n)/2.

Running Time Examples (4) Example 5: O(nlogn) sum1 = 0; for (k=1; k<=n; k*=2) O(logn) for (j=1; j<=n; j++) O(n) sum1++; sum2 = 0; for (k=1; k<=n; k*=2) O(n) for (j=1; j<=k; j++) sum2++; First loop is n for k = 1 to log n, or (n log n). Second loop is 2k for k = 0 to log n - 1, or (n). First loop is n for k = 1 to log n. Second loop is 2k for k = 0 to log n.

Algorithm Efficiency Constant O(1) การข้าถึงสมาชิกตัวที่ iในแถวลำดับ Logarithmic O(logn) การค้นหาแบบBinary Search Linear O(n) การค้นหาแบบSequential Search Linear logarithmic O(n(logn)) การจัดเรียงแบบMerge Sort Quadratic O(n2) การจัดเรียงแบบธรรมดา How much speedup? 10 times. More important: How much increase in problem size for same time expended? That depends on the growth rate. n: Size of input that can be processed in one hour (10,000 steps). n’: Size of input that can be processed in one hour on the new machine (100,000 steps). Note: for 2n, if n = 1000, then n’ would be 1003.

Algorithm Efficiency Assumes instruction speed of one microsecond and 10 instructions in loop. Efficiency Big-O Iterations Est. Time Logarithmic Linear O(logn) O(n) 14 10,000 Microseconds .1 seconds Linear logarithmic Quadratic O(n(logn) O(n2) 140,000 10,0002 2 seconds 15-20 min. Polynomial O(nk) 10,000k Hours Exponential O(cn) 210,000 Intractable Factorial O(n!) 10,000! How much speedup? 10 times. More important: How much increase in problem size for same time expended? That depends on the growth rate. n: Size of input that can be processed in one hour (10,000 steps). n’: Size of input that can be processed in one hour on the new machine (100,000 steps). Note: for 2n, if n = 1000, then n’ would be 1003.

Faster Computer or Algorithm? Old machine can run 10,000 basic operations/hour. New machine can run 100,000 basic operations/hour. What happens when we buy a computer 10 times faster? T(n) n n’ Change n’/n 10n 1,000 10,000 n’ = 10n 10 20n 500 5,000 5n log n 250 1,842 10 n < n’ < 10n 7.37 2n2 70 223 n’ = 10n 3.16 2n 13 16 n’ = n + 3 ----- How much speedup? 10 times. More important: How much increase in problem size for same time expended? That depends on the growth rate. n: Size of input that can be processed in one hour (10,000 steps). n’: Size of input that can be processed in one hour on the new machine (100,000 steps). Note: for 2n, if n = 1000, then n’ would be 1003.