next up previous contents index
Next: Basics Up: The LEDA User Manual Previous: License Terms and Availability

   
Preface

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, ... In the fall of 1988, we started a project (called LEDA for Library of Efficient Data types and Algorithms) to build a small, but growing library of data types and algorithms in a form which allows them to be used by non-experts. We hope that the system will narrow the gap between algorithms research, teaching, and implementation. The main features of LEDA are:

1.
LEDA provides a sizable collection of data types and algorithms in a form which allows them to be used by non-experts. This collection includes most of the data types and algorithms described in the text books of the area.

2.
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).

3.
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 types.

4.
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, ...

5.
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.

6.
LEDA is implemented by a C++ class library. It can be used with almost any C++ compiler that supports templates.

7.
LEDA is available via www from http://www.mpi-sb.mpg.de/LEDA. The distribution contains all sources, installation instructions, technical reports, and the user manual.

8.
LEDA is not in the public domain, but can be used freely for research and teaching. Information on a commercial license is available from the authors or leda@mpi-sb.mpg.de.

This manual contains the specifications of all data types and algorithms currently available in LEDA. Users should be familiar with the C++ programming language (see [73] or [50]).

The manual is structured as follows: In chapter Basics, which is a prerequisite for all other chapters, we discuss the basic concepts and notations used in LEDA. New users of LEDA should carefully read section User Defined Parameter Types to avoid problems when plugging in self defined parameter types. If you want to get information about the LEDA documentation scheme please read section DocTools. For technical information concerning the installation and usage of LEDA concerning the compilation and linkage of programs users should refer to chapter Technical Information. There's also a section describing the prefixing scheme of LEDA and some remarks about interaction with other Software libraries. The other chapters define the data types and algorithms available in LEDA and give examples of their use. These chapters can be consulted independently from one another.

There are also other sources of information. On the LEDA web page you can get the online html version of this manual. There are preliminary chapters of the forthcoming LEDA book available and there are also documentation reports covering internal topics of LEDA and the implementation of diverse data types. Please have also a look into the directory LEDAROOT/Manual/contrib which contains more comprehensive information about packages like ps_file.

Finally there's a tool called xlman which allows online help and demonstration on all unix platforms having a LATEX package installed.

New in Version 3.8

 
Version Macro
__LEDA__ (defined to 380 in this version)

compare objects
every parameterized data type based on a linearly ordered type, e.g., key (dictionary) or priority (p_queue), now has a constructor taking a "compare object" argument

local types
many data types define local types. Examples are for all item-based data types: dtype<...>::item, for all dictionary types dictionary<K,I>::key_type (= K) and dictionary<K,I>::inf_type (= I), for lists list<E>::value_type (= E)

integers
New implementation by C.Burnikel and J.Ziegler with better performance on many platforms (linux/i386, solaris/sparc, irix/mips). Please refer to the test programs.

graph
node/edge/face_maps are now derived from node/edge/face_array and can be passed (by reference) to graph algorithms taking node/edge/face_array arguments.

random_source
now returns a random long integer of maximal precision

array
now has a dynamic resize operation

standard headers
setting the flag LEDA_STD_HEADERS will cause LEDA to use the new std header files (without ".h"). This can be done by using -DLEDA_STD_HEADERS on the compiler command line or by uncommenting the corresponding definition at the end of <LEDA/system.h>. Note that all libraries have to be compiled with this flag enabled and that old and new header files cannot be used simultaneously.

Please read the CHANGES and FIXES files in the LEDA root directory for details.


next up previous contents index
Next: Basics Up: The LEDA User Manual Previous: License Terms and Availability
LEDA research project
1999-04-23