JSPM

directed-graph-to-dag

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 9
  • Score
    100M100P100Q41708F
  • License MIT

given a directed graph, return a set of edges to reverse to remove any cycles

Package Exports

  • directed-graph-to-dag

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (directed-graph-to-dag) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

directed-graph-to-dag

Given a directed graph, return a number of edges that may be required to remove all cycles from the graph.

const toDAG = require('directed-graph-to-dag')
const digraph = require('digraph-tag')

const graph = digraph`
  A -> B
  B -> C
  C -> D
  D -> A
`

toDAG(graph) // Set([C -> D])

API

Map<Vertex → Set<Edge>> → Edges

A Map from Vertex (whatever type you provide) to Edge will be defined as Edges.

Set<Vertex> → VS

A set containing vertices are known as VS.

toDAG(vertices: VS, in: Edges, out: Edges[, src: fn][, dst: fn]) → Set<Edge>

Given a graph defined by vertices, incoming edges in, outgoing edges out, and optional type-casting functions src and dst, return a set of edges that may be required to turn the graph into a DAG.

Note: the only guarantee is that a cyclical graph will become acyclical by reversing the resulting edges, not that an existing acyclical graph will have no edges recommended for reversal.

License

MIT