bacon-theory

network / graph theory library for node and the browser

Usage no npm install needed!

<script type="module">
  import baconTheory from 'https://cdn.skypack.dev/bacon-theory';
</script>

README

Bacon Theory

A graph theory library for node and the browser.

What is graph theory? Wikipedia

var bt = require('bacon-theory');

var graph = bt.Graph();
graph.createNodes(10);
node1 = graph.getNode(1);
node2 = graph.getNode(2);
node3 = graph.getNode(3);

graph.addEdge(node1, node2);

node1.isNeighbour(node2); //true
node1.isNeighbour(node3); //false

Installation

$ npm install -g bacon-theory

API

var bt = require('bacon-theory');

For full documentation, see the source or build the documentation grunt jsdoc

Graph

var graph = new bt.Graph();

Node

var graph = bt.Graph();
var node = bt.Node();
graph.addNode(node);

graph.nNodes(); // = 1

Edge

var graph = bt.Graph(); //create a graph
graph.addNode(); //add a node
graph.addNode(); //add another node
graph.getNode(0).addEdge(graph.getNode(1)); //connect node #0 and node #1 with an edge

autocreate

Pass in an array of arrays which represents a collection of nodes. Integers as array values specify edges connecting to the n-th node (zero-indexed)

options.directed specifies if the edges are directional (true) or bi-directed (false, default)

//creates a graph where the 0th node is connected to node #1, 1st node connected to node #2 and #3 etc...

var options = {
    directed: false
};
var graph = bt.autocreate([
    [1],
    [2,3],
    [0],
    [0]
], options);

TODO

  • Provide helpers for calculating common graph properties
  • Allow non-integer edge weights
  • Export graph to JSON format
  • Add in-browser tests
  • More documentation and examples