@@ -484,4 +484,40 @@ for(var v = 1; v < g.V; ++v){
484484 console .log (' =====distance: ' + bf .distanceTo (v) + ' =========' );
485485 }
486486}
487+ ```
488+
489+ ### Find the MaxFlow-MinCut using Ford-Fulkerson algorithm
490+
491+ The sample code below show how to obtain the MaxFlow-MinCut of a directed weighted graph using ford-fulkerson algorithm:
492+
493+ ``` javascript
494+ var jsgraphs = require (' js-graph-algorithms' );
495+ var g = new jsgraphs.FlowNetwork (8 );
496+ g .addEdge (new jsgraphs.FlowEdge (0 , 1 , 10 ));
497+ g .addEdge (new jsgraphs.FlowEdge (0 , 2 , 5 ));
498+ g .addEdge (new jsgraphs.FlowEdge (0 , 3 , 15 ));
499+ g .addEdge (new jsgraphs.FlowEdge (1 , 4 , 9 ));
500+ g .addEdge (new jsgraphs.FlowEdge (1 , 5 , 15 ));
501+ g .addEdge (new jsgraphs.FlowEdge (1 , 2 , 4 ));
502+ g .addEdge (new jsgraphs.FlowEdge (2 , 5 , 8 ));
503+ g .addEdge (new jsgraphs.FlowEdge (2 , 3 , 4 ));
504+ g .addEdge (new jsgraphs.FlowEdge (3 , 6 , 16 ));
505+ g .addEdge (new jsgraphs.FlowEdge (4 , 5 , 15 ));
506+ g .addEdge (new jsgraphs.FlowEdge (4 , 7 , 10 ));
507+ g .addEdge (new jsgraphs.FlowEdge (5 , 7 , 10 ));
508+ g .addEdge (new jsgraphs.FlowEdge (5 , 6 , 15 ));
509+ g .addEdge (new jsgraphs.FlowEdge (6 , 2 , 6 ));
510+ g .addEdge (new jsgraphs.FlowEdge (6 , 7 , 10 ));
511+
512+ var source = 0 ;
513+ var target = 7 ;
514+ var ff = new jsgraphs.FordFulkerson (g, source, target);
515+ console .log (' max-flow: ' + ff .value );
516+
517+ var minCut = ff .minCut (g);
518+
519+ for (var i = 0 ; i < minCut .length ; ++ i) {
520+ var e = minCut[i];
521+ console .log (' min-cut: (' + e .from () + " , " + e .to () + ' )' );
522+ }
487523```
0 commit comments