Convenient way to handle simple graphs and digraphs



Build Status


This module defines two data types for working with graphs:

  • The SimpleGraph type represents undirected graphs without loops or multiple edges.
  • The SimpleDigraph type represents directed graphs in which there may be at most one directed edge (u,v) from a vertex u to a vertex v. There may also be a directed edge in the opposite direction, (v,u).
  • The SimpleHypergraph type representing hypergraphs in which edges may be any subset of the vertex set.

Additional functionality can be found in these modules:

  • DrawSimpleGraphs for visualization.
  • SimpleGraph Algorithms for functions relying on [integer] linear programming.
  • SimpleGraphRepresentations for creating and analyzing some special classes of graphs.

User's Guide

Please see the Wiki for extensive information pertaining to the SimpleGraph type.

The SimpleDigraph type is not so well developed nor documented. See the source files in the src directory. Likewise, the SimpleHypergraph type is in early stages of development.


Thank you to JHU students Tara Abrishami and Laura Bao for contributions to this project.

Please Help

This is a work in process with a lot of more features that can/should be added. If you're interested in contributing, please contact me. I'm especially interested in JHU undergraduates getting involved.

Ed Scheinerman (ers@jhu.edu)

First Commit


Last Touched

2 days ago


166 commits