Socket
Socket
Sign inDemoInstall

graphs-all

Package Overview
Dependencies
0
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    graphs-all

Graph Data Structure Library


Version published
Weekly downloads
14
increased by366.67%
Maintainers
1
Install size
18.6 kB
Created
Weekly downloads
 

Readme

Source

Graphs

Travis build Code coverage version

This library contain an implementation of graph data structure with various method that can be useful in operations by graphs.

Graphs can directed and undirected, weighted and unweighted. So we have 4 variations and this library can works with them.

Install

npm install graphs-all

Getting Started

Import the library

var graphs = require("graphs-all");
var g = graphs.UndirectedUnweightedGraph();
g.addNode("A");
g.addLink("A", "B");
g.addLink("A", "C");
g.addLink("B", "C");
g.hasNode("C") // true
g.hasLink("B", "A") // true
g.removeLink("C", "A");
g.connectedWith("B") // ["A", "B"]

Create a graph

You can create four variations of graphs with shortcuts functions:

var simpleGraph = graphs.UndirectedUnweightedGraph(), 
    directedGraph = graphs.DirectedUnweightedGraph(),
    weightedGraph = graph.UndirectedWeightedGraph(),
    complexGraph = graph.DirectedWeightedGraph();

Or with Graph class:

new Graph(isDirected, isWeighted)

var simpleGraph = new graphs.Graph(false, false), 
    directedGraph = new graphs.Graph(true, false),
    weightedGraph = new graphs.Graph(false, true),
    complexGraph = new graphs.Graph(true, true);

Add nodes

Graph.addNode(nodeKey)

Add a node in the graph with key nodeKey. If node is exist already, then return false, for successive addition returns true.

simpleGraph.addNode("A")
simpleGraph.hasNode("B") // true
simpleGraph.hasNode("A") // false

Check nodes

Graph.hasNode(nodeKey)

Check is a node with key nodekey in the graph

simpleGraph.hasNode("A") // true
simpleGraph.hasNode("E") // false

Graph.addLink(key1, key2)

Graph.addLink(key1, key2, weight)

Add a link between key1 and key2 nodes. If nodes are not existed, then they are created. For directed graphs, it's created a directed link from key1 to key2. For weighted graphs you can add the third argument weight (default == 1). weight must be a number.

simpleGraph.addLink("A", "E");
simpleGraph.hasNode("E"); // true
weightedGraph.addLink("E", "C", 5);

Graph.hasLink(key1, key2)

Graph.linkWeight(key1, key2)

Check the existence of the link between key1 and key2 nodes (the order is important only for directed graphs). It returns true if the link is exist, false otherwise.

Also you can use linkWeight - it has the same interface and returns undefined if the link doesn't exist, otherwise the weight of the link (1 for unweighted graphs).

simpleGraph.addLink("A", "E");
simpleGraph.hasLink("E", "A"); // true
weightedGraph.addLink("E", "C", 5);
weightedGraph.linkWeight("E", "C"); // 5
simpleGraph.linkWeight("Z", "A"); // undefined

Get node list

Graph.nodes()

Returns an array on node keys.

simpleGraph.addLink(1, 2);
simpleGraph.addLink(3, 4);
simpleGraph.nodes(); // [1, 2, 3, 4]

Get node connections

Graph.connectedWith(key)

Returns an array of keys of nodes, which are connected with the given node. For directed graphs return only nodes that are available from from the given node.

simpleGraph.addLink("A", "D");
simpleGraph.addLink("A", "E");
simpleGraph.addLink("C", "A");
simpleGraph.nodeConnections("A"); // ["E", D", "C"]

directedGraph.addLink("A", "B");
directedGraph.addLink("C", "A");
directedGraph.nodeConnections("A"); // ["B"]

Remove Nodes

Graph.removeNode(key)

Removes the node from the graph, also remove all connected links (input and output).

directedGraph.addLink("1", "2");
directedGraph.addLink("3", "1");
directedGraph.addLink("1", "4");
directedGraph.removeNode("1");
directedGraph.hasNode("1"); // false
directedGraph.hasLink("1", "2"); // false
directedGraph.hasLink("3", "1"); // false

Graph.removeLink(key1, key2)

Removes the link from the graph. The nodes are not removed, only the link. For directed graphs remove only one-way link from key1 to key2.

simpleGraph.addLink("5", "6");
simpleGraph.removeLink("6", "5");
simpleGraph.hasLink("5", "6"); // false
simpleGraph.hasNode("5"); // true

Keywords

FAQs

Last updated on 03 Oct 2015

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc