2. Whom does this tutorial address?

Despite more than 5000 users registered worldwide there has been - except for an introduction in Japanese ([4]) - no tutorial for LEDA up to now. Such an introductory work was demanded by the users again and again. Indeed there is a 1000-sided Compendium (LEDA, A Platform for Combinatorial and Geometric Computing) of the creators of LEDA itself; this book, however, is not aimed at beginners but describes the structure of the system in its entirety in detail and therefore rather is suitable for readers with sound knowledge in algorithm design and implementation. In particular, there is no German tutorial on this topic although there are many users just in that country.

Until now, the use of LEDA had to be learned on the basis of the Online Manual. This manual lists the individual C++ classes LEDA consists of one after another on single manual pages. This listing is organized more or less according to algorithmic topics; for the inexperienced implementer of algorithms, however, it can be surveyed only with difficulty because of the multitude of the classes .

One of the most frequent questions posed again and again was: “When do I have to use which class and when not?”. To give support here, the persons responsible for LEDA created the LEDA Guide which gives tips and example programs for the use of the individual classes. But also this guide proved to be insufficient for a large part of the first users, because in general, even the experienced, practice-proof programmer has only average experience in dealing with complex algorithms and the data structures underlying them.

Target audience and prerequisites for understanding

This tutorial tries to close this gap now. It addresses practical[1] programmers with average experience in design and implementation of efficient algorithms. In general, these programmers want to burden themselves with as little theory as possible to reach presentable programs as fast as possible.

LEDA implements all algorithms and data structures of a classic book on algorithms. Indispensable for the successful use of the appropriate C++ classes of LEDA is a fundamental understanding of what the algorithm does at all, and how the data structure structures the information passed to it, and which queries can be submitted to it. Therefore, these algorithms and data structures are all introduced one after another. Details of the implementation, correctness proofs and runtime analyses are left out. The reader shall understand as fast as possible what the respective data type of LEDA does, but not how it manages this internally.

Therefore, this tutorial can also be understood as a way through a classic lecture on algorithms and data structures, in which the design and implementation are omitted and only the use is shown. So the reader learns not only the problem-oriented use of the LEDA types but also can refresh his knowledge in applied algorithmics.

A precondition for the understanding of the tutorial is a basic knowledge of the programming language C++ as it is imparted in an introductory work on this topic (for example [12]). The program examples presented make use of the various language possibilities of the language to C++ only very conservatively.

Basic knowledge in algorithmics is not a precondition but nevertheless very useful. The reading of a standard book like Introduction to Algorithms is always a profit!

[1] Here the author would have liked best to write “non-academic”.