The Complexity Project


The Complexity Project is a free Java library for implementing Graph and Cellular Automata objects, algorithms and simulation. It provides an extensible language for modeling and visualisation of data that can be represented as a network or Cellular Automata structures.

Using the library, simple graph or cellular automata simulations can be developed easily. Hopefully the library will prove particularly useful to people who are just getting started with simulations since it encourages experimentation with a minimum of effort.


  • Supports directed and undirected graphs of various topologies: random, small-world, tree and scale-free.
  • Supports 2D cellular automata of rectangle and torus structures.
  • Library for measuring graph properties: edge density, clustering coefficient, etc.
  • Library for creating simple simulation and GUI.


  • class/ : class files
  • complexity/ : Source code
  • doc/ : JavaDoc documentation
  • lib/ : Sample domonstrations
    • epidemic.jar
    • wireworld.jar
  • README.html : This file
  • projectBuilder.xml : Ant buildfile
  • BSD-license.txt : BSD license


  • The Complexity Project API: Class library + JavaDoc + Source code + Demo (853 kb, JAR) [Download]


This software includes modified versions of the Graph, AbstractBaseGraph and EdgeFactory Java classes by JGraphT ( )


The Complexity Project is free and open source. It is available under a BSD-style licence with the requirement that any copy acknowledges the original product and its developers.