Summary: | This is a central topic in any computer science curriculum. To distinguish this textbook from others, the author considers probabilistic methods as being fundamental for the construction of simple and efficient algorithms, and in each chapter at least one problem is solved using a randomized algorithm. Data structures are discussed to the extent needed for the implementation of the algorithms. The specific algorithms examined were chosen because of their wide field of application. This book originates from lectures for undergraduate and graduate students. The text assumes experience in programming algorithms, especially with elementary data structures such as chained lists, queues, and stacks. It also assumes familiarity with mathematical methods, although the author summarizes some basic notations and results from probability theory and related mathematical terminology in the appendices. He includes many examples to explain the individual steps of the algorithms, and he concludes each chapter with numerous exercises. |