Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This page will over time be filled with documentation written by the project team. But first, here's some general information to get you started:

Project Team
  • Sven Gundlach (sgu)
  • Sven Oliver Reimers (sor)
Project Goals

The following are our main goals for this project:

  • Develop a good, robust tree-based layout algorithm that can be published and shipped as part of our KLay library.
  • Supply good, useful documentation, both on this page (project-centric) as well as on a new page in the KIELER Wiki (user-centric).
Plug-in Namede.cau.cs.kieler.klay.tree
RepositoryKIELER Pragmatics
Branches
  • Main tree layout branch: prak/treelayout
  • Further development branches can be forked from the main tree layout branch; names should begin with prefix prak/

...

MrTGraph Data Structure

Info
titleSome Ideas...

Since you won't want to directly work on the input KGraph, you will need a custom data structure to represent graphs, called the MrTGraph. For examples of such data structures, you can have a look at some of the following layout algorithms:

  • KLay Layered uses the LGraph structure.
  • KLay Force uses the FGraph structure.
  • KLay Planar uses the PGraph structure.

All of these structures have in common that they don't necessarily model every property that might conceivably be used in the algorithm. Instead, graph structure members are property holders, which makes it easy to set an arbitrary amount of properties on them. To understand why this might make sense, look at KIML's LayoutOptions class or KLay Layered's Properties class. Both classes define a bunch of properties that can be set on graph elementsThe MrTGraph data structure is best explained by looking at the following diagram:

tree-graph.png

The basic data structure constis of the three classes TNode, TGraph and TEdge, which contain all the necessary properties to model a tree data structure. Therefore a TGraph consits of sets of TEdges and TNodes.

The TNodes are objects of the type TShape. That means that a nodes' size and position is defined by the attributes defined in the class TShape. The class TShape is an abstract superclass for the class TGraphElement. So the class TGrahpElement provides the utilites to declare any generic graph element of which a TGraph consits of.

 

Features

Info
titleSome Ideas...

The bottom line is to develop an algorithm that lays out a graph in a tree layout. Here a some first ideas for further features you might look into.

  • Support for connected components
  • Different kinds of tree layouts (top-down tree, left-to-right tree, radial tree...)
  • Support for node and edge labels
  • Support for graphs with cycles
  • Support for ports
  • Layout options for customizing the algorithm

Feel free to think about further ways to enhance the algorithm. Make sure to set priorities and to properly divide responsibilities among the team members.

...