7.7 Extensions to the Maximum-Flow Problem


The Problem: Circulations with Demands

  • Directed graph G = (V, E)
  • Edge capacities c(e), e ∈ E
  • Node supply and demands d(v), v ∈ V:
    • If d(v) > 0: node v has demand of d(v) flow–> The node is a sink and wishes to receive d(v) units more flow than it sends out
    • If d(v) < 0: The node v has a supply of -d(v)–> The node is a source and wishes to send out -d(v) units more flow than it receives
    • If d(v) = 0: Then the node is neither a source nor a sink.
  • A circulation is a function that satisfies:
    • For each e ∈ E: 0 ≤ f(e) ≤ c(e) (capacity condition)
    • For each v ∈ V: fin(v) - fout(v) = d(v)(Demand conditions)
  • Feasibility Problem: We want to know if there exists a circulation that satisfies the just-mentioned conditions
  • If there exists a feasible circulation with demands {d(v)}, then ∑v d(v) =0


Designing And Analyzing an Algorithm for Circulations


  • The problem of finding feasible circulation can be reduced to the problem of finding a maximum s-t flow in a different network.
  • Add new source s and sink t
  • For each v with d(v) < 0, add edge (s, v) with capacity -d(v)
  • For each v with d(v) > 0, add edge (v, t) with capacity d(v)
  • v:d(v)>0d(v) = ∑v:d(v)< 0-d(v). Let's call this common value D.
  • Claim: G has circulation iff G' has max flow of value D
  • Given (V, E, c, d), there does not exist a circulation iff there exists a node partition (A, B) such that:
    • Σv∈B d(v) > cap(A, B) ⇒ demand by nodes in B exceeds supply of nodes in B + max capacity of edges going from A –> B


The Problem: Circulations with Demands And Lower Bounds


  • In many problems, not only do we want to satisfy demands at various nodes, but we also want to enforce the flow to make use of certain edges.
  • That's why we need to place lower bounds on edges as well as the upper bounds restricted by the capacities
  • Feasible circulation
    • Directed graph G = (V, E)
    • Edge capacities c(e) and lower bounds l(e)(Force flow to use certain edges), e ∈ E
    • Node supply and demands d(v), v ∈ V
  • A circulation is a function that satisfies:
    • For each e ∈ E: 0 ≤ l(e) ≤ f(e) ≤ c(e) (capacity)
    • For each v ∈ V: fin(v) - fout(v) = d(v)(conservation)
    • Goal: Decide whether or not there exists a feasible circulation(the circulation that satisfies the above conditions)


Designing And Analyzing an Algorithm with Lower Bounds


  • Strategy: Reduce the problem to the one of finding a circulation with demands but no lower bounds, which can in turn be reduced to the Maximum-Flow Problem.
  • How to proceed?:
    • On each edge, we need to send at least l(e) units of flow.
    • Update demands of both endpoints


I give this section a 7/10.

courses/cs211/winter2012/journals/jeanpaul/chaptersevensectionvii.txt · Last modified: 2012/04/02 16:56 by mugabej
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0