Compsci 100, Fall 2009 4.1 Analysis: Algorithms and Data Structures l We need a vocabulary to discuss performance  Reason about alternative algorithms.

Slides:



Advertisements
Similar presentations
MATH 224 – Discrete Mathematics
Advertisements

Analysis of Algorithms CS Data Structures Section 2.6.
Lecture 12: Revision Lecture Dr John Levine Algorithms and Complexity March 27th 2006.
CMPT 225 Sorting Algorithms Algorithm Analysis: Big O Notation.
the fourth iteration of this loop is shown here
Algorithmic Complexity Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
CompSci 100 Prog Design and Analysis II Sept 9, 2010 Prof. Rodger CompSci 100, Fall n  i=1 i.
Introduction to Analysis of Algorithms
Complexity Analysis (Part I)
DAST, Spring © L. Joskowicz 1 Data Structures – LECTURE 1 Introduction Motivation: algorithms and abstract data types Easy problems, hard problems.
Algorithm Analysis CS 201 Fundamental Structures of Computer Science.
Elementary Data Structures and Algorithms
Analysis of Algorithms COMP171 Fall Analysis of Algorithms / Slide 2 Introduction * What is Algorithm? n a clearly specified set of simple instructions.
DAST, Spring © L. Joskowicz 1 Data Structures – LECTURE 1 Introduction Motivation: algorithms and abstract data types Easy problems, hard problems.
Data Structure & Algorithm Lecture 3 –Algorithm Analysis JJCAO.
SIGCSE Tradeoffs, intuition analysis, understanding big-Oh aka O-notation Owen Astrachan
Week 2 CS 361: Advanced Data Structures and Algorithms
CPS Wordcounting, sets, and the web l How does Google store all web pages that include a reference to “peanut butter with mustard”  What efficiency.
CPS 100, Spring Analysis: Algorithms and Data Structures l We need a vocabulary to discuss performance and to reason about alternative algorithms.
Data Structures and Algorithms Lecture 5 and 6 Instructor: Quratulain Date: 15 th and 18 th September, 2009 Faculty of Computer Science, IBA.
Lecture 2 Computational Complexity
Algorithm Efficiency CS 110: Data Structures and Algorithms First Semester,
Iterative Algorithm Analysis & Asymptotic Notations
CSCI-256 Data Structures & Algorithm Analysis Lecture Note: Some slides by Kevin Wayne. Copyright © 2005 Pearson-Addison Wesley. All rights reserved. 4.
Analysis of Algorithms
Algorithm Evaluation. What’s an algorithm? a clearly specified set of simple instructions to be followed to solve a problem a way of doing something What.
1 COMP3040 Tutorial 1 Analysis of algorithms. 2 Outline Motivation Analysis of algorithms Examples Practice questions.
February 4, 2005 Searching and Sorting Arrays. Searching.
Week 12 - Wednesday.  What did we talk about last time?  Asymptotic notation.
Program Efficiency & Complexity Analysis. Algorithm Review An algorithm is a definite procedure for solving a problem in finite number of steps Algorithm.
1 CSC 427: Data Structures and Algorithm Analysis Fall 2008 Algorithm analysis, searching and sorting  best vs. average vs. worst case analysis  big-Oh.
CompSci 100E 9.1 Stack: What problems does it solve?  Stacks are used to avoid recursion, a stack can replace the implicit/actual stack of functions called.
Chapter 10 Algorithm Analysis.  Introduction  Generalizing Running Time  Doing a Timing Analysis  Big-Oh Notation  Analyzing Some Simple Programs.
Algorithm Analysis CS 400/600 – Data Structures. Algorithm Analysis2 Abstract Data Types Abstract Data Type (ADT): a definition for a data type solely.
CPS 100, Spring Topdown v Bottomup l Programming is changing our world  Empowering, liberating, equalizing,… l Everything is a bit: all 0’s and.
Algorithm Analysis Part of slides are borrowed from UST.
M180: Data Structures & Algorithms in Java Algorithm Analysis Arab Open University 1.
Sorting.
Georgia Institute of Technology Speed part 4 Barb Ericson Georgia Institute of Technology May 2006.
CompSci Analyzing Algorithms  Consider three solutions to SortByFreqs, also code used in Anagram assignment  Sort, then scan looking for changes.
1/6/20161 CS 3343: Analysis of Algorithms Lecture 2: Asymptotic Notations.
CompSci 100E 15.1 What is a Binary Search?  Magic!  Has been used a the basis for “magical” tricks  Find telephone number ( without computer ) in seconds.
CSE 373: Data Structures and Algorithms
Searching and Sorting Searching: Sequential, Binary Sorting: Selection, Insertion, Shell.
CS 150: Analysis of Algorithms. Goals for this Unit Begin a focus on data structures and algorithms Understand the nature of the performance of algorithms.
Searching Topics Sequential Search Binary Search.
CompSci 100 Prog Design and Analysis II Sept 14, 2010 Prof. Rodger CompSci 100, Fall
CPS 100e 5.1 Inheritance and Interfaces l Inheritance models an "is-a" relationship  A dog is a mammal, an ArrayList is a List, a square is a shape, …
CPS Solving Problems Recursively l Recursion is an indispensable tool in a programmer’s toolkit  Allows many complex problems to be solved simply.
GC 211:Data Structures Week 2: Algorithm Analysis Tools Slides are borrowed from Mr. Mohammad Alqahtani.
Chapter 15 Running Time Analysis. Topics Orders of Magnitude and Big-Oh Notation Running Time Analysis of Algorithms –Counting Statements –Evaluating.
CPS 100, Spring Tools: Solve Computational Problems l Algorithmic techniques  Brute-force/exhaustive, greedy algorithms, dynamic programming,
AP National Conference, AP CS A and AB: New/Experienced A Tall Order? Mark Stehlik
TAFTD (Take Aways for the Day)
Complexity Analysis (Part I)
Design and Analysis of Algorithms Chapter -2
CSC 427: Data Structures and Algorithm Analysis
Analysis: Algorithms and Data Structures
Algorithmic complexity: Speed of algorithms
Sorting by Tammy Bailey
Tools: Solve Computational Problems
Algorithm Analysis (not included in any exams!)
Algorithm design and Analysis
Introduction to Algorithms Analysis
CS 201 Fundamental Structures of Computer Science
Algorithmic complexity: Speed of algorithms
CSC 427: Data Structures and Algorithm Analysis
Algorithmic complexity: Speed of algorithms
Complexity Analysis (Part I)
Complexity Analysis (Part I)
Presentation transcript:

Compsci 100, Fall Analysis: Algorithms and Data Structures l We need a vocabulary to discuss performance  Reason about alternative algorithms and implementations  It’s faster! It’s more elegant! It’s safer! It’s cooler! l Need empirical tests, analytical/mathematical tools  Given two methods, which is better? Run them to check. 30 seconds vs. 3 seconds, easy. 5 hours vs. 2 minutes, harder What if it takes two weeks to implement the methods?  Use mathematics to analyze the algorithm,  The implementation is another matter, cache, compiler optimizations, OS, memory,…

Compsci 100, Fall How fast does the code run? l “As soon as an Analytical Engine exists, it will necessarily guide the future course of the science. Whenever any result is sought by its aid, the question will then arise — by what course of calculation can these results be arrived at by the machine in the shortest time?”  Babbage, Analytical Engine 1864 Babbage, Analytical Engine 1864 l Question: What’s the fastest way to sort a million 32-bit integers? l Obama’s answer: I don’t think the bubble sort is the way to go Obama’s answer

Compsci 100, Fall What is a list in Java? l Collection of elements, operations?  Add, remove, traverse, …  What can a list do to itself?  What can we do to a list? l Why are there different kinds of lists? Array and Linked  Useful in different applications  How do we analyze differences?

Compsci 100, Fall Analyze Data Structures public double removeFirst(List list) { double start = System.currentTimeMillis(); while (list.size() != 1){ list.remove(0); } double end = System.currentTimeMillis(); return (end-start)/1000.0; } List linked = new LinkedList (); List array = new ArrayList (); double ltime = splicer.removeFirst(splicer.create(linked,100000)); double atime = splicer.removeFirst(splicer.create(array,100000)); l Time taken to remove the first element?

Compsci 100, Fall Removing first element sizelinkarray

Compsci 100, Fall Middle Index Removal public double removeMiddleIndex(List list) { double start = System.currentTimeMillis(); while (list.size() != 1){ list.remove(list.size()/2); } double end = System.currentTimeMillis(); return (end-start)/1000.0; } l What operations could be expensive here?  Explicit: size, remove  Implicit: find n th element

Compsci 100, Fall Remove middle element sizelinkarray

Compsci 100, Fall Quantitative Measurements of Code l Typically measure running time (memory?)  Other things to measure?  What about wall-clock v CPU time? Java: wall-clock l Typically change size of input/problem to validate runtime hypotheses  Not the data itself, but the number of data items  Size of string vs. number of strings in array? l Doubling hypothesis: What effect does doubling input size have on running time?  Linear: time doubles, quadratic: factor of four, …

Compsci 100, Fall Different measures of complexity l Worst case  Gives a good upper-bound on behavior  Never get worse than this  Drawbacks? l Average case  What does average mean?  Averaged over all inputs? Assuming uniformly distributed random data?  Drawbacks? l Best case  Linear search, useful?

Compsci 100, Fall Jaron LanierJaron Lanier ( Jaron Lanier is a computer scientist, composer, visual artist, and author. He coined the term ‘Virtual Reality’ … he co-developed the first implementations of virtual reality applications in surgical simulation, vehicle interior prototyping, virtual sets for television production, and assorted other areas "What's the difference between a bug and a variation or an imperfection? If you think about it, if you make a small change to a program, it can result in an enormous change in what the program does. If nature worked that way, the universe would crash all the time.”

Compsci 100, Fall Notations for measuring complexity l O-notation or big-Oh: O(n 2 ) is used in most algorithmic analysis, e.g., Compsci 130 at Duke. It’s an upper bound in the limit  Correct to say that linear algorithm is O(n 2 ), but useful? Theta-notation or  (n 2 ) is a tight bound, solid guarantee that algorithmic analysis is exact, both upper and lower bound Omega is lower bound:  (n log n) is a lower bound for comparison based sorts  Can’t do better than that, very hard to prove l Sedgewick/Wayne uses tilde notation ~ n 2 means leading term is n squared  We’ll use this, but abuse big-Oh since we want “best” answer

Compsci 100, Fall Big-Oh, O-notation: concepts & caveats l Count how many times “simple” statements execute  In the body of a loop, what matters? (e.g., another loop?)  Assume simple statements take a second, cost a penny,… What’s good, what’s bad about this assumption? Alternatives? l In a recursive method what do we do? Recurrence relations  Like a loop, but easier! (and trickier) to analyze l In real life: cache behavior, memory behavior, swapping behavior, library gotchas, things we don’t understand,…

Compsci 100, Fall Multiplying and adding big-Oh l Suppose we do a linear search then do another one  What is the complexity?  If we do 100 linear searches?  If we do n searches on a vector of size n? l Binary search followed by linear search?  What are big-Oh complexities? Sum?  What about 50 binary searches? What about n searches? l What is the number of elements in the list (1,2,2,3,3,3); (1,2,2,3,3,3,4,4,4,4)?  What about (1,2,2, …, n,n,…,n)?

Compsci 100, Fall Helpful formulae l We always mean base 2 unless otherwise stated  What is log(1024)?  log(xy) log(x y ) log(2 n ) 2 (log n) l Sums (also, use sigma notation when possible)  … + 2 k = 2 k+1 – 1 =  … + n = n(n+1)/2 =  a + ar + ar 2 + … + ar n-1 = a(r n - 1)/(r-1)= log(x) + log(y) y log(x) n log(2) = n 2 (log n) = n k  i=0 2i2i n  i=1 i n-1  i=0 ar i

Compsci 100, Fall Complexity: ideas and measurements l In word-counting program, avoiding rescan of text?  Store and lookup in map, avoid counting more than once  Changed from UT to T + U (or T + U*log U) l In Markov assignment we’ll do something similar  It’s easy to rescan text, store entire text and no more  Avoid rescanning requires storing more information  If we only do something once, should we optimize? l Before coding analysis: what approach will work?  Why is this a good idea?

Compsci 100, Fall Sergey Brin l Simple ideas sometimes can change the world [wikipedia]  Works because of scale l Co-created pagerank (Larry Page), which evaluates links to a page and the importance of those links, based on the importance of the page from which the links come which …!