COMP 2711H: Lecture 19

Date: 2024-10-14 22:27:53

Reviewed:

Topic / Chapter:

summary

❓Questions

Notes

Network Flow and Ford-Fulkerson Algorithm
  • Matching (cont.)

    • design an algorithm giving a maximum matching
      • pick any trivial matching: empty or maximal matching
      • if it's not a maximum: search for an augmented path
        • while such path exists: expand the matching
      • finally, if no augmented path can be found
      • it's a maximum matching
    • similar technique: starting with suboptimal solution
      • and keep improving the method
        • πŸ‘¨β€πŸ« still "augmented"
      • until it can't be further improved
      • theorem: if it can't be further improved => it's optimal
  • Network flow

    • problem of interest: network flow
    • directed graph
      • w/ capacity function
      • claim: there are two special vertices
        • source and sink
      • example
graph LR
      a((a))
      b((b))
      c((c))
      d((d))
      a--4-->b
      a--5-->c
      b--6-->d
      b--1-->c
      c--5-->d
- source: <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">a</span></span></span></span>
- sink: <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal">d</span></span></span></span>
  • πŸ‘¨β€πŸ« consider: edge as unidirectional water pipe
    • and capacity: of water flow
  • question: what's the max possible flow from source to sink, s.t. all water reaches sink?
    • πŸ‘¨β€πŸ« name: maximum flow algorithm / max flow
  • from above example: has capacity , thus we can't send flow larger than 4
  • instead of edge: assign capacity to every pair of vertices
    • ~= Dijkstra?
    • now:
  • flow: function
    • : flow from to
  • condition / constraints
      • skew symmetry
      • sending 2 units : same as sending -2 units
      • all except source & sink: indegree = outdegree
      • preservation of flow: water coming out from source = water reaching sink
  • for source:
    • there may be edge to source as well
    • and for sink:
  • solution , flow s.t. it satisfies 3 conditions above:
  • intuition
    • for a walk: total flow that can be pass through it = minimum capacity of an edge in walk
      • e.g. 1 unit across
        • capacity: 4,1,5
    • interestingly: one can send flow in reverse direction, too
      • e.g. 1 unit across
        • capacity: 5,-1,6 respectively
        • as it "cancels" my previous flow
    • formally speaking:
      • if there is flow
        • then
        • and , satisfying condition
    • thus: find a path
      • using only the edges:
  • residual graph of flow :
    • w/ same vertices as
    • any non-zero edges on this graph: can be utilized for more flow
    • upon move :
      • and
  • is there a case: our flow is maximal, but not maximum?
  • Ford-Fulkerson's algorithm

    • basically the idea above
    • start with initial flow as 0
    • while there exists an augmented path from the source to the sink
      1. find an augmenting path using any path-finding algorithms
        • BFS or DFS
      2. determine: amount of flow that can be sent along the path
        • i.e. minimum residual capacity along the edges of the path
      3. increase the flow along the augmented path by determined amount
    • return the maximum flow
  • Proof of correctness

    • first: extend
      • s.t. for a set :
    • and
    • suppose:
      • then,
    • define: cut in : division
      • s.t.
      • what is is : a cut?
          • as for any non- :
          • (due to condition)
          • as sum of flow from any non- vertex: 0
        • , almost by definition
    • similarly, define for vertex group
      • then: (as inequality holds for every elements)
    • a flow is optimal if (can't be further improved)
      • thus: find a cut satisfying the condition
    • let : all set of vertices that an be reached from in residual graph
      • and the rest:
      • as algorithm continued until you can't reach in residual anymore
    • when the algorithm is stuck: there is no edge going
      • if there was: it's reachable, and thus marked
      • as original graph and residual graph: shares vertices, but not edges
        • there "might" be an edge
        • but its non-existence in residual: shows that all its capacity has been used up
    • how about ?
      • in original graph, it might have
      • however: in can't have positive flow as that would add positive edge in residual graph
        • which is edge, impossible
    • finally:
      • thus: the algorithm outputs optimal solution
    • related idea: it also gives minimum capacity with
    • does this algorithm runs forever?
      • if flows doesn't start with 0 / set is of real numbers: yes
        • each step: increases flow at least by one
      • new range of
      • furthermore, upper bound for flow exists: capacity
        • thus it can't run forever
    • πŸ‘¨β€πŸ« in 3711, you make it run for w/ slight modification