Download presentation
1
Chapter 3: The Efficiency of Algorithms
Invitation to Computer Science, C++ Version, Third Edition
2
Objectives In this chapter, you will learn about:
Attributes of algorithms Measuring efficiency Analysis of algorithms When things get out of hand Invitation to Computer Science, C++ Version, Third Edition
3
Introduction Desirable characteristics in an algorithm Correctness
Ease of understanding Elegance Efficiency Invitation to Computer Science, C++ Version, Third Edition
4
Attributes of Algorithms
Correctness Does the algorithm solve the problem it is designed for? Does the algorithm solve the problem correctly? Ease of understanding How easy is it to understand or alter an algorithm? Important for program maintenance Invitation to Computer Science, C++ Version, Third Edition
5
Attributes of Algorithms (continued)
Elegance How clever or sophisticated is an algorithm? Sometimes elegance and ease of understanding work at cross-purposes Efficiency How much time and/or space does an algorithm require when executed? Perhaps the most important desirable attribute Invitation to Computer Science, C++ Version, Third Edition
6
Attributes of Algorithms (continued)
Example: …+100=? sum=0 x=1 While x is less than or equal to 100 do step 4 and 5 sum=sum+x x=x+1 Print the value of x Invitation to Computer Science, C++ Version, Third Edition
7
Attributes of Algorithms (continued)
Example: …+100=? 1+100=101 2+99=101 … 50+51=101 (100/2)*101=5050 Formula: Sum=(n+1)*n/2 Invitation to Computer Science, C++ Version, Third Edition
8
Measuring Efficiency Analysis of algorithms
Study of the efficiency of various algorithms Efficiency measured as function relating size of input to time or space used For one input size, best case, worst case, and average case behavior must be considered The notation captures the order of magnitude of the efficiency function Invitation to Computer Science, C++ Version, Third Edition
9
Sequential Search Search for NAME among a list of n names
Start at the beginning and compare NAME to each entry until a match is found Invitation to Computer Science, C++ Version, Third Edition
10
Sequential Search Algorithm
Figure 3.1 Sequential Search Algorithm Invitation to Computer Science, C++ Version, Third Edition
11
Sequential Search (continued)
Comparison of the NAME being searched for against a name in the list Central unit of work Used for efficiency analysis For lists with n entries: Best case NAME is the first name in the list 1 comparison (1) Invitation to Computer Science, C++ Version, Third Edition
12
Sequential Search (continued)
For lists with n entries: Worst case NAME is the last name in the list NAME is not in the list n comparisons (n) Average case Roughly n/2 comparisons Invitation to Computer Science, C++ Version, Third Edition
13
Sequential Search (continued)
Space efficiency Uses essentially no more memory storage than original input requires Very space-efficient Invitation to Computer Science, C++ Version, Third Edition
14
Order of Magnitude: Order n
As n grows large, order of magnitude dominates running time, minimizing effect of coefficients and lower-order terms All functions that have a linear shape are considered equivalent Order of magnitude n Written (n) Functions vary as a constant times n e.x., n, 2n, 10n and ½n have the same order (n) Invitation to Computer Science, C++ Version, Third Edition
15
Work = cn for Various Values of c
Figure 3.4 Work = cn for Various Values of c Invitation to Computer Science, C++ Version, Third Edition
16
Practice Problem n Best Case Worst Case Average Case 10 1 5 50 25 100
1,000 500 10,000 5,000 100,000 50,000 Invitation to Computer Science, C++ Version, Third Edition
17
Selection Sort Sorting Selection sort algorithm
Take a sequence of n values and rearrange them into order Selection sort algorithm Repeatedly searches for the largest value in a section of the data Moves that value into its correct position in a sorted section of the list Uses the Find Largest algorithm Invitation to Computer Science, C++ Version, Third Edition
18
Selection Sort Algorithm
Figure 3.6 Selection Sort Algorithm Invitation to Computer Science, C++ Version, Third Edition
19
Unsorted section | Sorted section
Loop#3 3. Not empty 4. 5, 3, 2| 7, 8 5. 2, 3, 5| 7, 8 6. 2, 3| 5, 7, 8 Loop#4 3. Not empty 4. 2, 3| 5, 7, 8 5. 2, 3| 5, 7, 8 6. 2| 3, 5, 7, 8 Loop#5 Not empty 4. 2| 3, 5, 7, 8 5. 2| 3, 5, 7, 8 6. |2, 3, 5, 7, 8 Loop#6 3. Empty End loop N=5 List is 5, 7, 2, 8, 3 5, 7, 2, 8, 3| Loop#1 3. Not empty 5, 7, 2, 3, 8| 5, 7, 2, 3| 8 Loop#2 3. Not empty 4. 5, 7, 2, 3| 8 5. 5, 3, 2, 7| 8 6. 5, 3, 2| 7, 8 Unsorted section | Sorted section Invitation to Computer Science, C++ Version, Third Edition
20
Selection Sort (continued)
Count comparisons of largest so far against other values Find Largest, given m values, does m-1 comparisons Selection sort calls Find Largest n times, Each time with a smaller list of values Cost = (n-1) + (n-2) + … = n(n-1)/2 Invitation to Computer Science, C++ Version, Third Edition
21
Selection Sort (continued)
Time efficiency Comparisons: n(n-1)/2 Exchanges: n (swapping largest into place) Overall: (n2), best and worst cases Space efficiency Space for the input sequence, plus a constant number of local variables Invitation to Computer Science, C++ Version, Third Edition
22
Selection Sort (continued)
X Y 3 5 X Y 5 5 X = Y X Y 5 5 Y = X Invitation to Computer Science, C++ Version, Third Edition
23
Selection Sort (continued)
X Y 3 3 5 T = X -- Copy X to T T X Y 5 5 3 X = Y -- Copy Y to X T X Y 5 3 3 Y = T -- Copy T to X Invitation to Computer Science, C++ Version, Third Edition
24
Order of Magnitude – Order n2
All functions with highest-order term cn2 have similar shape An algorithm that does cn2 work for any constant c is order of magnitude n2, or (n2) Invitation to Computer Science, C++ Version, Third Edition
25
Order of Magnitude – Order n2 (continued)
Anything that is (n2) will eventually have larger values than anything that is (n), no matter what the constants are An algorithm that runs in time (n) will outperform one that runs in (n2) e.x. (½)n n, 5n2 + 1 and 10 n2 run in the same (n2) Invitation to Computer Science, C++ Version, Third Edition
26
Work = cn2 for Various Values of c
Figure 3.10 Work = cn2 for Various Values of c Invitation to Computer Science, C++ Version, Third Edition
27
Figure 3.11 A Comparison of n and n2
Invitation to Computer Science, C++ Version, Third Edition
28
Figure 3.11 A Comparison of n and n2
Invitation to Computer Science, C++ Version, Third Edition
29
Analysis of Algorithms
Multiple algorithms for one task may be compared for efficiency and other desirable attributes Data cleanup problem Search problem Pattern matching Invitation to Computer Science, C++ Version, Third Edition
30
Data Cleanup Algorithms
Given a collection of numbers, find and remove all zeros Possible algorithms Shuffle-left Copy-over Converging-pointers Invitation to Computer Science, C++ Version, Third Edition
31
The Shuffle-Left Algorithm
Scan list from left to right When a zero is found, shift all values to its right one slot to the left Invitation to Computer Science, C++ Version, Third Edition
32
The Shuffle-Left Algorithm for Data Cleanup
Figure 3.14 The Shuffle-Left Algorithm for Data Cleanup Invitation to Computer Science, C++ Version, Third Edition
33
An Example Legit=5 Legit=4 24 36 45 24 45 36 24 45 36 Legit=4 24 36 45
24 36 45 24 45 36 24 45 36 Legit=4 24 36 45 24 45 36 Legit=3 24 45 36 24 45 36 An Example Invitation to Computer Science, C++ Version, Third Edition
34
The Shuffle-Left Algorithm (continued)
Time efficiency Count examinations of list values and shifts Best case No shifts, n examinations (n) Worst case Shift at each pass, n passes n2 shifts plus n examinations (n2) Invitation to Computer Science, C++ Version, Third Edition
35
The Shuffle-Left Algorithm (continued)
Space efficiency n slots for n values, plus a few local variables (n) Invitation to Computer Science, C++ Version, Third Edition
36
The Copy-Over Algorithm
Use a second list Copy over each nonzero element in turn Time efficiency Count examinations and copies Best case All zeros n examinations and 0 copies (n) Invitation to Computer Science, C++ Version, Third Edition
37
The Copy-Over Algorithm for Data Cleanup
Figure 3.15 The Copy-Over Algorithm for Data Cleanup Invitation to Computer Science, C++ Version, Third Edition
38
The Copy-Over Algorithm (continued)
Time efficiency (continued) Worst case No zeros n examinations and n copies (n) Space efficiency 2n slots for n values, plus a few extraneous variables Invitation to Computer Science, C++ Version, Third Edition
39
The Copy-Over Algorithm (continued)
Time/space tradeoff Algorithms that solve the same problem offer a tradeoff: One algorithm uses more time and less memory Its alternative uses less time and more memory Invitation to Computer Science, C++ Version, Third Edition
40
The Converging-Pointers Algorithm
Swap zero values from left with values from right until pointers converge in the middle Time efficiency Count examinations and swaps Best case n examinations, no swaps (n) Invitation to Computer Science, C++ Version, Third Edition
41
The Converging-Pointers Algorithm for Data Cleanup
Figure 3.16 The Converging-Pointers Algorithm for Data Cleanup Invitation to Computer Science, C++ Version, Third Edition
42
The Converging-Pointers Algorithm (continued)
Time efficiency (continued) Worst case n examinations, n swaps (n) Space efficiency n slots for the values, plus a few extra variables Invitation to Computer Science, C++ Version, Third Edition
43
Analysis of Three Data Cleanup Algorithms
Figure 3.17 Analysis of Three Data Cleanup Algorithms Invitation to Computer Science, C++ Version, Third Edition
44
Binary Search Given ordered data,
Search for NAME by comparing to middle element If not a match, restrict search to either lower or upper half only Each pass eliminates half the data Invitation to Computer Science, C++ Version, Third Edition
45
Binary Search Algorithm (list must be sorted)
Figure 3.18 Binary Search Algorithm (list must be sorted) Invitation to Computer Science, C++ Version, Third Edition
46
Binary Search (continued)
Efficiency Best case 1 comparison (1) Worst case lg n comparisons lg n: The number of times n may be divided by two before reaching 1 (lg n) Invitation to Computer Science, C++ Version, Third Edition
47
Binary Search (continued)
Tradeoff Sequential search Slower, but works on unordered data Binary search Faster (much faster), but data must be sorted first Invitation to Computer Science, C++ Version, Third Edition
48
A Comparison of n and lg n
Figure 3.21 A Comparison of n and lg n Invitation to Computer Science, C++ Version, Third Edition
49
Pattern Matching Analysis involves two measures of input size
m: length of pattern string n: length of text string Unit of work Comparison of a pattern character with a text character Invitation to Computer Science, C++ Version, Third Edition
50
Pattern Matching (continued)
Efficiency Best case Pattern does not match at all n - m + 1 comparisons (n) Worst case Pattern almost matches at each point (m -1)(n - m + 1) comparisons (m x n) Invitation to Computer Science, C++ Version, Third Edition
51
Order-of-Magnitude Time Efficiency Summary
Figure 3.22 Order-of-Magnitude Time Efficiency Summary Invitation to Computer Science, C++ Version, Third Edition
52
When Things Get Out of Hand
Polynomially bound algorithms Work done is no worse than a constant multiple of n2 Intractable algorithms Run in worse than polynomial time Examples Hamiltonian circuit Bin-packing Invitation to Computer Science, C++ Version, Third Edition
53
When Things Get Out of Hand (continued)
Exponential algorithm (2n) More work than any polynomial in n Approximation algorithms Run in polynomial time but do not give optimal solutions Invitation to Computer Science, C++ Version, Third Edition
54
Comparisons of lg n, n, n2 , and 2n
Figure 3.25 Comparisons of lg n, n, n2 , and 2n Invitation to Computer Science, C++ Version, Third Edition
55
A Comparison of Four Orders of Magnitude
Figure 3.27 A Comparison of Four Orders of Magnitude Invitation to Computer Science, C++ Version, Third Edition
56
Summary of Level 1 Level 1 (Chapters 2 and 3) explored algorithms
Pseudocode Sequential, conditional, and iterative operations Algorithmic solutions to three practical problems Chapter 3 Desirable properties for algorithms Time and space efficiencies of a number of algorithms Invitation to Computer Science, C++ Version, Third Edition
57
Summary Desirable attributes in algorithms:
Correctness Ease of understanding Elegance Efficiency Efficiency – an algorithm’s careful use of resources – is extremely important Invitation to Computer Science, C++ Version, Third Edition
58
Summary To compare the efficiency of two algorithms that do the same task Consider the number of steps each algorithm requires Efficiency focuses on order of magnitude Invitation to Computer Science, C++ Version, Third Edition
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.