js-graph-algorithms
Version:
Package implements data structures and algorithms for processing various types of graphs
36 lines (34 loc) • 1.09 kB
JavaScript
var expect = require('chai').expect;
var jsgraphs = require('../src/jsgraphs');
describe('Strongly Connected Components for directed graphs', function(){
var graph = new jsgraphs.DiGraph(13);
graph.addEdge(4, 2);
graph.addEdge(2, 3);
graph.addEdge(3, 2);
graph.addEdge(6, 0);
graph.addEdge(0, 1);
graph.addEdge(2, 0);
graph.addEdge(11, 12);
graph.addEdge(12, 9);
graph.addEdge(9, 10);
graph.addEdge(9, 11);
graph.addEdge(8, 9);
graph.addEdge(10, 12);
graph.addEdge(11, 4);
graph.addEdge(4, 3);
graph.addEdge(3, 5);
graph.addEdge(7, 8);
graph.addEdge(8, 7);
graph.addEdge(5, 4);
graph.addEdge(0, 5);
graph.addEdge(6, 4);
graph.addEdge(6, 9);
graph.addEdge(7, 6);
it('should have five components', function(){
var scc = new jsgraphs.StronglyConnectedComponents(graph);
expect(scc.componentCount()).to.equal(5);
for (var v = 0; v < graph.V; ++v) {
console.log('id[' + v + ']: ' + scc.componentId(v));
}
});
});