12.07.2015 Views

A Practical Introduction to Data Structures and Algorithm Analysis

A Practical Introduction to Data Structures and Algorithm Analysis

A Practical Introduction to Data Structures and Algorithm Analysis

SHOW MORE
SHOW LESS
  • No tags were found...

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

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

Sec. 1.5 Further Reading 194. It must be composed of a finite number of steps. If the description for thealgorithm were made up of an infinite number of steps, we could never hope<strong>to</strong> write it down, nor implement it as a computer program. Most languages fordescribing algorithms (including English <strong>and</strong> “pseudocode”) provide someway <strong>to</strong> perform repeated actions, known as iteration. Examples of iterationin programming languages include the while <strong>and</strong> for loop constructs ofJava. Iteration allows for short descriptions, with the number of steps actuallyperformed controlled by the input.5. It must terminate. In other words, it may not go in<strong>to</strong> an infinite loop.Programs: We often think of a computer program as an instance, or concreterepresentation, of an algorithm in some programming language. In this book,nearly all of the algorithms are presented in terms of programs, or parts of programs.Naturally, there are many programs that are instances of the same algorithm,because any modern computer programming language can be used <strong>to</strong> implementthe same collection of algorithms (although some programming languagescan make life easier for the programmer). To simplify presentation throughoutthe remainder of the text, I often use the terms “algorithm” <strong>and</strong> “program” interchangeably,despite the fact that they are really separate concepts. By definition,an algorithm must provide sufficient detail that it can be converted in<strong>to</strong> a programwhen needed.The requirement that an algorithm must terminate means that not all computerprograms meet the technical definition of an algorithm. Your operating system isone such program. However, you can think of the various tasks for an operating system(each with associated inputs <strong>and</strong> outputs) as individual problems, each solvedby specific algorithms implemented by a part of the operating system program, <strong>and</strong>each one of which terminates once its output is produced.To summarize: A problem is a function or a mapping of inputs <strong>to</strong> outputs.An algorithm is a recipe for solving a problem whose steps are concrete <strong>and</strong> unambiguous.The algorithm must be correct, of finite length, <strong>and</strong> must terminate forall inputs. A program is an instantiation of an algorithm in a computer programminglanguage.1.5 Further ReadingThe first authoritative work on data structures <strong>and</strong> algorithms was the series ofbooks The Art of Computer Programming by Donald E. Knuth, with Volumes 1<strong>and</strong> 3 being most relevant <strong>to</strong> the study of data structures [Knu97, Knu98]. A modernencyclopedic approach <strong>to</strong> data structures <strong>and</strong> algorithms that should be easy

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

Saved successfully!

Ooh no, something went wrong!