maxFlowFordFulkerson: Maximum flow with the Ford-Fulkerson algorithm

Description Usage Arguments Details Value References See Also Examples

Description

The maxFlowFordFulkerson function computes the maximum flow in a given flow network with the Ford-Fulkerson algorithm.

Usage

1
2
maxFlowFordFulkerson(nodes, arcs, directed = FALSE, source.node = 1,
  sink.node = nodes[length(nodes)])

Arguments

nodes

vector containing the nodes of the graph, identified by a number that goes from 1 to the order of the graph.

arcs

matrix with the list of arcs of the graph. Each row represents one arc. The first two columns contain the two endpoints of each arc and the third column contains their weights.

directed

logical value indicating wheter the graph is directed (TRUE) or not (FALSE).

source.node

number pointing to the source node of the graph. It's node 1 by default.

sink.node

number pointing to the sink node of the graph. It's the last node by default.

Details

The Ford-Fulkerson algorithm was published in 1956 by L. R. Ford, Jr. and D. R. Fulkerson. This algorithm can compute the maximum flow between source and sink nodes of a flow network.

Value

maxFlowFordFulkerson returns a list with:

s.cut

vector with the nodes of the s cut.

t.cut

vector with the nodes of the t cut.

max.flow

value with the maximum flow in the flow network.

References

Ford, L. R.; Fulkerson, D. R. (1956). "Maximal flow through a network". Canadian Journal of Mathematics 8: 399.

See Also

This function is an auxiliar function used in ghTreeGusfield and getMinimumCutTree.

Examples

1
2
3
4
5
6
# Graph
nodes <- 1:6
arcs <- matrix(c(1,2,1, 1,3,7, 2,3,1, 2,4,3, 2,5,2, 3,5,4, 4,5,1, 4,6,6,
                5,6,2), byrow = TRUE, ncol = 3)
# Maximum flow with Ford-Fulkerson algorithm
maxFlowFordFulkerson(nodes, arcs, source.node = 2, sink.node = 6)

Example output

Loading required package: igraph

Attaching package: 'igraph'

The following objects are masked from 'package:stats':

    decompose, spectrum

The following object is masked from 'package:base':

    union

$s.cut
[1] 2 3 1 5

$t.cut
[1] 4 6

$max.flow
[1] 6

optrees documentation built on May 2, 2019, 8:15 a.m.