CSc 120. Introduc/on to Computer Programming II. 08: Efficiency and Complexity. Adapted from slides by Dr. Saumya Debray
|
|
- Brittney Cole
- 5 years ago
- Views:
Transcription
1 CSc 120 Introduc/on to Computer Programming II Adapted from slides by Dr. Saumya Debray 08: Efficiency and Complexity
2 EFFICIENCY MATTERS 2
3 reasoning about performance 3
4 Reasoning about efficiency Consider two different programs that sum the integers from 1 to n def sumv1(n): num = 0 for i in range(1,n+1): num += i return num def sumv2(n): num = (n*(n+1))/2 return num 4
5 Reasoning about efficiency How would we compare them to see which is "beger"? def sumv1(n): num = 0 for i in range(1,n+1): num += i return num def sumv2(n): num = (n*(n+1))/2 return num 5
6 Reasoning about efficiency We could compare the difference in running Jmes: Download sumv1(n) o summer18/notes/sumv1.py o run this for these values of n: 10,000, 100,000, 1,000,000 Download sumv2(n) o hgp://www2.cs.arizona.edu/classes/cs120/summer18/notes/ sumv2.py o this for these values of n: 10,000, 100,000, 1,000,000 6
7 Reasoning about efficiency ObservaJons on sumv1(n) vs sumv2(n): For sumv1, as we increase n, the running Jme increases o increases in proporjon to n For sumv2, as we increase n, the running Jme stays the same We nojced this by running the programs But this depends on many external factors 7
8 Reasoning about efficiency The Jme taken for a program to run can depend on: o processor properjes that have nothing to do with the program (e.g., CPU speed, amount of memory) o what other programs are running (i.e., system load) o which inputs we use (some inputs may be worse than others) We would like to compare different algorithms: without requiring that we implement them both first focusing on running Jme (not memory usage) abstracjng away processor- specific details considering all possible inputs 8
9 Reasoning about efficiency Algorithms vs. programs Algorithm: o a step- by- step list of instrucjons for solving a problem Program: o an algorithm that been implemented in a given language We would like to compare different algorithms abstractly 9
10 Comparing algorithms Search for a word my_word in a dicjonary (a book) A dic>onary is sorted Algo 1 (search from the beginning): start at the first word in the dicjonary if the word is not mword, then go to the next word conjnue in sequence unjl my_word is found Algo 2: start at the middle of the dicjonary if my_word is greater than the word in the middle, start with the middle word and conjnue from there to the end if my_word is less than the word in the middle, start with the middle word and conjnue from there to the beginning 10
11 Comparing algorithms Which is beger, Algo 1 (search from the beginning) or Algo 2? Algo 2 in most cases (seemingly) What is the reason? When is Algo 1 beger? Algo 1 is beger if the word is close to the beginning How close to the beginning? When considering which is beger, what measure are we using? The number of comparisons 11
12 Comparing algorithms Call comparison a primi>ve operajon an abstract unit of computajon We want to characterize an algorithm in terms of how many primijve operajons are performed best case and worst case We want to express this in terms of the size of the data (or size of its input) 12
13 Primi/ve opera/ons Abstract units of computajon convenient for reasoning about algorithms approximates typical hardware- level operajons Includes: assigning a value to a variable looking up the value of a variable doing a single arithmejc operajon comparing two numbers accessing a single element of a Python list by index calling a funcjon returning from a funcjon 13
14 Primi/ve ops and running /me A primijve operajon typically corresponds to a small constant number of machine instrucjons No. of primijve operajons executed no. of machine instrucjons executed actual running Jme 14
15 Example Code Primi4ve opera4ons def lookup(str_, list_): for i in range(len(list_)): if str_ == list_[i]: return i return - 1 len(list_) : 1 range( ) : 1 in : 1 for : 2 list_[i] : 1 str_ : 1 == : 1 if : 1 each iterajon: 9 primijve ops 15
16 Primi/ve ops and running /me We consider how a funcjon's running Jme depends on the size of its input which input do we consider? 16
17 Best case vs. worst case inputs # lookup(str_, list_): returns the index where str_ occurs in list_ def lookup(str_, list_): for i in range(len(list_)): if str_ == list_[i]: return i return - 1 Best- case scenario?: Worst- case scenario?: 17
18 Best case vs. worst case inputs # lookup(str_, list_): returns the index where str_ occurs in list_ def lookup(str_, list_): for i in range(len(list_)): if str_ == list_[i]: return i return - 1 Best- case scenario: str_ == list_[0] # first element loop does not have to iterate over list_ at all running Jme does not depend on length of list_ does not reflect typical behavior of the algorithm 18
19 Best case vs. worst case inputs # lookup(str_, list_): returns the index where str_ occurs in list_ def lookup(str_, list_): for i in range(len(list_)): if str_ == list_[i]: return i return - 1 Worst- case scenario: str_ == list_[- 1] # last element loop iterates through list_ running Jme is proporjonal to the length of list_ captures the behavior of the algorithm beger 19
20 Best case vs. worst case inputs # lookup(str_, list_): returns the index where str_ occurs in list_ def lookup(str_, list_): for i in range(len(list_)): if str_ == list_[i]: return i return - 1 In reality, we get something in between but "average- case" is difficult to characterize precisely 20
21 What about average case? Running Jme worst- case Jme average case? best- case Jme 1 0 A B C D E F G H Inputs 21
22 Worst- case complexity Considers worst- case inputs Describes the running Jme of an algorithm as a funcjon of the size of its input ("Jme complexity") Focuses on the rate at which the running Jme grows as the input gets large Typically gives a beger characterizajon of an algorithm's performance This approach can also be applied to the amount of memory used by an algorithm ("space complexity") 22
23 Example Code Primi4ve opera4ons def lookup(str_, list_): for i in range(len(list_)): if str_ == list_[i]: return i return - 1 len(list_) : 1 range( ) : 1 in : 1 for : 2 list_[i] : 1 str_ : 1 == : 1 if : 1 each iterajon: 9 primijve ops 23
24 Example Code Primi4ve opera4ons def lookup(str_, list_): for i in range(len(list_)): if str_ == list_[i]: return i return - 1 Total primi>ve ops executed: 1 iterajon: 9 ops n iterajons: 9n ops + return at the end: 1 op len(list_) : 1 range( ) : 1 in : 1 for : 2 list_[i] : 1 str_ : 1 == : 1 if : 1 each iterajon: 9 primijve ops total worst- case running Jme for a list of length n = 9n
25 EXERCISE # What is the total worst- case running >me of the following code fragment expressed in terms of n? for i in range(n): k =
26 EXERCISE # What is the total worst- case running >me of the following code fragment expressed in terms of n? a = 5 b = 10 for i in range(n): x = i * b for j in range(n): z += b 26
27 asympto/c complexity 27
28 Asympto/c complexity In the worst- case, lookup(str_, list_) executes 9n + 1 primijve operajons given a list of length n To translate this to running Jme: suppose each primijve operajon takes k Jme units then worst- case running Jme is (9n + 1)k But k depends on specifics of the computer, e.g.: Processor speed k running 4me slow n + 20 medium 10 90n + 10 fast 3 27n
29 Asympto/c complexity depends on processor- specific characterisjcs worst case running Jme = An + B depends on how the algorithm processes data 29
30 Asympto/c complexity For algorithm analysis, we focus on how the running Jme grows as a funcjon of the input size n usually, we do not look at the exact worst case running Jme it's enough to know proporjonalijes E.g., for the lookup() funcjon: we say only that its running Jme is "propor>onal to the input length n" 30
31 Example Code Primi4ve opera4ons def list_posijons(list1, list2): posijons = [] for value in list1: idx = lookup(value, list2) posijons.append(idx) return posijons 31
32 Example Code Primi4ve opera4ons def list_posijons(list1, list2): posijons = [] for value in list1: idx = lookup(value, list2) posijons.append(idx) return posijons 1 in : 1 for : 2 9n iterates n Jmes Worst case behavior: primijve operajons = n(9n + 5) + 2 = 9n 2 + 5n + 2 running Jme = k(9n 2 + 5n + 2) 32
33 Example Code def list_posijons(list1, list2): posijons = [] for value in list1: idx = lookup(value, list2) posijons.append(idx) return posijons Primi4ve opera4ons Worst case: 9n 2 + 5n + 2 As n grows, the 9n 2 term grows faster than 5n+2 for large n, the n 2 term dominates running Jme depends primarily on n 2 33
34 Example As n grows larger, the n 2 term dominates the contribujon of the other terms becomes insignificant 9n 2 + 5n + 2 9n 2 9n 2 + 5n + 2 9n 2 9n 2 + 5n + 2 9n 2 34
35 Example 2: 2x x x x x x x 2 2x 2 2x x x 2 35
36 Example 3: x x x x x x x x x x x x x 3 x 3 x 3 x x x x 3 36
37 Growth rates As input size grows, the fastest- growing term dominates the others the contribujon of the smaller terms becomes negligible it suffices to consider only the highest degree (i.e., fastest growing) term For algorithm analysis purposes, the constant factors are not useful they usually reflect implementajon- specific features to compare different algorithms, we focus only on proporjonality ignore constant coefficients 37
38 Comparing algorithms Growth rate n Growth rate n 2 def lookup(str_, list_): for i in range(len(list_)): if str_ == list_[i]: return i return - 1 def list_posijons(list1, list2): posijons = [] for value in list1: idx = lookup(value, list2) posijons.append(idx) return posijons 38
39 Summary so far Want to characterize algorithm efficiency such that: does not depend on processor specifics accounts for all possible inputs count primijve operajons consider worst- case running Jme We specify the running Jme as a funcjon of the size of the input consider proporjonality, ignore constant coefficients consider only the dominant term o e.g., 9n 2 + 5n + 2 n 2 39
40 big- O nota/on 40
41 Big- O nota/on Big- O is formalizes this intuijve idea: consider only the dominant term o e.g., 9n 2 + 5n + 2 n 2 allows us to say, "the algorithm runs in Jme proporjonal to n 2" 41
42 Big- O nota/on IntuiJon: When we say we mean "f(n) is O(g(n))" "f is growing at most as fast as g" "big- O notajon" 42
43 Big- O nota/on Captures the idea of the growth rate of funcjons, focusing on proporjonality and ignoring constants Defini4on: Let f(n) and g(n) be funcjons mapping posijve integers to posijve real numbers. Then, f(n) is O( g(n) ) if there is a real constant c and an integer constant n 0 1 such that f(n) c g(n) for all n > n 0 43
44 Big- O nota/on f(n) is O( g(n) ) if there is a real constant c and an integer constant n 0 1 such that f(n) c g(n) for all n > n 0 Once the input gets big enough, c g(n) is (always) larger than f(n) 44
45 Big- O nota/on: proper/es If g(n) is growing faster than f(n): f(n) is O(g(n)) g(n) is not O(f(n)) If f(n) = a 0 + a 1 n a k n k, then: f(n) = O(n k ) i.e., coefficients and lower- order terms can be ignored g(n) f(n) 45
46 Some common growth- rate curves O(n 3 ) O(n 2 ) O(n log(n)) O(n) O(log n) 46
47 using big- O nota/on 47
48 Compu/ng big- O complexi/es Given the code: Given the code line 1 line 2... line k... O(f 1 (n))... O(f 2 (n))... O(f k (n)) loop... O(f1(n)) iterajons line1... O(f2(n)) The overall complexity is O(max(f 1 (n), f s (n),..., f k (n))) The overall complexity is O( f 1 (n) x f 2 (n) ) 48
49 Using big- O nota/on Code Big- O complexity O(1) str_ == list_[i] O(1) O(1) O(1) 49
50 Using big- O nota/on Code Big- O complexity O(1) if str_ == list_[i]: return i O(1) O(1) O(1) 50
51 Using big- O nota/on Code Big- O complexity for i in range(len(list_)): if str_ == list_[i]: return i O(n) O(n) (worst- case) (n = length of the list) O(1) 51
52 Using big- O nota/on Code Big- O complexity def lookup(str_, list_): for i in range(len(list_)): if str_ == list_[i]: return i return - 1 O(n) O(1) O(n) 52
53 Using big- O nota/on Code Big- O complexity def list_posijons(list1, list2): posijons = [] for value in list1: idx = lookup(value, list2) posijons.append(idx) O(n) (worst- case) (n = length of list1) return posijons O(n 2 ) O(n) (worst- case) (n = length of list2) 53
54 Using big- O nota/on Code Big- O complexity O(1) def list_posijons(list1, list2): posijons = [] for value in list1: O(n 2 ) idx = lookup(value, list2) posijons.append(idx) return posijons O(n 2 ) 54
55 ICA- 6 WARM- UP Do the first 2 problems. Is analyzing worst- case running Jme important? How many Web pages does Google search? hgps:// crawling- indexing/ 55
56 Compu/ng big- O complexi/es Given the code: Given the code line 1 line 2... line k... O(f 1 (n))... O(f 2 (n))... O(f k (n)) loop... O(f1(n)) iterajons line1... O(f2(n)) The overall complexity is O(max(f 1 (n), f s (n),..., f k (n))) The overall complexity is O( f 1 (n) x f 2 (n) ) 56
57 EXERCISE # my_rfind(mylist, elt) : find the distance from the # end of mylist where elt occurs, - 1 if it does not def my_rfind(mylist, elt): pos = len(mylist) 1 while pos >= 0: if mylist[pos] == elt: return pos pos - = 1 return - 1 Worst- case big- O complexity =??? 57
58 EXERCISE # for each element of a list: find the biggest value # between that element and the end of the list def find_biggest_arer(arglist): pos_list = [] for idx0 in range(len(arglist)): biggest = arglist[idx0] for idx1 in range(idx0+1, len(arglist)): biggest = max(arglist[idx1], biggest) pos_list.append(biggest) return pos_list Worst- case big- O complexity =??? 58
59 Input size vs. run /me: max() RunJme (ms) Input size 59
60 EXERCISE # for each element of a list: find the biggest value # between that element and the end of the list def find_biggest_arer(arglist): pos_list = [] for idx0 in range(len(arglist)): biggest = max(arglist[idx0:]) # library code pos_list.append(biggest) return pos_list Worst- case big- O complexity =??? 60
Algorithm Analysis. Fall 2013 Carola Wenk
Algorithm Analysis Fall 2013 Carola Wenk Computer Program Algorithm Input Computer Output Nearly every modern electronic device can be thought of as a computer that transforms input to the desired output.
More informationWhy efficiency of algorithm matters? CSC148 Intro. to Computer Science. Comparison of growth of functions. Why efficiency of algorithm matters?
CSC48 Intro. to Computer Science Lecture : Efficiency of Algorithms, Big Oh Why efficiency of algorithm matters? An example of growth of functions: Amir H. Chinaei, Summer 06 Office Hours: R 0- BA4 ahchinaei@cs.toronto.edu
More informationAlgorithm Analysis. College of Computing & Information Technology King Abdulaziz University. CPCS-204 Data Structures I
Algorithm Analysis College of Computing & Information Technology King Abdulaziz University CPCS-204 Data Structures I Order Analysis Judging the Efficiency/Speed of an Algorithm Thus far, we ve looked
More informationPROGRAM EFFICIENCY & COMPLEXITY ANALYSIS
Lecture 03-04 PROGRAM EFFICIENCY & COMPLEXITY ANALYSIS By: Dr. Zahoor Jan 1 ALGORITHM DEFINITION A finite set of statements that guarantees an optimal solution in finite interval of time 2 GOOD ALGORITHMS?
More informationOutline. runtime of programs algorithm efficiency Big-O notation List interface Array lists
Outline runtime of programs algorithm efficiency Big-O notation List interface Array lists Runtime of Programs compare the following two program fragments: int result = 1; int result = 1; for (int i=2;
More informationComputer Science 210 Data Structures Siena College Fall Topic Notes: Complexity and Asymptotic Analysis
Computer Science 210 Data Structures Siena College Fall 2017 Topic Notes: Complexity and Asymptotic Analysis Consider the abstract data type, the Vector or ArrayList. This structure affords us the opportunity
More informationRemember, to manage anything, we need to measure it. So, how do we compare two implementations? ArrayBag vs. LinkedBag Which is more efficient?
CS706 Intro to Object Oriented Dev II - Spring 04 Announcements Week 4 Program due Two Weeks! Lab 3-4 required completion this week First web-cat submission Material Evaluation of efficiency Time Analysis
More informationAlgorithm Performance. (the Big-O)
Algorithm Performance (the Big-O) Lecture 6 Today: Worst-case Behaviour Counting Operations Performance Considerations Time measurements Order Notation (the Big-O) Pessimistic Performance Measure Often
More informationTeach A level Compu/ng: Algorithms and Data Structures
Teach A level Compu/ng: Algorithms and Data Structures Eliot Williams @MrEliotWilliams Course Outline Representa+ons of data structures: Arrays, tuples, Stacks, Queues,Lists 2 Recursive Algorithms 3 Searching
More informationMeasuring the Efficiency of Algorithms
Algorithm analysis Measuring the Efficiency of Algorithms When choosing algorithms, we often have to settle for a space/time tradeoff An algorithm can be designed to gain faster run times at the cost of
More information61A LECTURE 16 TREES, ORDERS OF GROWTH. Steven Tang and Eric Tzeng July 22, 2013
61A LECTURE 16 TREES, ORDERS OF GROWTH Steven Tang and Eric Tzeng July 22, 2013 Announcements Project 3 pushed back one day to August 2 Regrades for project 1 composition scores, due by next Monday Potluck
More informationWhy study algorithms? CS 561, Lecture 1. Today s Outline. Why study algorithms? (II)
Why study algorithms? CS 561, Lecture 1 Jared Saia University of New Mexico Seven years of College down the toilet - John Belushi in Animal House Q: Can I get a programming job without knowing something
More information10/5/2016. Comparing Algorithms. Analyzing Code ( worst case ) Example. Analyzing Code. Binary Search. Linear Search
10/5/2016 CSE373: Data Structures and Algorithms Asymptotic Analysis (Big O,, and ) Steve Tanimoto Autumn 2016 This lecture material represents the work of multiple instructors at the University of Washington.
More informationChecking for duplicates Maximum density Battling computers and algorithms Barometer Instructions Big O expressions. John Edgar 2
CMPT 125 Checking for duplicates Maximum density Battling computers and algorithms Barometer Instructions Big O expressions John Edgar 2 Write a function to determine if an array contains duplicates int
More informationAlgorithm Analysis. Spring Semester 2007 Programming and Data Structure 1
Algorithm Analysis Spring Semester 2007 Programming and Data Structure 1 What is an algorithm? A clearly specifiable set of instructions to solve a problem Given a problem decide that the algorithm is
More informationAlgorithm Analysis. Gunnar Gotshalks. AlgAnalysis 1
Algorithm Analysis AlgAnalysis 1 How Fast is an Algorithm? 1 Measure the running time» Run the program for many data types > Use System.currentTimeMillis to record the time Worst Time Average Best» Usually
More information[ 11.2, 11.3, 11.4] Analysis of Algorithms. Complexity of Algorithms. 400 lecture note # Overview
400 lecture note #0 [.2,.3,.4] Analysis of Algorithms Complexity of Algorithms 0. Overview The complexity of an algorithm refers to the amount of time and/or space it requires to execute. The analysis
More informationUnit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES
DESIGN AND ANALYSIS OF ALGORITHMS Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES http://milanvachhani.blogspot.in USE OF LOOPS As we break down algorithm into sub-algorithms, sooner or later we shall
More informationLECTURE 9 Data Structures: A systematic way of organizing and accessing data. --No single data structure works well for ALL purposes.
LECTURE 9 Data Structures: A systematic way of organizing and accessing data. --No single data structure works well for ALL purposes. Input Algorithm Output An algorithm is a step-by-step procedure for
More information15110 Principles of Computing, Carnegie Mellon University - CORTINA. Binary Search. Required: List L of n unique elements.
UNIT 5B Binary Search 1 Binary Search Required: List L of n unique elements. The elements must be sorted in increasing order. Result: The index of a specific element (called the key) or None if the key
More informationSearching, Sorting. Arizona State University 1
Searching, Sorting CSE100 Principles of Programming with C++, Fall 2018 (based off Chapter 9 slides by Pearson) Ryan Dougherty Arizona State University http://www.public.asu.edu/~redoughe/ Arizona State
More information9/10/2018 Algorithms & Data Structures Analysis of Algorithms. Siyuan Jiang, Sept
9/10/2018 Algorithms & Data Structures Analysis of Algorithms Siyuan Jiang, Sept. 2018 1 Email me if the office door is closed Siyuan Jiang, Sept. 2018 2 Grades have been emailed github.com/cosc311/assignment01-userid
More informationDESIGN AND ANALYSIS OF ALGORITHMS. Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES
DESIGN AND ANALYSIS OF ALGORITHMS Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES http://milanvachhani.blogspot.in USE OF LOOPS As we break down algorithm into sub-algorithms, sooner or later we shall
More informationWhat is an algorithm?
Reminders CS 142 Lecture 3 Analysis, ADTs & Objects Program 1 was assigned - Due on 1/27 by 11:55pm 2 Abstraction Measuring Algorithm Efficiency When you utilize the mylist.index(item) function you are
More informationExtended Introduction to Computer Science CS1001.py
Extended Introduction to Computer Science CS00.py Lecture 6: Basic algorithms: Search, Merge and Sort; Time Complexity Instructors: Benny Chor, Amir Rubinstein Teaching Assistants: Michal Kleinbort, Yael
More informationData Structures Lecture 8
Fall 2017 Fang Yu Software Security Lab. Dept. Management Information Systems, National Chengchi University Data Structures Lecture 8 Recap What should you have learned? Basic java programming skills Object-oriented
More informationAlgorithm efficiency can be measured in terms of: Time Space Other resources such as processors, network packets, etc.
Algorithms Analysis Algorithm efficiency can be measured in terms of: Time Space Other resources such as processors, network packets, etc. Algorithms analysis tends to focus on time: Techniques for measuring
More informationIT 4043 Data Structures and Algorithms
IT 4043 Data Structures and Algorithms Budditha Hettige Department of Computer Science 1 Syllabus Introduction to DSA Abstract Data Types Arrays List Operation Using Arrays Recursion Stacks Queues Link
More informationCS 261 Data Structures. Big-Oh Analysis: A Review
CS 261 Data Structures Big-Oh Analysis: A Review Big-Oh: Purpose How can we characterize the runtime or space usage of an algorithm? We want a method that: doesn t depend upon hardware used (e.g., PC,
More informationCSCI 136 Data Structures & Advanced Programming. Lecture 7 Spring 2018 Bill and Jon
CSCI 136 Data Structures & Advanced Programming Lecture 7 Spring 2018 Bill and Jon Administrative Details Lab 3 Wednesday! You may work with a partner Fill out Lab 3 Partners Google form either way! Come
More informationAlgorithms and Programming
Algorithms and Programming Lecture 8 Recursion. Computational complexity Camelia Chira Course content Programming in the large Programming in the small Introduction in the software development process
More informationCSE373: Data Structures and Algorithms Lecture 4: Asymptotic Analysis. Aaron Bauer Winter 2014
CSE373: Data Structures and Algorithms Lecture 4: Asymptotic Analysis Aaron Bauer Winter 2014 Previously, on CSE 373 We want to analyze algorithms for efficiency (in time and space) And do so generally
More informationCS240 Fall Mike Lam, Professor. Algorithm Analysis
CS240 Fall 2014 Mike Lam, Professor Algorithm Analysis HW1 Grades are Posted Grades were generally good Check my comments! Come talk to me if you have any questions PA1 is Due 9/17 @ noon Web-CAT submission
More informationCS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims. Lecture 10: Asymptotic Complexity and
CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims Lecture 10: Asymptotic Complexity and What Makes a Good Algorithm? Suppose you have two possible algorithms or
More informationCSE 146. Asymptotic Analysis Interview Question of the Day Homework 1 & Project 1 Work Session
CSE 146 Asymptotic Analysis Interview Question of the Day Homework 1 & Project 1 Work Session Comparing Algorithms Rough Estimate Ignores Details Or really: independent of details What are some details
More informationAsymptotic Analysis of Algorithms
Asymptotic Analysis of Algorithms EECS2030 B: Advanced Object Oriented Programming Fall 2018 CHEN-WEI WANG Algorithm and Data Structure A data structure is: A systematic way to store and organize data
More informationComplexity of Algorithms
CSCE 222 Discrete Structures for Computing Complexity of Algorithms Dr. Hyunyoung Lee Based on slides by Andreas Klappenecker 1 Overview Example - Fibonacci Motivating Asymptotic Run Time Analysis Asymptotic
More informationCS240 Fall Mike Lam, Professor. Algorithm Analysis
CS240 Fall 2014 Mike Lam, Professor Algorithm Analysis Algorithm Analysis Motivation: what and why Mathematical functions Comparative & asymptotic analysis Big-O notation ("Big-Oh" in textbook) Analyzing
More informationCSE 373: Data Structures and Algorithms More Asympto<c Analysis; More Heaps
CSE 373: Data Structures and More Asympto
More informationNotes slides from before lecture. CSE 21, Winter 2017, Section A00. Lecture 3 Notes. Class URL:
Notes slides from before lecture CSE 21, Winter 2017, Section A00 Lecture 3 Notes Class URL: http://vlsicad.ucsd.edu/courses/cse21-w17/ Notes slides from before lecture Notes January 18 (1) HW2 has been
More informationChapter 2: Complexity Analysis
Chapter 2: Complexity Analysis Objectives Looking ahead in this chapter, we ll consider: Computational and Asymptotic Complexity Big-O Notation Properties of the Big-O Notation Ω and Θ Notations Possible
More informationCS1 Lecture 22 Mar. 6, 2019
CS1 Lecture 22 Mar. 6, 2019 HW 5 due Friday Questions? In discussion exams next week Last time Ch 12. Zip, lambda, etc Default/keyword function parameters Ch 19 conditional expresssions, list comprehensions
More informationASYMPTOTIC COMPLEXITY
Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better. - Edsger Dijkstra ASYMPTOTIC COMPLEXITY Lecture
More informationAlgorithmic Analysis. Go go Big O(h)!
Algorithmic Analysis Go go Big O(h)! 1 Corresponding Book Sections Pearson: Chapter 6, Sections 1-3 Data Structures: 4.1-4.2.5 2 What is an Algorithm? Informally, any well defined computational procedure
More informationExtended Introduction to Computer Science CS1001.py Lecture 7: Basic Algorithms: Sorting, Merge; Time Complexity and the O( ) notation
Extended Introduction to Computer Science CS1001.py Lecture 7: Basic Algorithms: Sorting, Merge; Time Complexity and the O( ) notation Instructors: Daniel Deutch, Amir Rubinstein Teaching Assistants: Michal
More informationData structure and algorithm in Python
Data structure and algorithm in Python Algorithm Analysis Xiaoping Zhang School of Mathematics and Statistics, Wuhan University Table of contents 1. Experimental studies 2. The Seven Functions used in
More informationASYMPTOTIC COMPLEXITY
Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better. - Edsger Dijkstra ASYMPTOTIC COMPLEXITY Lecture
More informationAlgorithm Efficiency & Sorting. Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms
Algorithm Efficiency & Sorting Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms Overview Writing programs to solve problem consists of a large number of decisions how to represent
More informationChapter 6 INTRODUCTION TO DATA STRUCTURES AND ALGORITHMS
Chapter 6 INTRODUCTION TO DATA STRUCTURES AND ALGORITHMS 1 Reference books: The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie Programming in C (3rd Edition) by Stephen G. Kochan. Data
More informationAlgorithm Analysis. Part I. Tyler Moore. Lecture 3. CSE 3353, SMU, Dallas, TX
Algorithm Analysis Part I Tyler Moore CSE 5, SMU, Dallas, TX Lecture how many times do you have to turn the crank? Some slides created by or adapted from Dr. Kevin Wayne. For more information see http://www.cs.princeton.edu/~wayne/kleinberg-tardos.
More informationECE 2574: Data Structures and Algorithms - Big-O Notation. C. L. Wyatt
ECE 2574: Data Structures and Algorithms - Big-O Notation C. L. Wyatt Today we will look at a common way algorithms are described, as an upper-bound on their growth rate functions. These are used to categorize
More informationUniversity of Petra Faculty of Information Technology
University of Petra Faculty of Information Technology Measuring Algorithm Efficiency Dr. techn. Dipl. Inform. Bassam Haddad d Associate Professor of Computer Science Faculty of Information Technology Petra
More informationCS S-02 Algorithm Analysis 1
CS245-2008S-02 Algorithm Analysis 1 02-0: Algorithm Analysis When is algorithm A better than algorithm B? 02-1: Algorithm Analysis When is algorithm A better than algorithm B? Algorithm A runs faster 02-2:
More informationMeasuring algorithm efficiency
CMPT 225 Measuring algorithm efficiency Timing Counting Cost functions Cases Best case Average case Worst case Searching Sorting O Notation O notation's mathematical basis O notation classes and notations
More informationHow do we compare algorithms meaningfully? (i.e.) the same algorithm will 1) run at different speeds 2) require different amounts of space
How do we compare algorithms meaningfully? (i.e.) the same algorithm will 1) run at different speeds 2) require different amounts of space when run on different computers! for (i = n-1; i > 0; i--) { maxposition
More informationAssignment 1 (concept): Solutions
CS10b Data Structures and Algorithms Due: Thursday, January 0th Assignment 1 (concept): Solutions Note, throughout Exercises 1 to 4, n denotes the input size of a problem. 1. (10%) Rank the following functions
More informationAlgorithm Analysis. Performance Factors
Algorithm Analysis How can we demonstrate that one algorithm is superior to another without being misled by any of the following problems: Special cases Every algorithm has certain inputs that allow it
More informationasymptotic growth rate or order compare two functions, but ignore constant factors, small inputs
Big-Oh 1 asymptotic growth rate or order 2 compare two functions, but ignore constant factors, small inputs asymptotic growth rate or order 2 compare two functions, but ignore constant factors, small inputs
More informationAnalysis of Algorithms
Analysis of Algorithms Data Structures and Algorithms Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++ Goodrich, Tamassia and Mount (Wiley, 2004)
More informationAlgorithm Analysis. Review of Terminology Some Consequences of Growth Rates. The book s big example: Detecting anagrams. There be math here!
Algorithm Analysis Review of Terminology Some Consequences of Growth Rates There be math here! The book s big example: Detecting anagrams 4 different algorithms! Big O Definition: T(N) = O(f(N)) if there
More informationAgenda. The worst algorithm in the history of humanity. Asymptotic notations: Big-O, Big-Omega, Theta. An iterative solution
Agenda The worst algorithm in the history of humanity 1 Asymptotic notations: Big-O, Big-Omega, Theta An iterative solution A better iterative solution The repeated squaring trick Fibonacci sequence 2
More informationDraft Notes 1 : Scaling in Ad hoc Routing Protocols
Draft Notes 1 : Scaling in Ad hoc Routing Protocols Timothy X Brown University of Colorado April 2, 2008 2 Introduction What is the best network wireless network routing protocol? This question is a function
More informationPython Lists and for Loops. Learning Outcomes. What s a List 9/19/2012
Python Lists and for Loops CMSC 201 Fall 2012 Instructor: John Park Lecture Section 01 Discussion Sections 02-08, 16, 17 1 Learning Outcomes Be aware that multiple items can be stored in a list. Become
More informationLecture 2: Algorithm Analysis
ECE4050/CSC5050 Algorithms and Data Structures Lecture 2: Algorithm Analysis 1 Mathematical Background Logarithms Summations Recursion Induction Proofs Recurrence Relations 2 2 Logarithm Definition: 3
More informationComplexity of Algorithms. Andreas Klappenecker
Complexity of Algorithms Andreas Klappenecker Example Fibonacci The sequence of Fibonacci numbers is defined as 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,... F n 1 + F n 2 if n>1 F n = 1 if n =1 0 if n =0 Fibonacci
More informationEECS 477: Introduction to algorithms. Lecture 6
EECS 477: Introduction to algorithms. Lecture 6 Prof. Igor Guskov guskov@eecs.umich.edu September 24, 2002 1 Lecture outline Finish up with asymptotic notation Asymptotic analysis of programs Analyzing
More informationAlgorithm Analysis. (Algorithm Analysis ) Data Structures and Programming Spring / 48
Algorithm Analysis (Algorithm Analysis ) Data Structures and Programming Spring 2018 1 / 48 What is an Algorithm? An algorithm is a clearly specified set of instructions to be followed to solve a problem
More informationTHE UNIVERSITY OF WESTERN AUSTRALIA
THE UNIVERSITY OF WESTERN AUSTRALIA MID SEMESTER EXAMINATION April 2018 DEPARTMENT OF COMPUTER SCIENCE & SOFTWARE ENGINEERING DATA STRUCTURES AND ALGORITHMS CITS2200 This Paper Contains: 6 Pages 10 Questions
More informationRUNNING TIME ANALYSIS. Problem Solving with Computers-II
RUNNING TIME ANALYSIS Problem Solving with Computers-II Performance questions 4 How efficient is a particular algorithm? CPU time usage (Running time complexity) Memory usage Disk usage Network usage Why
More informationCS 10: Problem solving via Object Oriented Programming. Info Retrieval
CS 10: Problem solving via Object Oriented Programming Info Retrieval ADT Overview Descrip+on List Keep items stored in order Common use Grow to hold any number of items Implementa+on op+ons Java provided
More informationSelection, Bubble, Insertion, Merge, Heap, Quick Bucket, Radix
Spring 2010 Review Topics Big O Notation Heaps Sorting Selection, Bubble, Insertion, Merge, Heap, Quick Bucket, Radix Hashtables Tree Balancing: AVL trees and DSW algorithm Graphs: Basic terminology and
More informationAnalysis of Algorithms. CS 1037a Topic 13
Analysis of Algorithms CS 1037a Topic 13 Overview Time complexity - exact count of operations T(n) as a function of input size n - complexity analysis using O(...) bounds - constant time, linear, logarithmic,
More informationChoice of C++ as Language
EECS 281: Data Structures and Algorithms Principles of Algorithm Analysis Choice of C++ as Language All algorithms implemented in this book are in C++, but principles are language independent That is,
More informationToday s Outline. CSE 326: Data Structures Asymptotic Analysis. Analyzing Algorithms. Analyzing Algorithms: Why Bother? Hannah Takes a Break
Today s Outline CSE 326: Data Structures How s the project going? Finish up stacks, queues, lists, and bears, oh my! Math review and runtime analysis Pretty pictures Asymptotic analysis Hannah Tang and
More informationAlgorithm. Algorithm Analysis. Algorithm. Algorithm. Analyzing Sorting Algorithms (Insertion Sort) Analyzing Algorithms 8/31/2017
8/3/07 Analysis Introduction to Analysis Model of Analysis Mathematical Preliminaries for Analysis Set Notation Asymptotic Analysis What is an algorithm? An algorithm is any well-defined computational
More informationTest 1 SOLUTIONS. June 10, Answer each question in the space provided or on the back of a page with an indication of where to find the answer.
Test 1 SOLUTIONS June 10, 2010 Total marks: 34 Name: Student #: Answer each question in the space provided or on the back of a page with an indication of where to find the answer. There are 4 questions
More information1 Introduction. 2 InsertionSort. 2.1 Correctness of InsertionSort
CS 161, Lecture 2 MergeSort, Recurrences 101, and Asymptotic Analysis Scribes: Michael Kim (2015), Ofir Geri (2016), M. Wootters (2017) Date: September 27, 2017 Adapted From Virginia Williams lecture notes
More informationScientific Computing. Algorithm Analysis
ECE257 Numerical Methods and Scientific Computing Algorithm Analysis Today s s class: Introduction to algorithm analysis Growth of functions Introduction What is an algorithm? A sequence of computation
More informationRecitation 9. Prelim Review
Recitation 9 Prelim Review 1 Heaps 2 Review: Binary heap min heap 1 2 99 4 3 PriorityQueue Maintains max or min of collection (no duplicates) Follows heap order invariant at every level Always balanced!
More informationComputer Systems and Networks. ECPE 170 Jeff Shafer University of the Pacific. Binary Numbers
ECPE 170 Jeff Shafer University of the Pacific Binary Numbers 2 Recap - von Neumann Model How does this run a stored program? 3 Objectives Chapter 2 in textbook Digital computers How do we represent numbers
More informationCSCA48 Winter 2018 Week 10:Algorithm Analysis. Marzieh Ahmadzadeh, Nick Cheng University of Toronto Scarborough
CSCA48 Winter 2018 Week 10:Algorithm Analysis Marzieh Ahmadzadeh, Nick Cheng University of Toronto Scarborough Algorithm Definition: Solving a problem step-by-step in finite amount of time. Analysis: How
More informationSTA141C: Big Data & High Performance Statistical Computing
STA141C: Big Data & High Performance Statistical Computing Lecture 2: Background in Algorithms Cho-Jui Hsieh UC Davis April 5/April 10, 2017 Time Complexity Analysis Time Complexity There are always many
More informationThe So'ware Stack: From Assembly Language to Machine Code
Taken from COMP 506 Rice University Spring 2017 The So'ware Stack: From Assembly Language to Machine Code source code IR Front End OpJmizer Back End IR target code Somewhere Out Here Copyright 2017, Keith
More informationSTA141C: Big Data & High Performance Statistical Computing
STA141C: Big Data & High Performance Statistical Computing Lecture 3: Background in Algorithms Cho-Jui Hsieh UC Davis April 13, 2017 Time Complexity Analysis Time Complexity There are always many ways
More informationcsci 210: Data Structures Program Analysis
csci 210: Data Structures Program Analysis Summary Summary analysis of algorithms asymptotic analysis and notation big-o big-omega big-theta commonly used functions discrete math refresher Analysis of
More informationTime Analysis of Sorting and Searching Algorithms
Time Analysis of Sorting and Searching Algorithms CSE21 Winter 2017, Day 5 (B00), Day 3 (A00) January 20, 2017 http://vlsicad.ucsd.edu/courses/cse21-w17 Binary Search: WHEN procedure binary search (x:
More informationAlgorithm Efficiency & Sorting. Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms
Algorithm Efficiency & Sorting Algorithm efficiency Big-O notation Searching algorithms Sorting algorithms Overview Writing programs to solve problem consists of a large number of decisions how to represent
More informationComputational biology course IST 2015/2016
Computational biology course IST 2015/2016 Introduc)on to Algorithms! Algorithms: problem- solving methods suitable for implementation as a computer program! Data structures: objects created to organize
More informationIntroduc4on to Algorithms
CS 2351 Data Structures Introduc4on to Algorithms Prof. Chung- Ta King Department of Computer Science Na9onal Tsing Hua University Outline l Data structure and algorithm What is algorithm? How to specify
More informationIntroduction to Analysis of Algorithms
Introduction to Analysis of Algorithms Analysis of Algorithms To determine how efficient an algorithm is we compute the amount of time that the algorithm needs to solve a problem. Given two algorithms
More informationComputer Algorithms. Introduction to Algorithm
Computer Algorithms Introduction to Algorithm CISC 4080 Yanjun Li 1 What is Algorithm? An Algorithm is a sequence of well-defined computational steps that transform the input into the output. These steps
More informationAsymptotic Analysis Spring 2018 Discussion 7: February 27, 2018
CS 61B Asymptotic Analysis Spring 2018 Discussion 7: February 27, 2018 1 Asymptotic Notation 1.1 Order the following big-o runtimes from smallest to largest. O(log n), O(1), O(n n ), O(n 3 ), O(n log n),
More informationCS 3410 Ch 5 (DS*), 23 (IJP^)
CS 3410 Ch 5 (DS*), 23 (IJP^) *CS 1301 & 1302 text, Introduction to Java Programming, Liang, 7 th ed. ^CS 3410 text, Data Structures and Problem Solving Using Java, Weiss, 4 th edition Sections Pages Review
More informationDATA STRUCTURES AND ALGORITHMS. Asymptotic analysis of the algorithms
DATA STRUCTURES AND ALGORITHMS Asymptotic analysis of the algorithms Summary of the previous lecture Algorithm definition Representation of the algorithms: Flowchart, Pseudocode Description Types of the
More informationThe Limits of Sorting Divide-and-Conquer Comparison Sorts II
The Limits of Sorting Divide-and-Conquer Comparison Sorts II CS 311 Data Structures and Algorithms Lecture Slides Monday, October 12, 2009 Glenn G. Chappell Department of Computer Science University of
More informationData Structures and Algorithms(1)
Ming Zhang Data Structures and Algorithms Data Structures and Algorithms(1) Instructor: Ming Zhang Textbook Authors: Ming Zhang, Tengjiao Wang and Haiyan Zhao Higher Education Press, 2008.6 (the "Eleventh
More informationAlgorithms: Efficiency, Analysis, techniques for solving problems using computer approach or methodology but not programming
Chapter 1 Algorithms: Efficiency, Analysis, and dod Order Preface techniques for solving problems using computer approach or methodology but not programming language e.g., search Collie Collean in phone
More informationCSC148 Week 9. Larry Zhang
CSC148 Week 9 Larry Zhang 1 Announcement 2 More Announcements Assignment 2 out. You may work in groups of 1-3 students. Test 2 on next Friday (Mar 16). No lecture on that day. The test starts at 5:30 The
More informationData Structures and Algorithms
Data Structures and Algorithms CS245-2017S-02 Algorithm Analysis David Galles Department of Computer Science University of San Francisco 02-0: Algorithm Analysis When is algorithm A better than algorithm
More informationData Structures and Algorithms. Part 2
1 Data Structures and Algorithms Part 2 Werner Nutt 2 Acknowledgments The course follows the book Introduction to Algorithms, by Cormen, Leiserson, Rivest and Stein, MIT Press [CLRST]. Many examples displayed
More information