GOBLIN: A Graph Object Library for Network Programming Problems




Content




What is GOBLIN?

GOBLIN is a C++ class library focussed on graph optimization and network programming problems. It deals with all of the standard graph optimization problems discussed by textbooks and in courses on combinatorial optimization.

This software package also consists of a shell interpreter which extends the well-known Tcl/Tk language to graph objects and a graph browser and editor tool. Executable solvers are available for practical optimization problems. The graph browser applies for teaching and scientific documentation purposes.

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.

Read the GNU Lesser Public License now

The GOBLIN library is outcome of the research project Balanced Network Flows which investigates a network flow model for capacitated matching problems: Efficient matching algorithms often use ordinary flows as a startup solution. It hence was straight forward to design a library which deals with graph matching and also with network flows problems, and which allows to combine the respective problem solving routines to a powerful matching problem solver.

Today, GOBLIN provides strongly polynomial algorithms for the following graph optimization problems:

The library also includes methods for NP-hard problems, namely TSP, ATSP, stable sets and graph colouring.

GOBLIN was written and is maintained by Christian Fremuth-Paeger, co-authored by Bernhard Schmidt. Further contributions are due to Markus Schwank and Birk Eisermann.




GOBLIN Features





The GOBLET Graph Editor




Build and Installation

The most recent GOBLIN builds can be downloaded as C++ source code. The included Makefile controls the library build for every UNIX like platform providing a C++ compiler. It is set up for Linux and gcc but the adaptions to proprietary C++ compilers are simple.

MS Windows users have two additional options: If an Cygwin environment is already installed or at least, if you are willing to install Cygwin, the binary distribution goblin.*.cygwin.tbz2 is the right choice. If you are a typical MS Office user, the setup_goblin.*.exe provides a minimal Cygwin environment, GOBLIN binaries, shortcuts and an uninstall procedure. Do not try to run the automatic Windows setup with a concurrent Cygwin installation!

The reference manual gives some more installation hints and remarks about known limitations.



UNIX installation using the sources

Supposed, you want to install the GOBLIN Release 2.7 on your UNIX machine, and Tcl/Tk headers and POSIX threads are installed correctly. The first step to generate the library, the shell and/or problem solvers is to unpack the goblin.2.7.tgz file by typing

tar xfz goblin.2.7.tgz

Then change to the extracted GOBLIN root directory. Edit the Makefile if necessary (and some changes are necessary for platforms other than Linux). Build the binaries by typing

make

This results in the shell interpreter gosh. You can test your personal installation by starting the ./goblet graph browser and apply is the test problems in the samples folder. If everything works fine, the final system installation is done by the console command

make install

Note that the system installation can be performed by super-users only.

Building only the Library and Problem Solvers

If some libraries are missing in your environment and if you only want to use the C++ API, link the GOBLIN core library by typing

make goblin

If you want to use GOBLIN executables rather than the API, say the matching solver, then

make exe pr=optmatch

creates the executable optmatch. The complete list of executable solvers can be obtained from the folder main_src and the reference manual.



Using Binary Distributions

This is currently supported for Cygwin only. Copy the goblin.*.bz2 file to the Cygwin (not Windows) root directory /. Start a bash, change to the root directory and unpack the sources by

tar xfj goblin.*.tbz2

sh goblin_install.sh

As a final step, all GOBLIN related files in the root directory may be deleted.



GOBLIN Setup for MS WINDOWS

Make sure that no concurrent Cygwin installation is present. Then just execute the setup_goblin.*.exe file. Shortcuts to the graph browser will be added to the desktop and the start menu.



Remarks

  • Source code packages are configured for gcc and Tcl/Tk 8.3.
  • Cygwin Binaries run with Tcl/Tk 8.4.
  • To compile GOBLIN with Tcl/Tk 8.4 headers, a special define in the Makefile must activated.
  • In the testing environment, GOBLET can only be started from the GOBLIN root directory.
  • On platforms other than Linux and Cygwin, the makefile must be configured manually before performing make install.
  • The source code compiles (at least) with gcc 3.4.1 and earlier versions.





    The GOBLET Graph Browser




    GOBLIN Documentation

    The package comes with a comprehensive LATEX reference manual which describes:

    Please, if you read this document, and you find any mistakes or omissions, send us some report. We really depend on user reviews.

    Neither the reference manual nor this HTML document apply for a tutorial. If you have problems to get started, mail your remarks so that I can prepare an adequate document.




    GOBLIN Downloads

    Self extracting graph tool for WINDOWS (Release 2.7)
    Source Code Package (Release 2.7.2b3)
    Cygwin Binary Package (Release 2.7)
    Reference Manual (Release 2.7, Postscript)
    Reference Manual (Release 2.7, PDF)



    Release Notes

    Yes, it's true: There is no 1.0 release. Originally, I did not plan to write any graphical front end for GOBLIN. Due to the fundamental changes between release 0.99 and the 2.0 package (including the file formats), I decided to skip the 1.0 label. All introductory statements concern the 2.0 version.

    What's new in Release 2.1

    What's new in Release 2.2

    What's new in Release 2.3

    What's new in Release 2.4

    What's new in Release 2.5

    What's new in Release 2.6

    What's new in Release 2.7

    What's new in Release 2.7.2

    The Change log lists all bug fixes.




    Plans for the Future

    There will be some further work on GOBLIN other than bug fixes and maintainance. In particular, we plan the following improvements and extensions:

    Help us to make a decision which step is next.




    Call for Co-authors and Contributors

    This software is open source and provides a clear design based on C++ object-oriented programming. Since our man power is restricted, we would like to suggest some fields for possible contributions:

    These are only suggestions. If you plan a new implementation of such mathematical algorithms, and you are willing to make your code open source, then GOBLIN is the right base for your work. Do not hesitate to contact me for support.

    If you have any C based open source code, and a merger seems reasonable to you, let me know.

    Especially, students of the University of Augsburg are welcome to contribute to GOBLIN in the framework of numerical practica or diploma theses under the supervison of Bernhard Schmidt. Please contact Bernhard Schmidt for further information.




    Examples of GOBLIN Layouts

    This small gallery shows some graph layouts, either of computational results or of trace objects which have been generated automatically:

    Network flows

    Matchings

    Travelling Salesman

    Packings and Partitions

    Spanning Trees

    Orderings

    Problem Transformations

    Data Structures




    Christian Fremuth-Paeger, October 2005


    Back to my Homepage E-Mail me

    o o o o