CS 161 Data structures by Mehlhorn-SandersCS 161 Data structures by Mehlhorn-SandersCS 161 Data structures by Mehlhorn-SandersCS 161 Data structures by Mehlhorn-Sanders
Algorithms are at the heart of every nontrivial co
...
CS 161 Data structures by Mehlhorn-SandersCS 161 Data structures by Mehlhorn-SandersCS 161 Data structures by Mehlhorn-SandersCS 161 Data structures by Mehlhorn-Sanders
Algorithms are at the heart of every nontrivial computer application. Therefore every
computer scientist and every professional programmer should know about the basic
algorithmic toolbox: structures that allow efficient organization and retrieval of data,
frequently used algorithms, and basic techniques for modeling, understanding, and
solving algorithmic problems.
This book is a concise introduction to this basic toolbox intended for students
and professionals familiar with programming and basic mathematical language. We
have used sections of the book for advanced undergraduate lectures on algorithmics
and as the basis for a beginning graduate level algorithms course. We believe that a
concise yet clear and simple presentation makes the material more accessible as long
as it includes examples, pictures, informal explanations, exercises, and some linkage
to the real world.
Most chapters have the same basic structure. We begin by discussing the problem
adressed as it occurs in a real-life situation. We illustrate the most important applications and then introduce simple solutions as informally as possible and as formally
as necessary to really understand the issues at hand. When moving to more advanced
and optional issues, this approach logically leads to a more mathematical treatment
including theorems and proofs. Advanced sections, that can be skipped on first reading are marked with a star*. Exercises provide additional examples, alternative approaches and opportunities to think about the problems. It is highly recommended
to have a look at the exercises even if there is no time to solve them during the first
reading. In order to be able to concentrate on ideas rather than programming details,
we use pictures, words, and high level pseudocode for explaining our algorithms. A
section with implementation notes links these abstract ideas to clean, efficient implementations in real programming languages such as C++ or Java. [C-sharp]Each ⇐=
chapter ends with a section on further findings that provides a glimpse at the state of
research, generalizations, and advanced solutions.
Algorithmics is a modern and active area of computer science, even at the level of
the basic tool box. We made sure that we present algorithms in a modern way, including explicitly formulated invariants. We also discuss recent trends, such as algorithm
engineering, memory hierarchies, algorithm libraries, and certifying algorithms.
[Show More]