Project overview

Goblin is a full-featured tool chain for handling graphs. The project provides code from the following areas:

While all algorithms are implemented in a C++ class library (libgoblin.a), the editor code and partially the file I/O code are written in the Tcl/Tk scripting language and use a Tcl wrapper of the C++ library.

Users can choose from the following interfaces:

Intended audience

Any general software on graph optimization can be considered a loose collection of solvers for more or less related combinatorial problems. Other than for LP solvers, the interface is ample and often requires to choose a particular optimization method which is adequate for a certain class of graph instances. Many applications require a programming interface instead of a graphical user interface. In that sense, Goblin is expert software.

Originally, the library has been designed to visualize graph algorithms. While it takes special efforts to produce good running examples and snap shots, the final output can be interpreted by every undergraduate student who has been instructed with the algorithm's key features. The GUI has been prepared to fiddle about with algorithms.

Of course, the library is also suited for practical computations. A general statement on the performance is difficult: Some solvers have been added only for sake of completeness (like max-cut), others can solve large-scale instances (like min-cost flow).


GOBLIN is open source software and licenced by the GNU Lesser Public License (LGPL). That is, GOBLIN may be downloaded, compiled and used for scientific, educational and other purposes free of charge. For details, in particular the statements about redistribution and changes of the source code, observe the LGPL document which is attached to the package.

Project state

The project state permanently toggles between stable and beta: There are frequent functional extensions, and these sometimes require revisions of the internal data structures and even the C++ programming interface.

Here are some more detailed remarks on the development state:

About this document

This document serves as a reference guide for the C++ core library and the Tcl programming interface. For the time being, it describes the API formed by the graph base classes, but skips a lot of internal features such as problem reductions and the LP wrapper. So it is not as comprehensive as the existing latex manual yet, but the latter won't be maintained regularly until this doxygen reference has become stable.

If you are just reading this online (as a part of the project web presentation), all statements concern the tip of development. Assuming that you will work with a specific source code distribution, note that all such packages admit a make html build rule to generate the matching reference manual.

Two levels of reading are possible: The introductory pages present mathematical defintions, high-level descriptions of algorithms and some instructive examples. In order to view the according doxygen code comments, follow the [See API] links.

[See manual page index]