Introduction to Data Structures

Slides:



Advertisements
Similar presentations
Growth-rate Functions
Advertisements

12-Apr-15 Analysis of Algorithms. 2 Time and space To analyze an algorithm means: developing a formula for predicting how fast an algorithm is, based.
Algorithm Analysis.
Lecture: Algorithmic complexity
90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 2: Basics Data Structures.
Chapter 1. The Phases of Software Development. Data Structure 2 Chapter outline  Objectives  Use Javadoc to write a method’s complete specification.
Razdan with contribution from others 1 Algorithm Analysis What is the Big ‘O Bout? Anshuman Razdan Div of Computing.
the fourth iteration of this loop is shown here
Introduction to Analysis of Algorithms
Efficiency of Algorithms
Complexity Analysis (Part I)
CS107 Introduction to Computer Science
Cmpt-225 Algorithm Efficiency.
CS 206 Introduction to Computer Science II 09 / 05 / 2008 Instructor: Michael Eckmann.
CS 280 Data Structures Professor John Peterson. Big O Notation We use a mathematical notation called “Big O” to talk about the performance of an algorithm.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Chapter 23 Algorithm Efficiency.
Analysis of Algorithm.
Elementary Data Structures and Algorithms
Algorithm Analysis (Big O)
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 23 Algorithm Efficiency.
Chapter 2.6 Comparison of Algorithms modified from Clifford A. Shaffer and George Bebis.
Week 2 CS 361: Advanced Data Structures and Algorithms
SEARCHING, SORTING, AND ASYMPTOTIC COMPLEXITY Lecture 12 CS2110 – Fall 2009.
1 Chapter 24 Developing Efficient Algorithms. 2 Executing Time Suppose two algorithms perform the same task such as search (linear search vs. binary search)
{ CS203 Lecture 7 John Hurley Cal State LA. 2 Execution Time Suppose two algorithms perform the same task such as search (linear search vs. binary search)
Data Structures and Algorithms Lecture 5 and 6 Instructor: Quratulain Date: 15 th and 18 th September, 2009 Faculty of Computer Science, IBA.
Analysis of Algorithms
Program Efficiency & Complexity Analysis. Algorithm Review An algorithm is a definite procedure for solving a problem in finite number of steps Algorithm.
Java Methods Big-O Analysis of Algorithms Object-Oriented Programming
CS 2601 Runtime Analysis Big O, Θ, some simple sums. (see section 1.2 for motivation) Notes, examples and code adapted from Data Structures and Other Objects.
M180: Data Structures & Algorithms in Java Algorithm Analysis Arab Open University 1.
Chapter 7 Analysis of Algorithms © 2006 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.
CompSci Analyzing Algorithms  Consider three solutions to SortByFreqs, also code used in Anagram assignment  Sort, then scan looking for changes.
Algorithm Analysis (Big O)
Searching Topics Sequential Search Binary Search.
Algorithm Analysis with Big Oh ©Rick Mercer. Two Searching Algorithms  Objectives  Analyze the efficiency of algorithms  Analyze two classic algorithms.
CSC 108H: Introduction to Computer Programming Summer 2011 Marek Janicki.
Data Structures I (CPCS-204) Week # 2: Algorithm Analysis tools Dr. Omar Batarfi Dr. Yahya Dahab Dr. Imtiaz Khan.
Algorithm Analysis 1.
Complexity Analysis (Part I)
Introduction to Analysis of Algorithms
Analysis of Algorithms
GC 211:Data Structures Week 2: Algorithm Analysis Tools
Computer Science 112 Fundamentals of Programming II
Introduction to Algorithms
GC 211:Data Structures Algorithm Analysis Tools
Complexity In examining algorithm efficiency we must understand the idea of complexity Space complexity Time Complexity.
CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis Catie Baker Spring 2015.
Introduction to Algorithms
Course Description Algorithms are: Recipes for solving problems.
GC 211:Data Structures Algorithm Analysis Tools
What is CS 253 about? Contrary to the wide spread belief that the #1 job of computers is to perform calculations (which is why the are called “computers”),
CSC 205 Java Programming II
CS 201 Fundamental Structures of Computer Science
Analysis of Algorithms
Analyzing an Algorithm Computing the Order of Magnitude Big O Notation
CSE 2010: Algorithms and Data Structures Algorithms
Searching, Sorting, and Asymptotic Complexity
Searching, Sorting, and Asymptotic Complexity
CSE 373: Data Structures & Algorithms
CSE 373 Data Structures and Algorithms
Data Structures Introduction
CS210- Lecture 2 Jun 2, 2005 Announcements Questions
Course Description Algorithms are: Recipes for solving problems.
Complexity Analysis (Part I)
Algorithms and data structures: basic definitions
Complexity Analysis (Part I)
Algorithm Analysis How can we demonstrate that one algorithm is superior to another without being misled by any of the following problems: Special cases.
Presentation transcript:

Introduction to Data Structures Lecture 2: Basics Lecture 2: Basics

Today’s Topics Intro to Running-Time Analysis Summary of Object-Oriented Programming concepts (see slides on schedule). Lecture 2: Basics

Running Time Analysis Reasoning about an algorithm’s speed “Does it work fast enough for my needs?” “How much longer when the input gets larger?” “Which algorithm is fastest?” Lecture 2: Basics

Elapsed Time vs. No. of Operations Q: Why not just use a stopwatch? A: Elapsed time depends on independent factors Number of operations carried out is the same for two runs of the same code with the same arguments -- no matter what the environment might be Lecture 2: Basics

Stair-Counting Problem Two people at the top of the Eiffel Tower Three methods to count the steps X walks down, keeping a tally X walks down, but Y keeps the tally Z provides the answer immediately (2689!) Lecture 2: Basics

Stair-Counting Problem Choosing the operations to count Actual time? Varies due to several factors not related to the efficiency of the algorithm Each time X walk up or down one step = 1 operation Each time X or Y marks a symbol on the paper = 1 operation Lecture 2: Basics

Stair-Counting Problem How many operations for each of the 3 methods? Method 1: 2689 steps down 2689 steps up 2689 marks on the paper 8067 total operations Lecture 2: Basics

Stair-Counting Problem Method 2: 3,616,705 steps down (1+2+…+2689) 3,616,705 steps up 2689 marks on the paper 7,236,099 total operations Lecture 2: Basics

Stair-Counting Problem Method 3: 0 steps down 0 steps up 4 marks on the paper (one for each digit) 4 total operations Lecture 2: Basics

Analyzing Programs Count operations, not time operations is “small step” e.g., a single program statement; an arithmetic operation; assignment to a variable; etc. No. of operations depends on the input “the taller the tower, the larger the number of operations” Lecture 2: Basics

Analyzing Programs When time analysis depends on the input, time (in operations) can be expressed by a formula: Method 1: Method 2: Method 3: no. of digits in number n Lecture 2: Basics

Big-O Notation The magnitude of the number of operations Less precise than the exact number More useful for comparing two algorithms as input grows larger Rough idea: “term in the formula which grows most quickly” Lecture 2: Basics

Big-O Notation Quadratic Time largest term no more than “big-O of n-squared” doubling the input increases the number of operations approximately 4 times or less e.g. Method 2(100) = 10,200 Method 2(200) = 40,400 Lecture 2: Basics

Big-O Notation Linear Time largest term no more than “big-O of n” doubling the input increases the number of operations approximately 2 times or less e.g. Method 1(100) = 300 Method 1(200) = 600 Lecture 2: Basics

Big-O Notation Logarithmic Time largest term no more than “big-O of log n” doubling the input increases the running time by a fixed number of operations e.g. Method 3(100) = 3 Method 3(1000) = 4 Lecture 2: Basics

Summary Method 1: Method 2: Method 3: Run-time expressed with big-O is the order of the algorithm Constants ignored: Lecture 2: Basics

Summary Order allows us to focus on the algorithm and not on the speed of the processor Quadratic algorithms can be impractically slow Lecture 2: Basics

Comparison Lecture 2: Basics

Time Analysis of Java Methods Example: search method (p. 26) public static boolean search(double[] data, double target) { int i; for (i=0; i<data.length; i++) { if (data[i] == target) return true; } return false; } Lecture 2: Basics

Time Analysis of Java Methods Operations: assignment, arithmetic operators, tests Loop start: two operations: initialization assignment, end test Loop body: n times if input not found; assume constant k operations Return: one operation Total: Lecture 2: Basics

Time Analysis of Java Methods A loop that does a fixed number of operations n times is O(n) Lecture 2: Basics

Time Analysis of Java Methods worst-case: maximum number of operations for inputs of given size average-case: average number of operations for inputs of given size best-case: fewest number of operations for inputs of given size any-case: no cases to consider Pin the case down and think about n growing large – never small. Lecture 2: Basics

Object-Oriented Overview Slides from Main’s Lecture Lecture 2: Basics