Notes for the Course of Algorithms

Deal with how to design good algorithms, which is about the mathematical theory behind the design of good programs.

Publication date: 31 Dec 1998

ISBN-10: n/a

ISBN-13: n/a

Paperback: n/a

Views: 226,123

Type: N/A

Publisher: n/a

Post time: 18 Feb 2007 07:20:34

Notes for the Course of Algorithms

Deal with how to design good algorithms, which is about the mathematical theory behind the design of good programs.
Tag(s): Algorithms and Data Structures
Publication date: 31 Dec 1998
ISBN-10: n/a
ISBN-13: n/a
Paperback: n/a
Views: 226,123
Document Type: N/A
Publisher: n/a
Post time: 18 Feb 2007 07:20:34
Terms and Conditions:

Dave Mount wrote:Copyright, David M. Mount, 1998, Dept. of Computer Science, University of Maryland, College Park, MD, 20742. These lecture notes were prepared by David Mount for the course CMSC 251, Algorithms, at the University of Maryland, College Park. Permission to use, copy, modify, and distribute these notes for educational purposes and without fee is hereby granted, provided that this copyright notice appear in all copies.

Document Summary:

What is algorithm design? An algorithm was defined to be any well-defined computational procedure that takes some values as input and produces some values as output. Like a cooking recipe, an algorithm provides a step-by-step method for solving a computational problem.

A good understanding of algorithms is essential for a good understanding of the most basic element of computer science: programming. Unlike a program, an algorithm is a mathematical entity, which is independent of a specific programming language, machine, or compiler. Thus, in some sense, algorithm design is all about the mathematical theory behind the design of good programs.

One of the elements that this course focuses on is to try to study algorithms as pure mathematical objects, and so ignore issues such as programming language, machine, and operating system. This has the advantage of clearing away the messy details that affect implementation. But these details may be very important.

Document Organization:

The notes will consist of three major sections. The first is on the mathematical tools necessary for the analysis of algorithms. This will focus on asymptotics, summations, recurrences. The second element will deal with one particularly important algorithmic problem: sorting a list of numbers. The notes will show a number of different strategies for sorting, and use this problem as a case study in different techniques for designing and analyzing algorithms. The final third of the course will deal with a collection of various algorithmic problems and solution techniques. Finally the notes will close with a very brief introduction to the theory of NP-completeness. NP-complete problem are those for which no efficient algorithms are known, but no one knows for sure whether efficient solutions might exist.