A graph library

This repository includes a graph data structure and some basic graph algorithms like depth and breath search.


//      1
//    /   \ 
//   2     3
//  / \   / \
// 4   5 6   7

var g = Graph<int, Edge<int>>(false/*No double edges between two nodes.*/);

g.addEdges([Edge(1, 2), 
            Edge(1, 3), 
            Edge(2, 4), 
            Edge(2, 5), 
            Edge(3, 6), 
            Edge(3, 7)]);

To export the graph you can use the class DotFile with a fluent interface. See the example below.

var dotFile = DotFile<int, Edge<int>>();
  
dotFile.addGraph(g, graphName: "BinaryGraph")
  .setFileName("binaryGraph.dot")
  .setNodeStyle(node: 1)
    .setColor("#328fa8")
    .setFillColor("#eb8934")
    .setShape(NodeShape.diamond)
    .setLabel((n, idx) => "Node: $idx")
    .apply()
  .setEdgeStyle()
    .setColor("#328fa8")
    .setShape(EdgeShape.dashed)
    .setLabel((e, sourceIdx, targetIdx) => "Edge: $sourceIdx -> $targetIdx")
    .apply()
  .export();

These example will create a binaryGraph.dot file. You can convert this file to a svg. Install Graphviz with brew install graphviz and use the command dot -Tsvg binaryGraph.dot -o outfile.svg

<br/><br/> <br/><br/>

Enjoy it 😃

Libraries

breathSearch
createNewGraph
dependencySearch
depthSearch
dotFile
graph