quickgraph.banner.png

QuickGraph 3.0: Generic Graph Data Structures and Algorithms for .Net.

QuickGraph 3.0 provides generic directed graph datastructures and algorithms for .Net 3.5. QuickGraph comes with algorithms such as depth first seach, breath first search, shortest path, network flow etc... QuickGraph supports MSAGL, GLEE, and Graphviz to render the graphs, serialization to GraphML.

  • QuickGraph 3.0 requires .Net 3.5 since uses extensions methods and Linq
  • QuickGraph 2.0 requires .Net 2.0. This version is not maintained anymore.

A simple example

This example takes a DataSet, builds the graph of table and constraints from the schema and computes the table topological sort (useful to figure order to populate a database):

DataSet ds = new MyDataSet(); // your dataset
var graph = ds.ToGraph(); 
foreach(DataTable table in graph.TopologicalSort())
    Console.WriteLine(table.TableName); // in which order should we delete the tables?


History

  • QuickGraph 3.0 takes advantage of extension methods to simplify tasks.
  • QuickGraph 2.0 introduced support for generic graph data structures
  • The original QuickGraph for .net 1.0 was posted on CodeProject in 8 Dec 2003. It was time to do a refresh and make the graph generic.

The design of QuickGraph is inspired from the Boost Graph Library.

Where to go next?


Please use the discussions section to leave messages. Since there are no notifications for wiki comments, they will likely never be read
Last edited Nov 4 at 4:41 PM by pelikhan, version 30
Comments
Also available: 2 reviews for current release.

DamonCarr wrote  Sep 24 at 2:25 PM 
Utterly definitive....

SteveGuidi wrote  Today at 3:22 PM 
This is fantastic work!

About one year ago, I started to work on porting the BGL to the .NET platform. I completed a generic data structure with some rudimentary algorithms, including serialization support. It was at that point that I discovered the .NET 1.1 version of QuickGraph, which looked like an abandoned project at the time -- ironically, my initial searches for a BGL port didn't produce anything :(

After studying the .NET 3.5 release, the implementation validates all the ideas I wanted to implement in the port. If two or more engineers independently arrive to same design decisions, then they must be sound!

Well done!

Updating...