node package manager
Easy collaboration. Discover, share, and reuse code in your team. Create a free org »

iper

iper

Hypergraphs for breakfast!

Installation | API | Examples | License

Node engine NPM version Build Status Dependency Status Coverage Status Test page

js-standard-style

NPM

Installation

With npm do

npm install iper

API

new Graph([graph])

Hypergraph constructor.

const Graph = require('iper').Graph
 
const graph = new Graph()
  • @param {Object} [graph]
  • @param {Object} [graph.edges]
  • @param {Object} [graph.nodes]
  • @param {Boolean} [graph.multigraph] can contain duplicated edges
  • @param {Boolean} [graph.pseudograph] is a multigraph with loops allowed
  • @param {Number} [graph.uniform] all edges have the same cardinality (i.e. number of nodes)

graph.addEdge(nodeIds)

Add an hyperedge that connects given nodeIds.

  • @param {Array} nodeIds
  • @returns {String} id

graph.addNode(data)

Add a node, containing given data.

var nodeId = graph.addNode({ label: 'foo' })
  • @param {*} [data]
  • @returns {String} id of the node created

graph.degreeOf(nodeId)

Returns the degree of a node, that is the number of incident edges with loops counted twice.

  • @param {String} id
  • @returns {void}

graph.delEdge(edgeId)

Delete edge by given id.

The node id will be removed from every edge connected. If some edge after this operation will result having only one or zero vertices left, it will be removed too.

  • @param {String} edgeId
  • @returns {void}

graph.delNode(nodeId)

Delete node by given id.

  • @param {String} nodeId
  • @returns {void}

graph.generateId()

Returns a random string to be used as id.

  • @returns {String}

Override this method if you want to customize how ids are generated, for example

const uniqueid = require('lodash.uniqueid')
const Graph = require('iper').Graph
 
class MyGraph extends Graph {
  generateId () {
    return uniqueid()
  }
}
 
module.exports = MyGraph

graph.getRank()

Returns the max cardinality of any of the edges in the hypergraph.

  • @returns {Number}

Examples

Classic graph

const Graph = require('iper').Graph
 
const classicGraph = new Graph({ uniform: 2 })

License

MIT