Skip to contents

Finds the solution to the network circulation problem via the push-relabel circulation algorithm.

Usage

NetworkCirculation(
  arcSources,
  arcTargets,
  arcLowerBound,
  arcUpperBound,
  nodeSupplies,
  numNodes,
  algorithm = "Circulation"
)

Arguments

arcSources

Vector corresponding to the source nodes of a graph's edges

arcTargets

Vector corresponding to the destination nodes of a graph's edges

arcLowerBound

Vector corresponding to the lower-bound capacities of nodes of a graph's edges

arcUpperBound

Vector corresponding to the upper-bound capacities of nodes of a graph's edges

nodeSupplies

Vector corresponding to the supplies of each node of the graph.

numNodes

The number of nodes in the graph

algorithm

Choices of algorithminclude "Circulation". "Circulation" is the default.

Value

A named list containing two entries: 1) "flows": a vector corresponding to the flows of arcs in the graph, and 2) "barriers": a vector of the graph's barrier nodes.

Details

For details on LEMON's implementation, including differences between the algorithms, see https://lemon.cs.elte.hu/pub/doc/1.3.1/a00078.html.