js-graph-spec
Graph specification code bricks for JavaScript. Parent is js-gn.
graphspec.Graph( "My graph implementation" , MyGraphConstructor ) ;
Can be managed through jspm, duo, component, bower, ender, jam, spm, and npm.
Install
jspm
jspm install github:aureooms/js-graph-spec
# or
jspm install npm:@aureooms/js-graph-spec
duo
No install step needed for duo!
component
component install aureooms/js-graph-spec
bower
bower install @aureooms/js-graph-spec
ender
ender add @aureooms/js-graph-spec
jam
jam install @aureooms/js-graph-spec
spm
spm install @aureooms/js-graph-spec --save
npm
npm install @aureooms/js-graph-spec --save
Require
jspm
let graphspec = require( "github:aureooms/js-graph-spec" ) ;
// or
import graphspec from '@aureooms/js-graph-spec' ;
duo
let graphspec = require( "aureooms/js-graph-spec" ) ;
component, ender, spm, npm
let graphspec = require( "@aureooms/js-graph-spec" ) ;
bower
The script tag exposes the global variable graphspec
.
<script src="bower_components/@aureooms/js-graph-spec/js/dist/graph-spec.min.js"></script>
Alternatively, you can use any tool mentioned here.
jam
require( [ "@aureooms/js-graph-spec" ] , function ( graphspec ) { ... } ) ;
Signatures
Graphs, DiGraphs, MultiGraphs, and MultiDiGraphs
Graph
, DiGraph
, MultiGraph
, or MultiDiGraph
Create a new graph.
let G = new Graph( ) ;
// ...
let G = new DiGraph( ) ;
// ...
let G = new MultiGraph( ) ;
// ...
let G = new MultiDiGraph( ) ;
// ...
vadd
Add a vertex to graph G
.
let u = G.vadd( ) ;
vdel
Delete vertex u
from graph G
.
G.vdel( u ) ;
eadd
Add edge (u,v)
to graph G
.
let e = G.eadd( u , v ) ;
edel
Delete edge e
from graph G
.
G.edel( e ) ;
vitr
Get an iterator over vertex references in graph G
.
for ( let u of G.vitr( ) ) ... ;
eitr
Get an iterator over edge references in graph G
.
for ( let e of g.eitr( ) ) ... ;
iitr
Get an iterator over edge references of edges incident to u
in graph G
.
for ( let e of G.iitr( u ) ) ... ;
nitr
Get an iterator over vertex references of neighbors of u
in graph G
.
for ( let v of G.nitr( u ) ) ... ;
vertices
Get an iterator over vertices in graph G
.
for ( let u of G.vertices( ) ) ... ;
edges
Get an iterator over edges in graph G
.
for ( let [ u , v , e ] of G.edges( ) ) ... ;
incident
Get an iterator over edges incident to w
in graph G
.
for ( let [ u , v , e ] of G.incident( w ) ) ... ;
endpoints
Get endpoints u
and v
of an edge reference e
in graph G
.
let [ u , v ] = G.endpoints( e ) ;
DiGraphs and MultiDiGraphs
These methods must also be implemented (with the same invariants) in Graphs and MultiGraphs for convenience.
initr
Get an iterator over edge references of ingoing edges of u
in graph G
.
for ( let e of G.initr( u ) ) ... ;
outitr
Get an iterator over edge references of outgoing edges of u
in graph G
.
for ( let e of G.outitr( u ) ) ... ;
dpitr
Get an iterator over direct predecessors of u
in graph G
.
for ( let v of G.dpitr( u ) ) ... ;
dsitr
Get an iterator over direct successors of u
in graph G
.
for ( let v of G.dsitr( u ) ) ... ;
ingoing
Get an iterator over ingoing edges of w
in graph G
.
The invariant v === w
must hold.
for ( let [ u , v , e ] of G.ingoing( w ) ) ... ;
outgoing
Get an iterator over outgoing edges of w
in graph G
.
The invariant u === w
must hold.
for ( let [ u , v , e ] of G.outgoing( w ) ) ... ;
reverse
Reverse the directions of edges in G
.
G.reverse( ) ;