@@ -355,4 +355,52 @@ for(var i=0; i < mst.length; ++i) {
355
355
var w = e .other (v);
356
356
console .log (' (' + v + ' , ' + w + ' ): ' + e .weight );
357
357
}
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
+ }
358
406
```
0 commit comments