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.
jspm install github:aureooms/js-graph-spec
# or
jspm install npm:aureooms-js-graph-spec
No install step needed for duo!
component install aureooms/js-graph-spec
bower install aureooms-js-graph-spec
ender add aureooms-js-graph-spec
jam install aureooms-js-graph-spec
spm install aureooms-js-graph-spec --save
npm install aureooms-js-graph-spec --save
let graphspec = require( "github:aureooms/js-graph-spec" ) ;
// or
import graphspec from 'aureooms-js-graph-spec' ;
let graphspec = require( "aureooms/js-graph-spec" ) ;
let graphspec = require( "aureooms-js-graph-spec" ) ;
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.
require( [ "aureooms-js-graph-spec" ] , function ( graphspec ) { ... } ) ;
Create a new graph.
let G = new Graph( ) ;
// ...
let G = new DiGraph( ) ;
// ...
let G = new MultiGraph( ) ;
// ...
let G = new MultiDiGraph( ) ;
// ...
Add a vertex to graph G
.
let u = G.vadd( ) ;
Delete vertex u
from graph G
.
G.vdel( u ) ;
Add edge (u,v)
to graph G
.
let e = G.eadd( u , v ) ;
Delete edge e
from graph G
.
G.edel( e ) ;
Get an iterator over vertex references in graph G
.
for ( let u of G.vitr( ) ) ... ;
Get an iterator over edge references in graph G
.
for ( let e of g.eitr( ) ) ... ;
Get an iterator over edge references of edges incident to u
in graph G
.
for ( let e of G.iitr( u ) ) ... ;
Get an iterator over vertex references of neighbors of u
in graph G
.
for ( let v of G.nitr( u ) ) ... ;
Get an iterator over vertices in graph G
.
for ( let u of G.vertices( ) ) ... ;
Get an iterator over edges in graph G
.
for ( let [ u , v , e ] of G.edges( ) ) ... ;
Get an iterator over edges incident to w
in graph G
.
for ( let [ u , v , e ] of G.incident( w ) ) ... ;
Get endpoints u
and v
of an edge reference e
in graph G
.
let [ u , v ] = G.endpoints( e ) ;
These methods must also be implemented (with the same invariants) in Graphs and MultiGraphs for convenience.
Get an iterator over edge references of ingoing edges of u
in graph G
.
for ( let e of G.initr( u ) ) ... ;
Get an iterator over edge references of outgoing edges of u
in graph G
.
for ( let e of G.outitr( u ) ) ... ;
Get an iterator over direct predecessors of u
in graph G
.
for ( let v of G.dpitr( u ) ) ... ;
Get an iterator over direct successors of u
in graph G
.
for ( let v of G.dsitr( u ) ) ... ;
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 ) ) ... ;
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 the directions of edges in G
.
G.reverse( ) ;