Computing Storyline Visualizations with Few Block Crossings

Thomas C. van Dijk, Fabian Lipp, Peter Markfelder, and Alexander Wolff

Lehrstuhl für Informatik I, Universitüt Würzburg, Germany

Introduction

All implementations are written in C++, with the exception of some "driver" code in Python for Sat. Comparable effort has been put into optimizing each program. Memory usage was not optimized, but there are no flagrant memory inefficiencies.

Satisfiability-based algorithm (Sat)

The implementation uses Python to write CNF SAT instances in DIMACS format, to run Minisat on them, and to run the search. Directory: /sat

How to set up

Get a minisat executable for your system and put it in /sat. See below on how to build Minisat on Windows; in our experience, the Cygwin-based executable available at minisat.se does not work.

How to use

Run [your python] main.py [filename], for example pypy main.py example/star_wars.pcsv.

minisat on Windows

Get the Minisat source code from minisat.se. We have used minisat-2.2.0.tar.gz from this location. Under Visual Studio 2017 Community Edition, the above code does not compile as-is. Solve the following three problems.
  1. Visual Studio does not have zlib by default. Find, build and configure it so that Visual Studio sees it when you compile Minisat.
  2. Make the following changes to Minisat's core/Main.cc, either by hand or by applying our /minisat4win/Main.cc.patch.
  3. Make the following change to minisat's utils/ParseUtils.h, either by hand or by applying our /minisat4win/ParseUtils.h.patch.
  4. Change static const int buffer_size = 1048576; to 4096 or some other small number. (Windows, by default, has a smaller stack size and will crash with minisat's default value. Using a smaller read buffer is the simplest fix.)

Custom exact algorithms: FPT and ItD

The implementation is in straight C++11 without libraries. See: Block Crossings in Storyline Visualizations. T. C. van Dijk, M. Fink, N. Fischer, F. Lipp, P. Markfelder, A. Ravsky, S. Suri, A. Wolff. Proceedings of the 24nd Internation Symposium on Graph Drawing. (2016). Directory: /exact

How to set up

Compile bcdp.cpp. You may need to include a compiler flag to compile as C++11, for example -std=c++11 in older versions of g++. There is no commandline interface. As-is, the program runs some experiments on random graphs.

How to use

How to compare with Sat

This program does not read the same input file format as Sat. (This program does not support concurrent meetings, which Sat does.) In order to compare to Sat, proceed as follows.
  1. Generate (random) instances in this program.
  2. Run FPT and/or ItD on these instances.
  3. Use writePCSV to write .pcsv files.
  4. Run Sat on these files.

Imprint + Privacy Policy | Privacy Disclaimer