@gsvlabs/graph-search

1.0.1 • Public • Published

Graph Seach Alogorithms Implementation in Javascript

Simple and fast library containing collection of algorithms to search and traverse graphs using DFS or BFS, check if a path exists between two nodes and also detect cycles in directed graph input.

Installation

`npm i @gsvlabs/graph-search`

Usage

Example 1

```import Graph from '@gsvlabs/graph-search';

//For old fashioned CommonJS
const Graph = require('@gsvlabs/graph-search').default;

// Sample graph input object
let edges = [
{ source: '0', target: '9' },
{ source: '9', target: '2' },
{ source: '2', target: '3' },
{ source: '2', target: '4' },
{ source: '3', target: '8' },
{ source: '8', target: '13' },
{ source: '8', target: '10' },
{ source: '10', target: '11' },
{ source: '10', target: '14' },
{ source: '14', target: '13' },
{ source: '11', target: '12' },
{ source: '4', target: '5' },
{ source: '5', target: '6' },
{ source: '5', target: '7' },
{ source: '13', target: '1' },
{ source: '6', target: '13' },
{ source: '12', target: '13' },
{ source: '7', target: '13' }
];

// Create object from Graph class with parameter as true indicating that input graph is directed
// false for undirected graphs
let g = new Graph(true);

// Add edges to graph using edges object

// Manually add edge from source to target

// Print graph with paths
console.log(g.getGraph());

// Print if input directed graph is cyclic
// Works only if input graph is set as directed in constructor `new Graph(true)`
console.log(`Is cyclic: \${g.isCyclic()}`);

// Check if path exists between two nodes
// returns array[boolean, array[nodes]]
console.log(g.isPathExists('9', '4'));

// Print path from a source vertex with depth first search algorithm
console.log(g.dfs('0'));

// Print path from a source vertex with breadth first search algorithm
console.log(g.bfs('0'));```

Package Sidebar

Install

`npm i @gsvlabs/graph-search`

1

1.0.1

MIT

18.4 kB

9