Download Ch09v2.0

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
The Efficiency of
Algorithms
Chapter 9
Slides by Steve Armstrong
LeTourneau University
Longview, TX
2007, Prentice Hall
Chapter Contents
• Motivation
• Measuring an Algorithm's Efficiency
 Big Oh Notation
• Formalities
• Picturing Efficiency
• The Efficiency of Implementations of the
ADT List
 An Array-Based Implementation
 A Linked Implementation
 Comparing Implementations
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Motivation 1
• Even a simple program can be noticeably
inefficient
• When the 423 is changed to 100,000,000 there
is a significant delay in seeing the result
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Motivation
• We seek the design of a Java class Huge
to represent extremely large integers.
• Consider an inefficient approach to add
numbers that result in a large sum
 View source code
• Even a simple program can be noticeably
inefficient
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Measuring Algorithm Efficiency 6
• Types of complexity
 Space complexity
 Time complexity
• Analysis of algorithms
 The measuring of the complexity of an
algorithm
• Cannot compute actual time for an
algorithm
 We usually measure worst-case time
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Measuring Algorithm Efficiency 9
Fig. 9-1 Three algorithms for computing
1 + 2 + … n for an integer n > 0
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Measuring Algorithm Efficiency
Fig. 9-2 The number of operations required by the
algorithms for Fig 9-1
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Measuring Algorithm Efficiency 10
Fig. 9-3 The number of operations required by the
algorithms in Fig. 9-1 as a function of n
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Big Oh Notation 12
• To say "Algorithm A has a worst-case
time requirement proportional to n"
 We say A is O(n)
 Read "Big Oh of n"
• For the other two algorithms
 Algorithm B is O(n2)
 Algorithm C is O(1)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Big Oh Notation 15
Fig. 9-4 Typical growth-rate functions
evaluated at increasing values of n
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Big Oh Notation 16
Fig. 9-5 The number of digits in an integer n
compared with the integer portion of log10n
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Big Oh Notation
Fig. 9-6 The values of two logarithmic growthrate functions for various ranges of n.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Formalities 17
• Formal definition of Big Oh
An algorithm's time requirement f(n) is of
order at most g(n)
 f(n) = O(g(n))
 For a positive real number c and positive
integer N exist such that
f(n) ≤ c•g(n) for all n ≥ N
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Formalities
Fig. 9-7 An illustration of the definition of Big Oh
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Formalities 21
• The following identities hold for Big Oh
notation:
 O(k f(n)) = O(f(n))
 O(f(n)) + O(g(n)) = O(f(n) + g(n))
 O(f(n)) O(g(n)) = O(f(n) g(n))
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Picturing Efficiency 24
Fig. 9-8 an O(n) algorithm.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Picturing Efficiency 25
Fig. 9-9 An O(n2) algorithm.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Picturing Efficiency 27
Fig. 9-10 Another O(n2) algorithm.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Picturing Efficiency
Fig. 9-11 The effect of doubling the problem size
on an algorithm's time requirement.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Picturing Efficiency 28
Fig. 9-12 The time to process one million items by
algorithms of various orders at the rate of one
million operations per second.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Comments on Efficiency
• A programmer can use O(n2), O(n3) or
O(2n) as long as the problem size is small
• At one million operations per second it
would take 1 second …
 For a problem size of 1000 with O(n2)
 For a problem size of 1000 with O(n3)
 For a problem size of 20 with O(2n)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Efficiency of Implementations of ADT List 29
• Reference AList from Chapter 5
• For array-based implementation
 Add to end of list
 Add to list at given position
O(1)
O(n)
• Reference LList from Chapter 6
• For linked implementation
 Add to end of list
 Add to list at given position
 Retrieving an entry
O(n)
O(n)
O(n)
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Comparing Implementations 34
Fig. 9-13 The time efficiencies of the ADT list operations
for two implementations, expressed in Big Oh notation
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Related documents