11.07.2015 Views

Data Structures and Algorithm Analysis - Computer Science at ...

Data Structures and Algorithm Analysis - Computer Science at ...

Data Structures and Algorithm Analysis - Computer Science at ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Sec. 3.2 Best, Worst, <strong>and</strong> Average Cases 593.2 Best, Worst, <strong>and</strong> Average CasesConsider the problem of finding the factorial of n. For this problem, there is onlyone input of a given “size” (th<strong>at</strong> is, there is only a single instance for each size ofn). Now consider our largest-value sequential search algorithm of Example 3.1,which always examines every array value. This algorithm works on many inputs ofa given size n. Th<strong>at</strong> is, there are many possible arrays of any given size. However,no m<strong>at</strong>ter wh<strong>at</strong> array of size n th<strong>at</strong> the algorithm looks <strong>at</strong>, its cost will always bethe same in th<strong>at</strong> it always looks <strong>at</strong> every element in the array one time.For some algorithms, different inputs of a given size require different amountsof time. For example, consider the problem of searching an array containing nintegers to find the one with a particular value K (assume th<strong>at</strong> K appears exactlyonce in the array). The sequential search algorithm begins <strong>at</strong> the first position inthe array <strong>and</strong> looks <strong>at</strong> each value in turn until K is found. Once K is found, thealgorithm stops. This is different from the largest-value sequential search algorithmof Example 3.1, which always examines every array value.There is a wide range of possible running times for the sequential search algorithm.The first integer in the array could have value K, <strong>and</strong> so only one integeris examined. In this case the running time is short. This is the best case for thisalgorithm, because it is not possible for sequential search to look <strong>at</strong> less than onevalue. Altern<strong>at</strong>ively, if the last position in the array contains K, then the runningtime is rel<strong>at</strong>ively long, because the algorithm must examine n values. This is theworst case for this algorithm, because sequential search never looks <strong>at</strong> more thann values. If we implement sequential search as a program <strong>and</strong> run it many timeson many different arrays of size n, or search for many different values of K withinthe same array, we expect the algorithm on average to go halfway through the arraybefore finding the value we seek. On average, the algorithm examines about n/2values. We call this the average case for this algorithm.When analyzing an algorithm, should we study the best, worst, or average case?Normally we are not interested in the best case, because this might happen onlyrarely <strong>and</strong> generally is too optimistic for a fair characteriz<strong>at</strong>ion of the algorithm’srunning time. In other words, analysis based on the best case is not likely to berepresent<strong>at</strong>ive of the behavior of the algorithm. However, there are rare instanceswhere a best-case analysis is useful — in particular, when the best case has highprobability of occurring. In Chapter 7 you will see some examples where takingadvantage of the best-case running time for one sorting algorithm makes a secondmore efficient.How about the worst case? The advantage to analyzing the worst case is th<strong>at</strong>you know for certain th<strong>at</strong> the algorithm must perform <strong>at</strong> least th<strong>at</strong> well. This is especiallyimportant for real-time applic<strong>at</strong>ions, such as for the computers th<strong>at</strong> monitoran air traffic control system. Here, it would not be acceptable to use an algorithm

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!