1.52.0 • Published 3 months ago

graph-typed v1.52.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

NPM GitHub top language npm eslint npm bundle size npm bundle size npm

What

Brief

This is a standalone Graph data structure from the data-structure-typed collection. If you wish to access more data structures or advanced features, you can transition to directly installing the complete data-structure-typed package

How

install

npm

npm i graph-typed --save

yarn

yarn add graph-typed

methods

Directed Graph directed-graph Undirected Graph undirected-graph

snippet

TS

DirectedGraph
import {DirectedGraph, DirectedVertex, DirectedEdge} from 'data-structure-typed';
// /* or if you prefer */ import {DirectedGraph, DirectedVertex, DirectedEdge} from 'graph-typed';

const graph = new DirectedGraph();
const vertexA = new DirectedVertex('A');
const vertexB = new DirectedVertex('B');
const vertexC = new DirectedVertex('C');
const edgeAB = new DirectedEdge('A', 'B');
const edgeBC = new DirectedEdge('B', 'C');

graph.addVertex(vertexA);
graph.addVertex(vertexB);
graph.addVertex(vertexC);
graph.addEdge(edgeAB);
graph.addEdge(edgeBC);

const topologicalOrder = graph.topologicalSort();
if (topologicalOrder) expect(topologicalOrder).toEqual(['A', 'B', 'C'])
MapGraph
import {MapGraph, MapVertex} from 'data-structure-typed';
// /* or if you prefer */ import {MapGraph, MapVertex} from 'graph-typed';

const mapGraph = new MapGraph([5.500338, 100.173665]);

mapGraph.addVertex(new MapVertex('Surin', 5.466724, 100.274805));
mapGraph.addVertex(new MapVertex('Batu Feringgi Beach', 5.475141, 100.276670));
mapGraph.addVertex(new MapVertex('Lotus', 5.459044, 100.308767));
mapGraph.addVertex(new MapVertex('The Breeza', 5.454197, 100.307859));
mapGraph.addVertex(new MapVertex('Hard Rock Hotel', 5.467850, 100.241876));
mapGraph.addVertex(new MapVertex('Mira', 5.456749, 100.286650));
mapGraph.addVertex(new MapVertex('Penang Bible Church', 5.428683, 100.314825));
mapGraph.addVertex(new MapVertex('Queensbay', 5.332760, 100.306651));
mapGraph.addVertex(new MapVertex('Saanen Goat Farm', 5.405738, 100.207699));
mapGraph.addVertex(new MapVertex('Trinity Auto', 5.401126, 100.303739));
mapGraph.addVertex(new MapVertex('Penang Airport', 5.293185, 100.265772));
mapGraph.addEdge('Surin', 'Lotus', 4.7);
mapGraph.addEdge('Lotus', 'The Breeza', 1);
mapGraph.addEdge('Batu Feringgi Beach', 'Hard Rock Hotel', 5.2);
mapGraph.addEdge('Surin', 'Mira', 2.8);
mapGraph.addEdge('Mira', 'Penang Bible Church', 7.0);
mapGraph.addEdge('Lotus', 'Penang Bible Church', 5.7);
mapGraph.addEdge('Penang Bible Church', 'Queensbay', 13.9);
mapGraph.addEdge('Hard Rock Hotel', 'Saanen Goat Farm', 18.5);
mapGraph.addEdge('The Breeza', 'Trinity Auto', 9.1);
mapGraph.addEdge('Trinity Auto', 'Saanen Goat Farm', 26.3);
mapGraph.addEdge('The Breeza', 'Penang Airport', 24.8);
mapGraph.addEdge('Penang Airport', 'Saanen Goat Farm', 21.2);
const expected1 = ['Surin', 'Lotus', 'The Breeza', 'Trinity Auto', 'Saanen Goat Farm'];

const minPathBetween = mapGraph.getMinPathBetween('Surin', 'Saanen Goat Farm');
expect(minPathBetween?.map(v => v.id)).toEqual(expected1);
const surinToSaanenGoatFarmDij = mapGraph.dijkstra('Surin', 'Saanen Goat Farm', true, true);
expect(surinToSaanenGoatFarmDij?.minPath.map(v => v.id)).toEqual(expected1);
expect(surinToSaanenGoatFarmDij?.minDist).toBe(41.1);
mapGraph.addEdge('Surin', 'Batu Feringgi Beach', 1.5);
const expected2 = ['Surin', 'Batu Feringgi Beach', 'Hard Rock Hotel', 'Saanen Goat Farm'];
const minPathBetweenViaBFB = mapGraph.getMinPathBetween('Surin', 'Saanen Goat Farm', true);
expect(minPathBetweenViaBFB?.map(v => v.id)).toEqual(expected2);
const surinToSaanenGoatFarmViaDij = mapGraph.dijkstra('Surin', 'Saanen Goat Farm', true, true);
expect(surinToSaanenGoatFarmViaDij?.minPath.map(v => v.id)).toEqual(expected2);
expect(surinToSaanenGoatFarmViaDij?.minDist).toBe(25.2);

JS

DirectedGraph
const {DirectedGraph, DirectedVertex, DirectedEdge} = require('data-structure-typed');
// /* or if you prefer */ const {DirectedGraph, DirectedVertex, DirectedEdge} = require('graph-typed');

const graph = new DirectedGraph();
const vertexA = new DirectedVertex('A');
const vertexB = new DirectedVertex('B');
const vertexC = new DirectedVertex('C');
const edgeAB = new DirectedEdge('A', 'B');
const edgeBC = new DirectedEdge('B', 'C');

graph.addVertex(vertexA);
graph.addVertex(vertexB);
graph.addVertex(vertexC);
graph.addEdge(edgeAB);
graph.addEdge(edgeBC);

const topologicalOrder = graph.topologicalSort();
if (topologicalOrder) expect(topologicalOrder).toEqual(['A', 'B', 'C'])
MapGraph
const {MapGraph, MapVertex} =  require('data-structure-typed');
// /* or if you prefer */ const {MapGraph, MapVertex} = require('graph-typed');

const mapGraph = new MapGraph([5.500338, 100.173665]);

mapGraph.addVertex(new MapVertex('Surin', 5.466724, 100.274805));
mapGraph.addVertex(new MapVertex('Batu Feringgi Beach', 5.475141, 100.276670));
mapGraph.addVertex(new MapVertex('Lotus', 5.459044, 100.308767));
mapGraph.addVertex(new MapVertex('The Breeza', 5.454197, 100.307859));
mapGraph.addVertex(new MapVertex('Hard Rock Hotel', 5.467850, 100.241876));
mapGraph.addVertex(new MapVertex('Mira', 5.456749, 100.286650));
mapGraph.addVertex(new MapVertex('Penang Bible Church', 5.428683, 100.314825));
mapGraph.addVertex(new MapVertex('Queensbay', 5.332760, 100.306651));
mapGraph.addVertex(new MapVertex('Saanen Goat Farm', 5.405738, 100.207699));
mapGraph.addVertex(new MapVertex('Trinity Auto', 5.401126, 100.303739));
mapGraph.addVertex(new MapVertex('Penang Airport', 5.293185, 100.265772));
mapGraph.addEdge('Surin', 'Lotus', 4.7);
mapGraph.addEdge('Lotus', 'The Breeza', 1);
mapGraph.addEdge('Batu Feringgi Beach', 'Hard Rock Hotel', 5.2);
mapGraph.addEdge('Surin', 'Mira', 2.8);
mapGraph.addEdge('Mira', 'Penang Bible Church', 7.0);
mapGraph.addEdge('Lotus', 'Penang Bible Church', 5.7);
mapGraph.addEdge('Penang Bible Church', 'Queensbay', 13.9);
mapGraph.addEdge('Hard Rock Hotel', 'Saanen Goat Farm', 18.5);
mapGraph.addEdge('The Breeza', 'Trinity Auto', 9.1);
mapGraph.addEdge('Trinity Auto', 'Saanen Goat Farm', 26.3);
mapGraph.addEdge('The Breeza', 'Penang Airport', 24.8);
mapGraph.addEdge('Penang Airport', 'Saanen Goat Farm', 21.2);
const expected1 = ['Surin', 'Lotus', 'The Breeza', 'Trinity Auto', 'Saanen Goat Farm'];

const minPathBetween = mapGraph.getMinPathBetween('Surin', 'Saanen Goat Farm');
expect(minPathBetween?.map(v => v.id)).toEqual(expected1);
const surinToSaanenGoatFarmDij = mapGraph.dijkstra('Surin', 'Saanen Goat Farm', true, true);
expect(surinToSaanenGoatFarmDij?.minPath.map(v => v.id)).toEqual(expected1);
expect(surinToSaanenGoatFarmDij?.minDist).toBe(41.1);
mapGraph.addEdge('Surin', 'Batu Feringgi Beach', 1.5);
const expected2 = ['Surin', 'Batu Feringgi Beach', 'Hard Rock Hotel', 'Saanen Goat Farm'];
const minPathBetweenViaBFB = mapGraph.getMinPathBetween('Surin', 'Saanen Goat Farm', true);
expect(minPathBetweenViaBFB?.map(v => v.id)).toEqual(expected2);
const surinToSaanenGoatFarmViaDij = mapGraph.dijkstra('Surin', 'Saanen Goat Farm', true, true);
expect(surinToSaanenGoatFarmViaDij?.minPath.map(v => v.id)).toEqual(expected2);
expect(surinToSaanenGoatFarmViaDij?.minDist).toBe(25.2);

API docs & Examples

API Docs

Live Examples

Examples Repository

Data Structures

Standard library data structure comparison

Benchmark

Built-in classic algorithms

Software Engineering Design Standards

1.52.0

3 months ago

1.51.9

3 months ago

1.51.8

3 months ago

1.51.7

3 months ago

1.51.5

3 months ago

1.51.4

3 months ago

1.51.3

3 months ago

1.51.0

3 months ago

1.51.2

3 months ago

1.51.1

3 months ago

1.50.9

3 months ago

1.50.8

4 months ago

1.50.7

4 months ago

1.50.6

4 months ago

1.50.5

4 months ago

1.50.4

4 months ago

1.50.3

4 months ago

1.50.2

4 months ago

1.50.1

4 months ago

1.50.0

4 months ago

1.49.9

4 months ago

1.49.8

4 months ago

1.49.5

4 months ago

1.49.7

4 months ago

1.49.6

4 months ago

1.49.4

4 months ago

1.49.3

4 months ago

1.49.2

5 months ago

1.49.1

5 months ago

1.49.0

5 months ago

1.48.6

5 months ago

1.48.5

5 months ago

1.48.8

5 months ago

1.48.7

5 months ago

1.48.9

5 months ago

1.48.4

5 months ago

1.37.0

6 months ago

1.37.3

6 months ago

1.37.4

6 months ago

1.37.2

6 months ago

1.37.7

6 months ago

1.37.8

6 months ago

1.37.5

6 months ago

1.37.6

6 months ago

1.37.9

6 months ago

1.40.0

6 months ago

1.44.0

6 months ago

1.44.1

6 months ago

1.48.0

5 months ago

1.48.2

5 months ago

1.48.1

5 months ago

1.48.3

5 months ago

1.38.2

6 months ago

1.38.0

6 months ago

1.38.1

6 months ago

1.38.6

6 months ago

1.38.7

6 months ago

1.38.4

6 months ago

1.38.5

6 months ago

1.38.8

6 months ago

1.38.9

6 months ago

1.41.1

6 months ago

1.41.0

6 months ago

1.41.3

6 months ago

1.41.2

6 months ago

1.45.1

5 months ago

1.41.5

6 months ago

1.45.0

5 months ago

1.41.4

6 months ago

1.45.3

5 months ago

1.41.7

6 months ago

1.45.2

5 months ago

1.41.6

6 months ago

1.41.9

6 months ago

1.41.8

6 months ago

1.39.1

6 months ago

1.39.2

6 months ago

1.39.0

6 months ago

1.39.5

6 months ago

1.39.6

6 months ago

1.39.3

6 months ago

1.39.4

6 months ago

1.42.0

6 months ago

1.42.2

6 months ago

1.42.1

6 months ago

1.42.4

6 months ago

1.42.3

6 months ago

1.46.2

5 months ago

1.42.6

6 months ago

1.46.1

5 months ago

1.42.5

6 months ago

1.42.8

6 months ago

1.46.3

5 months ago

1.42.7

6 months ago

1.46.6

5 months ago

1.46.5

5 months ago

1.42.9

6 months ago

1.46.8

5 months ago

1.46.7

5 months ago

1.36.4

6 months ago

1.36.5

6 months ago

1.36.2

6 months ago

1.36.3

6 months ago

1.36.8

6 months ago

1.36.9

6 months ago

1.36.6

6 months ago

1.43.1

6 months ago

1.43.0

6 months ago

1.43.3

6 months ago

1.47.1

5 months ago

1.47.3

5 months ago

1.47.2

5 months ago

1.47.5

5 months ago

1.47.4

5 months ago

1.47.7

5 months ago

1.47.6

5 months ago

1.47.9

5 months ago

1.47.8

5 months ago

1.34.2

7 months ago

1.34.3

7 months ago

1.32.2

7 months ago

1.34.1

7 months ago

1.34.6

7 months ago

1.33.7

7 months ago

1.34.7

7 months ago

1.33.8

7 months ago

1.32.9

7 months ago

1.34.4

7 months ago

1.34.5

7 months ago

1.33.6

7 months ago

1.3.3

7 months ago

1.3.2

7 months ago

1.3.1

7 months ago

1.21.0

8 months ago

1.21.4

8 months ago

1.21.2

8 months ago

1.21.3

8 months ago

1.32.0

7 months ago

1.31.0

7 months ago

1.20.0

8 months ago

1.19.9

8 months ago

1.19.7

8 months ago

1.19.6

8 months ago

1.19.5

8 months ago

1.19.3

8 months ago