org.jgrapht.alg.flow

## Class PushRelabelMaximumFlow<V,E>

- java.lang.Object
- - org.jgrapht.alg.flow.MaximumFlowAlgorithmBase<V,E>
  - - org.jgrapht.alg.flow.PushRelabelMaximumFlow<V,E>

- All Implemented Interfaces:
    MaximumFlowAlgorithm<V,E>

      public class PushRelabelMaximumFlow<V,E>
      extends MaximumFlowAlgorithmBase<V,E>

  Push-relabel maximum flow algorithm designed by Andrew V. Goldberg and Robert Tarjan. Current implementation complexity upper-bound is O(V^3). For more details see: "A new approach to the maximum flow problem" by Andrew V. Goldberg and Robert Tarjan STOC '86: Proceedings of the eighteenth annual ACM symposium on Theory of computing

  Author:
    Alexey Kudinkin

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `class` | `PushRelabelMaximumFlow.EdgeExtension`
    `class` | `PushRelabelMaximumFlow.VertexExtension`

    - ### Nested classes/interfaces inherited from interface org.jgrapht.alg.interfaces.MaximumFlowAlgorithm

      `MaximumFlowAlgorithm.MaximumFlow<V,E>, MaximumFlowAlgorithm.MaximumFlowImpl<V,E>`

  - ### Field Summary

    - ### Fields inherited from class org.jgrapht.alg.flow.MaximumFlowAlgorithmBase

      `DEFAULT_EPSILON`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PushRelabelMaximumFlow(DirectedGraph<V,E> network)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `MaximumFlowAlgorithm.MaximumFlow<V,E>` | `buildMaximumFlow(V source, V sink)` Builds maximum flow for the supplied network flow, for the supplied ${source} and ${sink}
    `void` | `initialize(PushRelabelMaximumFlow.VertexExtension source, PushRelabelMaximumFlow.VertexExtension sink, Queue<PushRelabelMaximumFlow.VertexExtension> active)`
    `protected void` | `pushFlowThrough(PushRelabelMaximumFlow.EdgeExtension ex, double f)`

    - ### Methods inherited from class org.jgrapht.alg.flow.MaximumFlowAlgorithmBase

      `compareFlowTo, composeFlow, edgeExtended, pushFlowThrough, vertexExtended`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### PushRelabelMaximumFlow

          public PushRelabelMaximumFlow(DirectedGraph<V,E> network)

  - ### Method Detail

    - #### initialize

          public void initialize(PushRelabelMaximumFlow.VertexExtension source,
                        PushRelabelMaximumFlow.VertexExtension sink,
                        Queue<PushRelabelMaximumFlow.VertexExtension> active)

    - #### buildMaximumFlow

          public MaximumFlowAlgorithm.MaximumFlow<V,E> buildMaximumFlow(V source,
                                                               V sink)

      Description copied from interface: `MaximumFlowAlgorithm`
      Builds maximum flow for the supplied network flow, for the supplied ${source} and ${sink}
      Parameters:
        `source` - source of the flow inside the network
        `sink` - sink of the flow inside the network
      Returns:
        maximum flow

    - #### pushFlowThrough

          protected void pushFlowThrough(PushRelabelMaximumFlow.EdgeExtension ex,
                             double f)

Copyright © 2016. All rights reserved.