$ npm install directed-graph-to-dagGiven 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])
Map<Vertex → Set<Edge>> → EdgesA Map from Vertex (whatever type you provide) to Edge will be defined as Edges.
Set<Vertex> → VSA 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.
MIT