@@ -355,4 +355,52 @@ for(var i=0; i < mst.length; ++i) {
355355 var w = e .other (v);
356356 console .log (' (' + v + ' , ' + w + ' ): ' + e .weight );
357357}
358+ ```
359+
360+ ### find the shortest paths using Dijkstra on weighted directed graph
361+
362+ The sample code below show how to obtain the shortest paths from a starting point 0 on a weighted directed graph using Dijkstra:
363+
364+ ``` javascript
365+ var jsgraphs = require (' js-graph-algorithms' );
366+ var g = new jsgraphs.WeightedDiGraph (8 );
367+ g .addEdge (new jsgraphs.Edge (0 , 1 , 5.0 ));
368+ g .addEdge (new jsgraphs.Edge (0 , 4 , 9.0 ));
369+ g .addEdge (new jsgraphs.Edge (0 , 7 , 8.0 ));
370+ g .addEdge (new jsgraphs.Edge (1 , 2 , 12.0 ));
371+ g .addEdge (new jsgraphs.Edge (1 , 3 , 15.0 ));
372+ g .addEdge (new jsgraphs.Edge (1 , 7 , 4.0 ));
373+ g .addEdge (new jsgraphs.Edge (2 , 3 , 3.0 ));
374+ g .addEdge (new jsgraphs.Edge (2 , 6 , 11.0 ));
375+ g .addEdge (new jsgraphs.Edge (3 , 6 , 9.0 ));
376+ g .addEdge (new jsgraphs.Edge (4 , 5 , 5.0 ));
377+ g .addEdge (new jsgraphs.Edge (4 , 6 , 20.0 ));
378+ g .addEdge (new jsgraphs.Edge (4 , 7 , 5.0 ));
379+ g .addEdge (new jsgraphs.Edge (5 , 2 , 1.0 ));
380+ g .addEdge (new jsgraphs.Edge (5 , 6 , 13.0 ));
381+ g .addEdge (new jsgraphs.Edge (7 , 5 , 6.0 ));
382+ g .addEdge (new jsgraphs.Edge (7 , 2 , 7.0 ));
383+
384+ expect (g .V ).to .equal (8 );
385+ var edgeCount = 0 ;
386+ for (var v = 0 ; v < g .V ; ++ v){
387+ var adj_v = g .adj (v);
388+ edgeCount += adj_v .length ;
389+ }
390+ expect (edgeCount).to .equal (16 );
391+
392+ var dijkstra = new jsgraphs.Dijkstra (g, 0 );
393+
394+ for (var v = 1 ; v < g .V ; ++ v){
395+ if (dijkstra .hasPathTo (v)){
396+ var path = dijkstra .pathTo (v);
397+ console .log (' =====path from 0 to ' + v + ' start==========' );
398+ for (var i = 0 ; i < path .length ; ++ i) {
399+ var e = path[i];
400+ console .log (e .from () + ' => ' + e .to () + ' : ' + e .weight );
401+ }
402+ console .log (' =====path from 0 to ' + v + ' end==========' );
403+ console .log (' =====distance: ' + dijkstra .distanceTo (v) + ' =========' );
404+ }
405+ }
358406```
0 commit comments