The LEDA Platform of Combinatorial and Geometric Computing
Max-Plack-Institut für Informatik,
One of the major differences between combinatorial computing
and other areas of computing such as statistics, numerical
analysis and linear programming is the use of complex data types.
Whilst the built-in types, such as integers, reals, vectors, and matrices,
usually suffice in the other areas, combinatorial computing relies heavily
on types like stacks, queues, dictionaries, sequences, sorted sequences,
priority queues, graphs, points, segments, and so on.
In the fall of 1988, we started a project (called LEDA for Library of
Efficient Data types and Algorithms) to build a library
of data types and algorithms in a form which allows them to be used by
non-experts. In this talk we report about the status of the project. The main
features of LEDA are:
LEDA provides a sizable collection of data types and algorithms in a form
which allows them to be used by non-experts. In the current version, this
collection includes most of the data types and algorithms described in the
text books of the area.
LEDA gives a precise and readable specification for each of the data types
and algorithms mentioned above. The specifications are short (typically,
not more than a page), general (so as to allow several implementations),
and abstract (so as to hide all details of the implementation).
For many efficient data structures access by position is important. In
LEDA, we use an item concept to cast positions into an abstract form. We
mention that most of the specifications given in the LEDA manual use this
concept, i.e., the concept is adequate for the description of many data
LEDA contains efficient implementations for each of the data types, e.g.,
Fibonacci heaps for priority queues, skip lists and dynamic perfect
hashing for dictionaries, ...
LEDA contains a comfortable data type graph. It offers the standard
iterations such as ``for all nodes v of a graph G do'' or ``for all
neighbors w of v do'', it allows to add and delete vertices and edges
and it offers arrays and matrices indexed by nodes and edges,...
The data type graph allows to write programs for graph problems in a
form close to the typical text book presentation.
The geometric algorithms in LEDA are designed to handle all degenerate
cases. They use exact arithmetic to overcome the unreliability of floating
LEDA is implemented by a C++ class library. It can be used with allmost
any C++ compiler (cfront, g++, bcc, ztc).
LEDA is available by anonymous ftp from ftp.cs.uni-sb.de
the Distribution contains all sources, installation instructions, a
technical report, and the LEDA user manual.
LEDA is not in the public domain, but can be used freely for research
Conference Home Page