Electrical Flows, Laplacian Systems, and Faster Approximation of Maximum Flow in Undirected Graphs

Paul Christiano, Jonathan A. Kelner, Aleksander Madry, Daniel A. Spielman, Shang-Hua Teng

Introduction

The maximum ss-tt flow problem and its dual, the minimum ss-tt cut problem, are two of the most fundamental and extensively studied problems in Operations Research and Optimization . They have many applications (see ) and are often used as subroutines in other algorithms (see ). Many advances have been made in the development of algorithms for this problem (see Goldberg and Rao for an overview). However, for the basic problem of computing or (1−ϵ)(1-\epsilon)-approximating the maximum flow in undirected, unit-capacity graphs with m=O(n)m=O(n) edges, the asymptotically fastest known algorithm is the one developed in 1975 by Even and Tarjan , which takes time O(n3/2)O(n^{3/2}). Despite 35 years of extensive work on the problem, this bound has not been improved.

In this paper, we introduce a new approach to computing approximately maximum ss-tt flows and minimum ss-tt cuts in undirected, capacitated graphs. Using it, we present the first algorithms that break the O(n3/2)O(n^{3/2}) complexity barrier described above. In addition to being the fastest known algorithms for this problem, they are simple to describe and introduce techniques that may be applicable to other problems. In them, we reduce the problem of computing maximum flows subject to capacity constraints to the problem of computing electrical flows in resistor networks. An approximate solution to each electrical flow problem can be found in time O~(m)\widetilde{O}\left(m\right) using recently developed algorithms for solving systems of linear equations in Laplacian matrices .

There is a simple physical intuition that underlies our approach, which we describe here in the case of a graph with unit edge capacities. We begin by thinking of each edge of the input graph as a resistor with resistance one, and we compute the electrical flow that results when we send current from the source ss to the sink tt. These currents obey the flow conservation constraints, but they may not respect the capacities of the edges. To remedy this, we increase the resistance of each edge in proportion to the amount of current flowing through it—thereby penalizing edges that violate their capacities—and compute the electrical flow with these new resistances.

We remark that the results in this paper immediately improve the running time of algorithms that use the computation of an approximately maximum ss-tt flow on an undirected, capacitated graph as a subroutine. For example, combining our work with that of Sherman allows us to achieve the best currently known approximation ratio of O(log⁡n)O(\sqrt{\log{n}}) for the sparsest cut problem in time O~(m+n4/3)\widetilde{O}\left(m+n^{4/3}\right).

We are hopeful that our approach can be extended to directed graphs and can also eventually lead to an algorithm that approximately solves the maximum flow problem in nearly-linear time.

The best previously known algorithms for the problems studied here are due to Goldberg and Rao. In a breakthrough paper, Goldberg and Rao developed an algorithm for computing exact maximum ss-tt flows in directed or undirected capacitated graphs in time O(mmin⁡(n2/3,m1/2)log⁡(n2/m)log⁡U),O(m\min(n^{2/3},m^{1/2})\log(n^{2}/m)\log U), assuming that the edge capacities are integers between 11 and UU. When we are interested in finding (1−ϵ)(1-\epsilon)-approximately maximum ss-tt flow, the dependence on log⁡U\log U can be removed and, by employing the smoothing technique of Karger , one can obtain a running time of

By applying their algorithm to a sparsifier, as constructed by Benczúr and Karger , Goldberg and Rao show how to compute a (1+ϵ)(1+\epsilon)-approximately minimum ss-tt cut in an undirected graph in time

Their work was the culmination of a long line of papers on the problem; we refer the reader to their paper for an extensive survey of earlier developments in algorithms for computing maximum ss-tt flows. In more recent work, Daitch and Spielman showed that fast solvers for Laplacian linear systems could be used to make interior-point algorithms for the maximum flow and minimum-cost flow problems run in time O~(m3/2log⁡U)\widetilde{O}\left(m^{3/2}\log U\right), and Mądry showed that one can approximate a wide range of cut problems, including the minimum ss-tt cut problem, within a polylogarithmic factor in almost linear time.

2 Outline

We begin the technical part of this paper in Section 2 with a review of maximum flows and electrical flows, along with several theorems about them that we will need in the sequel. In Section 3 we give a simplified version of our approximate maximum-flow algorithm that has running time O~(m3/2ϵ−5/2)\widetilde{O}\left(m^{3/2}\epsilon^{-5/2}\right). In Section 4, we will show how to improve the running time of our algorithm to O~(m4/3ϵ−3)\widetilde{O}\left(m^{4/3}\epsilon^{-3}\right); we will then describe how to combine this with existing graph smoothing and sparsification techniques to compute approximately maximum ss-tt flows in time O~(mn1/3ϵ−11/3)\widetilde{O}\left(mn^{1/3}\epsilon^{-11/3}\right) and to approximate the value of such flows in time O~(m+n4/3ϵ−8/3)\widetilde{O}\left(m+n^{4/3}\epsilon^{-8/3}\right). In Section 5, we present a variant of our algorithm that computes approximately minimum ss-tt cuts in time O~(m+n4/3ϵ−8/3)\widetilde{O}\left(m+n^{4/3}\epsilon^{-8/3}\right).

Maximum Flows, Electrical Flows, and Laplacian Systems

We arbitrarily orient each edge in EE; this divides the edges incident to a vertex v∈Vv\in V into the set E+(v)E^{+}(v) of edges oriented towards vv and the set E−(v)E^{-}(v) of edges oriented away from vv. These orientations are merely for notational convenience. We use them to interpret the meaning of a positive flow on an edge. If an edge has positive flow and is in E+(v)E^{+}(v), then the flow is towards vv. Conversely, if it has negative flow then the flow is away from vv. One should keep in mind that our graphs are undirected and that the flow on an edge can go in either direction, regardless of this edge‘s orientation.

We now define our primary objects of study, ss-tt cuts and ss-tt flows.

An ss-tt cut is a partition (S,V∖S)(S,V\setminus S) of the vertices into two disjoint sets such that s∈Ss\in S and t∈V∖St\in V\setminus S. The capacity u(S)u(S) of the cut is defined to be the sum u(S):=∑e∈E(S)ue,u(S):=\sum_{e\in E(S)}u_{e}, where E(S)⊆EE(S)\subseteq E is the set of edges with one endpoint in SS and one endpoint in V∖SV\setminus S.

An ss-tt flow is a function f:E→IRf:E\rightarrow{\rm I\kern-2.0ptR} that obeys the flow-conservation constraints

The value ∣f∣|f| of the flow is defined to be the net flow out of the source vertex, ∣f∣:=∑e∈E−(s)f(e)−∑e∈E+(s)f(e).|f|:=\sum_{e\in E^{-}(s)}f(e)-\sum_{e\in E^{+}(s)}f(e).

It follows easily from the flow conservation constraints that the net flow out of ss is equal to the net flow into tt, so ∣f∣|f| may be interpreted as the amount of flow that is sent from ss to tt.

2 Maximum Flows and Minimum Cuts

We say that an ss-tt flow ff is feasible if ∣f(e)∣≤ue|f(e)|\leq u_{e} for each edge ee, i.e., if the amount of flow routed through any edge does not exceed its capacity. The maximum ss-tt flow problem is that of finding a feasible ss-tt flow in GG of maximum value. We denote a maximum flow in GG (with the given capacities) by f∗f^{*}, and we denote its value by F∗:=∣f∗∣F^{*}:=|f^{*}|. We say that ff is a (1−ϵ)(1-\epsilon)-approximately maximum flow if it is a feasible ss-tt flow of value at least (1−ϵ)F∗(1-\epsilon)F^{*}.

To simplify the exposition, we will take ϵ\epsilon to be a constant independent of mm throughout the paper, and mm will be assumed to be larger than some fixed constant. However, our analysis will go through unchanged as long as ϵ>Ω~(m−1/3)\epsilon>\widetilde{\Omega}{(m^{-1/3}}). In particular, our analysis will apply to all ϵ\epsilon for which our given bounds are faster than the O(m3/2)O(m^{3/2}) time required by existing exact algorithms.

One can easily reduce the problem of finding a (1−ϵ)(1-\epsilon)-approximation to the maximum flow in an arbitrary undirected graph to that of finding a (1−ϵ/2)(1-\epsilon/2)-approximation in a graph in which the ratio of the largest to smallest capacities is polynomially bounded. To do this, one should first compute a crude approximation of the maximum flow in the original graph. For example, one can compute the ss-tt path of maximum bottleneck in time O(m+nlog⁡n)O(m+n\log n) [16, Section 8.6e], where we recall that the bottleneck of a path is the minimum capacity of an edge on that path. If this maximum bottleneck of an ss-tt path is BB, then the maximum flow lies between BB and mBmB. This means that there is a maximum flow in which each edge flows at most mBmB, so all capacities can be decreased to be at most mBmB. On the other hand, if one removes all the edges with capacities less ϵB/2m\epsilon B/2m, the maximum flow can decrease by at most ϵB/2\epsilon B/2. So, we can assume that the minimum capacity is at least ϵB/2m\epsilon B/2m and the maximum is at most BmBm, for a ratio of 2m2/ϵ2m^{2}/\epsilon. Thus, by a simple scaling, we can assume that all edge capacities are integers between 11 and 2m2/ϵ2m^{2}/\epsilon.

The minimum ss-tt cut problem is that of finding the ss-tt cut of minimum capacity. The Max Flow-Min Cut Theorem () states that the capacity of the minimum ss-tt cut is equal to F∗F^{*}, the value of the maximum ss-tt flow.

In particular, the Max Flow-Min Cut Theorem implies that one can use the capacity of any ss-tt cut as an upper bound on the value of any feasible ss-tt flow, and that the task of finding the value of the maximum flow is equivalent to the task of finding the capacity of a minimal ss-tt cut.

One should note, however, that the above equivalence applies only to the values of the flow and the capacity and that although one can easily obtain a minimum ss-tt cut of a graph given its maximum flow, there is no known procedure that obtains a maximum flow from minimum ss-tt cut more efficiently than by just computing the maximum flow from a scratch.

3 Electrical Flows and the Nearly Linear Time Laplacian Solver

In this section, we review some basic facts about electrical flows in networks of resistors and present a theorem that allows us to quickly approximate these flows. For an in-depth treatment of the background material, we refer the reader to .

We begin by assigning a resistance re>0r_{e}>0 to each edge e∈Ee\in E, and we collect these resistances into a vector r∈IRm\boldsymbol{\mathit{r}}\in{\rm I\kern-2.0ptR}^{m}. For a given ss-tt flow ff, we define its energy (with respect to r\boldsymbol{\mathit{r}}) as

The electrical flow of value FF (with respect to r\boldsymbol{\mathit{r}}, from ss to tt) is the flow that minimizes Er(f)\mathcal{E}_{\boldsymbol{\mathit{r}}}(f) among all ss-tt flows ff of value FF. This flow is easily shown to be unique, and we note that it need not respect the capacity constraints.

From a physical point of view, the electrical flow of value one corresponds to the current that is induced in GG if we view it as an electrical circuit in which each edge ee has resistance of rer_{e}, and we send one unit of current from ss to tt, say by attaching ss to a current source and tt to ground.

While finding the maximum ss-tt flow corresponds to solving a linear program, we can compute the electrical flow by solving a system of linear equations. To do so, we introduce the edge-vertex incidence matrix B\boldsymbol{\mathit{B}}, which is an n×mn\times m matrix with rows indexed by vertices and columns indexed by edges, such that

If we treat our flow ff as a vector f∈IRm\boldsymbol{\mathit{f}}\in{\rm I\kern-2.0ptR}^{m}, where we use the orientations of the edges to determine the signs of the coordinates, the vthv^{\text{th}} entry of the vector BTf\boldsymbol{\mathit{B}}^{T}\boldsymbol{\mathit{f}} will be the difference between the flow out of and the flow into vertex vv. As such, the constraints that one unit of flow is sent from ss to tt and that flow is conserved at all other vertices can be written as

where χs,t\boldsymbol{\mathit{\chi_{s,t}}} is the vector with a 11 in the coordinate corresponding to ss, a −1-1 in the coordinate corresponding to tt, and all other coordinates equal to 0.

We define the (weighted) Laplacian L\boldsymbol{\mathit{L}} of GG (with respect to the resistances r\boldsymbol{\mathit{r}}) to be the n×nn\times n matrix

where C\boldsymbol{\mathit{C}} is the m×mm\times m diagonal matrix with Ce,e=ce=1/re\boldsymbol{\mathit{C}}_{e,e}=c_{e}=1/r_{e}. One can easily check that its entries are given by

Let R=C−1\boldsymbol{\mathit{R}}=\boldsymbol{\mathit{C}}^{-1} be the diagonal matrix with Re,e=re\boldsymbol{\mathit{R}}_{e,e}=r_{e}. The energy of a flow f\boldsymbol{\mathit{f}} is given by

The electrical flow of value 1 thus corresponds to the vector f\boldsymbol{\mathit{f}} that minimizes ∥R1/2f∥2\left\|\boldsymbol{\mathit{R}}^{1/2}\boldsymbol{\mathit{f}}\right\|^{2} subject to Bf=χs,t.\boldsymbol{\mathit{B}}\boldsymbol{\mathit{f}}=\boldsymbol{\mathit{\chi_{s,t}}}. If ff is an electrical flow, it is well known that it is a potential flow, which means that there is a vector ϕ∈IRV\boldsymbol{\mathit{\phi}}\in{\rm I\kern-2.0ptR}^{V} such that

Applying Bf=χs,t\boldsymbol{\mathit{B}}\boldsymbol{\mathit{f}}=\boldsymbol{\mathit{\chi_{s,t}}}, we have Bf=BCBTϕ=χs,t\boldsymbol{\mathit{B}}\boldsymbol{\mathit{f}}=\boldsymbol{\mathit{B}}\boldsymbol{\mathit{C}}\boldsymbol{\mathit{B}}^{T}\boldsymbol{\mathit{\phi}}=\boldsymbol{\mathit{\chi_{s,t}}}, and hence the vertex potentials are given by

where L†{\boldsymbol{\mathit{L}}}^{\dagger} denotes the Moore-Penrose pseudo-inverse of L\boldsymbol{\mathit{L}}. Thus, the electrical flow f\boldsymbol{\mathit{f}} is given by the expression

This lets us rewrite the energy of the electrical flow of value 1 as

3.2 Effective ss-tt Resistance and Effective ss-tt Conductance

Our analysis will make repeated use of two basic quantities from the theory of electrical networks, the effective ss-tt resistance and effective ss-tt conductance.

Let ff be the electrical ss-tt flow of value 1, and let ϕ\boldsymbol{\mathit{\phi}} be its vector of vertex potentials. The effective ss-tt resistance of GG with respect to the resistances r\boldsymbol{\mathit{r}} is given by

Using our linear algebraic description of the electrical flow and Equation (1), we have

This gives us an alternative description of the effective ss-tt resistance as the energy of the electrical flow of value 1.

It will sometimes be convenient to use the related notion of the effective ss-tt conductance of GG with respect to the resistances r\boldsymbol{\mathit{r}}, which we define by

We note that this is equal to the value of the electrical flow in which ϕ(s)−ϕ(t)=1\phi(s)-\phi(t)=1.

3.3 Approximately Computing Electrical Flows

From the algorithmic point of view, the crucial property of the Laplacian L\boldsymbol{\mathit{L}} is that it is symmetric and diagonally dominant, i.e., for any uu, ∑v′≠u∣Lu,v∣≤Lu,v\sum_{v^{\prime}\neq u}|\boldsymbol{\mathit{L}}_{u,v}|\leq\boldsymbol{\mathit{L}}_{u,v}. This allows us to use the result of Koutis, Miller, and Peng , which builds on the work of Spielman and Teng , to approximately solve our linear system in nearly-linear time. By rounding the approximate solution to a flow, we can prove the following theorem (see Appendix A for a proof).

Er(f~)≤(1+δ)Er(f)\mathcal{E}_{\boldsymbol{\mathit{r}}}(\widetilde{f})\leq(1+\delta)\mathcal{E}_{\boldsymbol{\mathit{r}}}(f), where ff is the electrical ss-tt flow of value FF, and

We will refer to a flow meeting the above conditions as a δ\delta-approximate electrical flow.

4 How the Resistance of an Edge Influences the Effective Resistance

For any G=(V,E)G=(V,E) and any vector of resistances r\boldsymbol{\mathit{r}},

Our analysis of the O~(m4/3)\widetilde{O}\left(m^{4/3}\right) algorithm will require the following lemma, which gives a lower bound on the effect that increasing the resistance of an edge can have on the effective resistance.

Let ff be an electrical ss-tt flow on a graph GG with resistances r\boldsymbol{\mathit{r}}. Suppose that some edge h=(i,j)h=(i,j) accounts for a β\beta fraction of the total energy of ff, i.e.,

For some γ>0\gamma>0, define new resistances r′\boldsymbol{\mathit{r}}^{\prime} such that rh′=γrhr_{h}^{\prime}=\gamma r_{h}, and re′=rer_{e}^{\prime}=r_{e} for all e≠he\neq h. Then

If we ’’cut‘‘ the edge hh by setting γ=∞\gamma=\infty, then

If we slightly increase the effective resistance of the edge hh by setting γ=(1+ϵ)\gamma=(1+\epsilon) with ϵ≤1\epsilon\leq 1, then

The assumption that hh contributes a β\beta fraction of the total energy implies that, in the above expression,

A Simple O~(m3/2ϵ−5/2)\widetilde{O}\left(m^{3/2}\epsilon^{-5/2}\right)-Time Flow Algorithm

Before describing our O~(m4/3ϵ−3)\widetilde{O}\left(m^{4/3}\epsilon^{-3}\right) algorithm, we will describe a simpler algorithm that finds a (1−ϵ)(1-\epsilon)-approximately maximum flow in time O~(m3/2ϵ−5/2)\widetilde{O}\left(m^{3/2}\epsilon^{-5/2}\right). Our final algorithm will be obtained by carefully modifying the one described here.

The algorithm will employ the multiplicative weights update method . In our setting, one can understand the multiplicative weights method as a way of taking an algorithm that solves a flow problem very crudely and, by calling it repeatedly, converts it into an algorithm that gives a good approximation for the maximum flow in GG. The crude algorithm is called as a black-box, so it can be thought of as an oracle that answers a certain type of query.

In this section, we provide a self-contained description of the multiplicative weights method when it is specialized to our setting. In Section 3.1, we will describe the requirements on the oracle, give an algorithm that iteratively uses it to obtain a (1−ϵ)(1-\epsilon)-approximately maximum flow, and state how the number of iterations required by the algorithm depends on the properties of the oracle. In Section 3.2, we will describe how to implement the oracle using electrical flows. Finally, in Section 3.3 we will provide a simple proof of the convergence bound set forth in Section 3.1.

For an ss-tt flow ff, we define the congestion of an edge ee to be the ratio

between the flow on an edge and its capacity. In particular, an ss-tt flow is feasible if and only if congf(e)≤1\mathsf{cong}_{f}(e)\leq 1 for all e∈Ee\in E.

The multiplicative weights method will use a subroutine that we will refer to as an (ϵ,ρ)(\epsilon,\rho)-oracle. This oracle will take as input a number FF and a vector w\boldsymbol{\mathit{w}} of edge weights. For any F≤F∗F\leq F^{*}, we know that there exists a way to route FF units of flow in GG so that all of the edge capacities are respected. Our oracle will provide a weaker guarantee: When F≤F∗F\leq F^{*}, it will satisfy all of the capacity constraints up to a multiplicative factor of ρ\rho, Up to polynomial factors in 1/ϵ1/\epsilon, the value of ρ\rho will be Θ(m)\Theta(\sqrt{m}) in this section, and Θ~(m1/3)\widetilde{\Theta}(m^{1/3}) later in the paper. and it will satisfy the average of these constraints, weighted by the wiw_{i}, up to a (much better) multiplicative factor of (1+ϵ)(1+\epsilon). When F>F∗F>F^{*}, the oracle will either output an ss-tt flow satisfing the conditions above, or it will return ’’fail‘‘.

Formally, we will use the following definition:

For ϵ>0\epsilon>0 and ρ>0\rho>0, an (ϵ,ρ)(\epsilon,\rho) oracle is an algorithm that, given a real number F>0F>0 and a vector w\boldsymbol{\mathit{w}} of edge weights with we≥1w_{e}\geq 1 for all ee, returns an ss-tt flow ff such that:

If F≤F∗F\leq F^{*}, then it outputs an ss-tt flow ff satisfying:

∑ewecongf(e)≤(1+ϵ)∣w∣1\sum_{e}w_{e}\mathsf{cong}_{f}(e)\leq(1+\epsilon)|\boldsymbol{\mathit{w}}|_{1}, where ∣w∣1:=∑ewe|\boldsymbol{\mathit{w}}|_{1}:=\sum_{e}w_{e};

If F>F∗F>F^{*}, then it either outputs a flow ff satisfying conditions (i), (ii), (iii) or outputs ’’fail‘‘.

Our algorithm will be given a flow value FF as an input. If F≤F∗F\leq F^{*}, it will return a flow of value at least (1−O(ϵ))F(1-O(\epsilon))F. If F>F∗F>F^{*}, it will either return a flow of value at least (1−O(ϵ))F(1-O(\epsilon))F (which may occur if FF is only slightly greater than F∗F^{*}) or it will return ’’fail‘‘. This allows us to find a (1−O(ϵ))(1-O(\epsilon))-approximation of F∗F^{*} using binary search. As outlined in Section 2.2, we can obtain a crude bound BB in time O(m+nlog⁡n)O(m+n\log n) such that B≤F∗≤mBB\leq F^{*}\leq mB, so the binary search will only call our algorithm a logarithmic number of times.

In Figure 1, we present our simple algorithm, which applies the multiplicative weights update routine to approximate the maximum flow by calling an (ϵ,ρ)(\epsilon,\rho)-flow oracle. The algorithm initializes all of the weights to 11 and calls the oracle with these weights. The call returns a flow that satisfies conditions (i), (ii), and (iii) defined above. It then multiplies the weight of each edge ee by (1+ϵρcongfi(e))(1+\frac{\epsilon}{\rho}\mathsf{cong}_{f^{i}}(e)). Note that if the congestion of an edge is poor, say close to ρ\rho, then its weight will increase by a factor of (1+ϵ)(1+\epsilon). On the other hand, if the flow on an edge is no more than its capacity, then the new weight of the edge is essentially unchanged. This will put a larger fraction of the weight on the violated constraints, so the oracle will be forced to return a solution that comes closer to satisfying them (possibly at the expense of other edges). In the end, we return the average of all of the flows as our answer.

The key point in analyzing this algorithm is that the total weight on GG does not grow too quickly, due to the average congestion constraint on the flows returned by the oracle O\mathit{O}. However, if an edge ee consistently suffers large congestion in a sequence of flows returned by O\mathit{O}, then its weight increases rapidly relative to the total weight, which will significantly penalize any further congestion the edge in the subsequent flows. If this were to occur too many times, its weight would exceed the total weight, which obviously cannot occur. In Section 3.3, we will prove the following theorem by showing that our algorithm converges in 2ρln⁡m/ϵ22\rho\ln m/\epsilon^{2} iterations.

For any 0<ϵ<1/20<\epsilon<1/2 and ρ>0\rho>0, given an (ϵ,ρ)(\epsilon,\rho)-flow oracle with running time T(m,1/ϵ,U)T(m,1/\epsilon,U), one can obtain an algorithm that computes a (1−O(ϵ))(1-O(\epsilon))-approximate maximum flow in a capacitated, undirected graph in time O~(ρϵ−2⋅T(m,1/ϵ,U))\widetilde{O}\left(\rho\epsilon^{-2}\cdot T(m,1/\epsilon,U)\right).

Note that the number of iterations of the algorithm above grows linearly with the value of ρ\rho, which we call the width\emph{width} of the oracle. Intuitively, this should be necessary because the final flow across an edge ee is equal to the average of the flows sent over it by all fif^{i}. If we send ρ⋅ue\rho\cdot u_{e} units of flow across the edge ee in some step, then we will need at least Ω(ρ)\Omega(\rho) iterations to drop the average to 11. Strictly speaking, it is possible that we could do better than this by sending a large amount of flow across the edge in the opposite direction. However, nothing in our algorithm aims to obtain this kind of cancellation, so we shouldn’t expect to be able to systematically exploit it.

2 Constructing an Oracle of Width 3​m/ϵ3\sqrt{m/\epsilon} Using Electrical Flows

Given Theorem 3.2, our problem is thus reduced to designing an efficient oracle that has a small width. In this subsection, we will give simple O~(mlog⁡ϵ−1)\widetilde{O}\left(m\log\epsilon^{-1}\right) time implementation of an (ϵ,3m/ϵ)(\epsilon,3\sqrt{m/\epsilon})-flow oracle for any 0<ϵ<1/20<\epsilon<1/2. By Theorem 3.2, this will immediately yield an O~(m3/2ϵ−5/2)\widetilde{O}\left(m^{3/2}\epsilon^{-5/2}\right) time algorithm for finding an approximately maximum flow.

for each edge ee, and we use the procedure from Theorem 2.3 to approximate the electrical flow that sends FF units of flow from ss to tt in a network whose resistances are given by the rer_{e}. The pseudocode for this oracle is shown in Figure 2.

We now show that the resulting flow f~\widetilde{f} has the properties required by Definition 3.1. Since ∣f~∣=F|\widetilde{f}|=F by construction, we only need to demonstrate the bounds on the average congestion (weighted by the wew_{e}) and the maximum congestion. We will use the basic fact that electrical flows minimize the energy of the flow. Our analysis will then compare the energy of f~\widetilde{f} with that of an optimal max flow. Intuitively, the wew_{e} term in Equation (2) guarantees the bound on the average congestion, while the ϵ∣w∣1/(3m)\epsilon|\boldsymbol{\mathit{w}}|_{1}/(3m) term guarantees the bound on the maximum congestion.

Suppose f∗f^{*} is a maximum flow. By its feasibility, congf∗(e)≤1\mathsf{cong}_{f^{*}}(e)\leq 1 for all ee, so

Since the electrical flow minimizes the energy, Er(f∗)\mathcal{E}_{\boldsymbol{\mathit{r}}}(f^{*}) is an upper bound on the energy of the electrical flow of value FF whenever F≤F∗F\leq F^{*}. In this case, Theorem 2.3 implies that our (ϵ/3)(\epsilon/3)-approximate electrical flow satisfies

This shows that our oracle will never output ’’fail‘‘ when F≤F∗F\leq F^{*}. It thus suffices to show that the energy bound Er(f~)>(1+ϵ)∣w∣1\mathcal{E}_{\boldsymbol{\mathit{r}}}(\widetilde{f})>(1+\epsilon)|\boldsymbol{\mathit{w}}|_{1}, which holds whenever the algorithm does not return ’’fail‘‘, implies the required bounds on the average and worst-case congestion. To see this, we note that the energy bound implies that

which is the required bound on the average congestion. Furthermore, Equation (5) and the fact that ϵ<1/2\epsilon<1/2 implies that

for all ee, which establishes the required bound on the maximum congestion. So our algorithm implements an (ϵ,3m/ϵ)(\epsilon,3\sqrt{m/\epsilon})-oracle, as desired.

To bound the running time of this oracle, recall that we can assume all edge capacities lie between 11 and U=m2/ϵU=m^{2}/\epsilon and compute

This establishes an upper bound on the ratio of the largest resistance to the smallest resistance. Thus, by Theorem 2.3, the running time of this implementation is O~(mlog⁡R/ϵ)=O~(mlog⁡1/ϵ)\widetilde{O}\left(m\log R/\epsilon\right)=\widetilde{O}\left(m\log 1/\epsilon\right). Combining this with Theorem 3.2, we have shown

For any 0<ϵ<1/20<\epsilon<1/2, the maximum flow problem can be (1−ϵ)(1-\epsilon)-approximated in O~(m3/2ϵ−5/2)\widetilde{O}\left(m^{3/2}\epsilon^{-5/2}\right) time.

3 The Convergence of Multiplicative Weights

In this section, we prove Theorem 3.2 by analyzing the multiplicative weights update algorithm shown in Figure 1.

Our analysis will be based on the potential function μi:=∣wi∣1\mu_{i}:=|\boldsymbol{\mathit{w}}^{i}|_{1}. Clearly, μ0=m\mu_{0}=m and this potential only increases during the course of the algorithm. It follows from condition (1.ii) of Definition 3.1 that if we run the (ϵ,ρ)(\epsilon,\rho)-oracle O\mathit{O} with F=F∗F=F^{*}, then

We start by upper bounding the total growth of μi\mu_{i} thoughout the algorithm.

In particular, ∥wN∥1=μN≤mexp⁡((1+ϵ)ϵρN)=nO(1/ϵ)\|\boldsymbol{\mathit{w}}^{N}\|_{1}=\mu_{N}\leq m\exp\left(\frac{(1+\epsilon)\epsilon}{\rho}N\right)=n^{O(1/\epsilon)}.

where the last inequality follows from (9). Thus, we can conclude that

One of the consequences of the above lemma is that whenever we make a call to the oracle, the total weight ∥wi∥1\|\boldsymbol{\mathit{w}}^{i}\|_{1} is at most nO(1/ϵ)n^{O(1/\epsilon)}. Thus, the running time of our algorithm is O~(ρϵ−2⋅T(m,1/ϵ,U,mO(1/ϵ)))\widetilde{O}\left(\rho\epsilon^{-2}\cdot T(m,1/\epsilon,U,m^{O(1/\epsilon)})\right) as claimed.

Next, we bound the final weight weNw_{e}^{N} of a particular edge ee with the congestion congf‾(e)\mathsf{cong}_{\overline{f}}(e) that this edge suffers in our final flow f‾\overline{f}.

In particular, weN≥exp⁡((1+ϵ)ϵN(1−ϵ)ρcongf‾(e))w_{e}^{N}\geq\exp\left(\frac{(1+\epsilon)\epsilon N}{(1-\epsilon)\rho}\mathsf{cong}_{\overline{f}}(e)\right).

where we used (10) and that for any 1/2>ϵ>01/2>\epsilon>0 and x∈x\in:

Finally, by Lemmas 3.4 and 3.5, we conclude that for any edge ee,

for every edge ee. Thus, we see that f‾\overline{f} is a feasible ss-tt flow and, since each fif^{i} has throughput F∗F^{*}, the throughput ∣f‾∣|\overline{f}| of f‾\overline{f} is (1−ϵ)2(1+ϵ)F∗≥(1−O(ϵ))F∗\frac{(1-\epsilon)^{2}}{(1+\epsilon)}F^{*}\geq(1-O(\epsilon))F^{*} for 1/2>ϵ>01/2>\epsilon>0, as desired.

An O~(mn1/3ϵ−11/3)\widetilde{O}\left(mn^{1/3}\epsilon^{-11/3}\right) Algorithm for Approximate Maximum Flow

In this section, we modify our algorithm to run in time O~(m4/3ϵ−3)\widetilde{O}\left(m^{4/3}\epsilon^{-3}\right). We then combine this with the smoothing and sampling techniques of Karger to obtain an O~(mn1/3ϵ−11/3)\widetilde{O}\left(mn^{1/3}\epsilon^{-11/3}\right)-time algorithm.

For fixed ϵ\epsilon, the algorithm in the previous section required us to compute O~(m1/2)\widetilde{O}\left(m^{1/2}\right) electrical flows, each of which took time O~(m)\widetilde{O}\left(m\right), which led to a running time of O~(m3/2)\widetilde{O}\left(m^{3/2}\right). To reduce this to O~(m4/3)\widetilde{O}\left(m^{4/3}\right), we‘ll show how to find an approximate flow while computing only O~(m1/3)\widetilde{O}\left(m^{1/3}\right) electrical flows.

Our analysis of the oracle from Section 3.2 was fairly simplistic, and one might hope to improve the running time of the algorithm by proving a tighter bound on the width. Unfortunately, the graph in Figure 1 shows that our analysis was essentially tight. The graph consists of kk parallel paths of length kk connecting ss to tt, along with a single edge ee that directly connects ss to tt. The max flow in this graph is k+1k+1. In the first call made to the oracle by the multiplicative weights routine, all of the edges will have the same resistance. In this case, the electrical flow of value k+1k+1 will send (k+1)/2k(k+1)/2k units of flow along each of the kk paths and (k+1)/2(k+1)/2 units of flow across ee. Since the graph has m=Θ(k2)m=\Theta(k^{2}), the width of the oracle in this case is Θ(m1/2)\Theta(m^{1/2}).

The above example shows that it is possible for the electrical flow returned by the oracle to exceed the edge capacities by Θ(m1/2)\Theta(m^{1/2}). However, we note that if one removes the edge ee from the graph in Figure 1, the electrical flow on the resulting graph is much better behaved, but the value of the maximum flow is only very slightly reduced. This demonstrates a phenomenon that will be central to our improved algorithm: while instances in which the electrical flow sends a huge amount of flow over some edges exist, they are somewhat fragile, and they are often drastically improved by removing the bad edges.

This motivates us to modify our algorithm as follows. We‘ll set ρ\rho to be some value smaller than the actual worst-case bound of O~(m1/2)\widetilde{O}\left(m^{1/2}\right). (It will end up being O~(m1/3)\widetilde{O}\left(m^{1/3}\right).) The oracle will begin by computing an electrical flow as before. However, when this electrical flow exceeds the capacity of some edge ee by a factor greater than ρ\rho, we‘ll remove ee from the graph and try again, keeping all of the other weights the same. We‘ll repeat this process until we obtain a flow in which all edges flow at most a factor of ρ\rho times their capacity (or some failure condition is reached), and we‘ll use this flow in our multiplicative weights routine. When the oracle removes an edge, it is added to a set HH of forbidden edges. These edges will be permanently removed from the graph, i.e., they will not be included in the graphs supplied to future invocations of the oracle.

In Figures 3 and 4, we present the modified versions of the oracle and overall algorithm, where we have highlighted the parts that have changed from the simpler version shown in Figures 1 and 2.

2 Analysis of the New Algorithm

Before proceeding to a formal analysis of the new algorithm, it will be helpful to examine what is already guaranteed by the analysis from Section 3, and what we‘ll need to show to demonstrate the algorithm‘s correctness and bound its running time.

We first note that, by construction, the congestion of any edge in the flow f~\widetilde{f} returned by the modified oracle from Figure 3 will be bounded by ρ\rho. Furthermore, it enforces the bound Er(f~)≤(1+ϵ)∣w∣1\mathcal{E}_{\boldsymbol{\mathit{r}}}(\widetilde{f})\leq(1+\epsilon)|\boldsymbol{\mathit{w}}|_{1}; by Equations (4), (6), and (7) in Section 3.2, this guarantees that f~\widetilde{f} will meet the weighted average congestion bound required for a (ϵ,ρ)(\epsilon,\rho)-oracle. So, as long as the modified oracle always successfully returns a flow, it will function as an (ϵ,ρ)(\epsilon,\rho)-oracle, and our analysis from Section 3 will show that the multiplicative update scheme employed by our algorithm will yield an approximate maximum flow after O~(ρ)\widetilde{O}\left(\rho\right) iterations.

Our problem is thus reduced to understanding the behavior of the modified oracle. To prove correctness, we will need to show that whenever the modified oracle is called with F≤F∗F\leq F^{*}, it will return some flow f~\widetilde{f} (as opposed to returning ’’fail‘‘). To bound the running time, we will need to provide an upper bound on the total number of electrical flows computed by the modified oracle throughout the execution of the algorithm.

To this end, we will show the following upper bound on the cardinality ∣H∣|H| and the capacity u(H)u(H) of the set of forbidden edges, whose proof we postpone until the next section:

Throughout the execution of the algorithm,

If we plug in the value ρ=(8m1/3ln⁡1/3m)/ϵ\rho=(8m^{1/3}\ln^{1/3}m)/\epsilon used by the algorithm, Lemma 4.1 gives the bounds ∣H∣≤1532(mln⁡m)1/3|H|\leq\frac{15}{32}(m\ln m)^{1/3} and u(H)≤ 15256ϵF<ϵF/12u(H)\leq\ \frac{15}{256}\epsilon F<\epsilon F/12.

Given the above lemma, it is now straightforward to show the following theorem, which establishes the correctness and bounds the running time of our algorithm.

For any 0<ϵ<1/20<\epsilon<1/2, if F≤F∗F\leq F^{*} the algorithm in Figure 4 will return a feasible ss-tt flow f‾\overline{f} of value ∣f‾∣=(1−O(ϵ))F|\overline{f}|=(1-O(\epsilon))F in time O~(m4/3ϵ−3)\widetilde{O}\left(m^{4/3}\epsilon^{-3}\right).

To bound the running time, we note that, whenever we invoke the algorithm from Theorem 2.3 , we either advance the number of iterations or we increase the cardinality of HH, so the number of linear systems we solve is at most N+∣H∣≤N+1532(mln⁡m)1/3N+|H|\leq N+\frac{15}{32}(m\ln m)^{1/3}.

Equation (8) implies that the value of RR from Theorem 2.3 is O((m/ϵ)O(1))O((m/\epsilon)^{O(1)}), so solving each linear system takes time at most O~(mlog⁡1/ϵ)\widetilde{O}\left(m\log 1/\epsilon\right). This gives an overall running time of

It thus remains to prove correctness. For this, we need to show that if F≤F∗F\leq F^{*}, then the oracle does not return ’’fail‘‘, which would occur if we disconnect ss from tt or if Er(f~)>(1+ϵ)∣w∣1\mathcal{E}_{\boldsymbol{\mathit{r}}}(\widetilde{f})>(1+\epsilon)|\boldsymbol{\mathit{w}}|_{1}. By Lemma 4.1 and the comment following it, we know that throughout the whole algorithm GHG_{H} has maximum flow value of at least F∗−ϵF/12≥(1−ϵ/12)FF^{*}-\epsilon F/12\geq\left(1-\epsilon/12\right)F and thus, in particular, we will never disconnect ss from tt.

Furthermore, this implies that there exists a feasible flow in our graph of value (1−ϵ/12)F\left(1-\epsilon/12\right)F, even after we have removed the edges in HH. There is thus a flow of value FF in which every edge has congestion at most 1/(1−ϵ/12)1/\left(1-\epsilon/12\right). We can therefore use the argument from Section 3.2 (Equation (3) and the lines directly preceding it) to show that we always have

The above theorem allows us to apply the binary search strategy that we used in Section 3.1. This yields our main theorem:

For any 0<ϵ<1/20<\epsilon<1/2, the maximum flow problem can be (1−ϵ)(1-\epsilon)-approximated in O~(m4/3ϵ−3)\widetilde{O}\left(m^{4/3}\epsilon^{-3}\right) time.

3 The Proof of Lemma 4.1

All that remains is to prove the bounds given by Lemma 4.1 on the cardinality and capacity of HH. To do so, we will use the effective resistance of the circuits on which we compute electrical flows as a potential function. The key insight is that we only cut an edge when its flow accounts for a nontrivial fraction of the energy of the electrical flow, and that cutting such an edge will cause a substantial change in the effective resistance. Combining this with a bound on how much the effective resistance can change during the execution of the algorithm will guarantee that we won‘t cut too many edges.

Let rj\boldsymbol{\mathit{r}}^{j} be the resistances used in the jthj^{\text{th}} electrical flow computed during the execution of the algorithm Note that rj\boldsymbol{\mathit{r}}^{j} is not just the set of resistances arising from wj\boldsymbol{\mathit{w}}^{j}, since a single call to the oracle may compute multiple electrical flows as edges are added to HH.. If an edge ee is not in EE or if ee has been added to HH by step jj, set rej=∞r^{j}_{e}=\infty. We define the potential function

where frjf_{\boldsymbol{\mathit{r}}^{j}} is the (exact) electrical flow of value 1 arising from rj\boldsymbol{\mathit{r}}^{j}. Lemma 4.1 will follow easily from:

Φ(j)\Phi(j) never decreases during the execution of the algorithm.

If we add an edge to HH between steps j−1j-1 and jj, then (1−ϵρ25m)Φ(j)>Φ(j−1)(1-\frac{\epsilon\rho^{2}}{5m})\Phi(j)>\Phi(j-1).

The only way that the resistance rejr^{j}_{e} of an edge ee can change is if the weight wew_{e} is increased by the multiplicative weights routine, or if ee is added to HH so that rejr^{j}_{e} is set to ∞\infty. As such, the resistances are nondecreasing during the execution of the algorithm. By Rayleigh Monotonicity (Corollary 2.5), this implies that the effective resistance is nondecreasing as well.

Proof of (2)

In the first linear system, H=∅H=\emptyset and re1=1+ϵ/3ue2r^{1}_{e}=\frac{1+\epsilon/3}{u_{e}^{2}} for all e∈Ee\in E. Let (S,V∖S)(S,V\setminus S) be the minimum ss-tt cut of GG. By the Max Flow-Min Cut Theorem (), we know that the capacity u(S)=∑e∈E(S)ueu(S)=\sum_{e\in E(S)}u_{e} of this cut is equal to F∗F^{*}. In particular,

for all e∈E(S)e\in E(S). As fr1f_{\boldsymbol{\mathit{r}}^{1}} is an electrical ss-tt flow of value 1, it sends 1 unit of net flow across (S,V∖S)(S,V\setminus S); so, some edge e′∈E(S)e^{\prime}\in E(S) must have fr1(e′)≥1/mf_{\boldsymbol{\mathit{r}}^{1}}(e^{\prime})\geq 1/m. This gives

Since F∗≤mFF^{*}\leq mF by assumption, the desired inequality follows.

Proof of (3)

Suppose we add the edge hh to HH between steps j−1j-1 and jj. We will show that hh accounts for a substantial fraction of the total energy of the electrical flow with respect to the resistances rj−1\boldsymbol{\mathit{r}}^{j-1}, and our result will then follow from Lemma 2.6.

Let w\boldsymbol{\mathit{w}} be the weights used at step j−1j-1, and let f~\widetilde{f} be the flow we computed in step j−1j-1. Because we added hh to HH, we know that congf~(h)>ρ\mathsf{cong}_{\widetilde{f}}(h)>\rho. Since our algorithm did not return ’’fail‘‘ after computing this f~\widetilde{f}, we must have that

Using the definition of rhj−1r^{j-1}_{h}, the fact that congf~(h)>ρ\mathsf{cong}_{\widetilde{f}}(h)>\rho, and Equation (12), we obtain:

The above inequalities establish that edge hh accounts for more than a ϵρ23(1+ϵ)m\frac{\epsilon\rho^{2}}{3(1+\epsilon)m} fraction of the total energy Eri(f~)\mathcal{E}_{\boldsymbol{\mathit{r}}^{i}}(\widetilde{f}) of the flow f~\widetilde{f}.

The flow f~\widetilde{f} is the approximate electrical flow computed by our algorithm, but our argument will require that an inequality like this holds in the exact electrical flow frj−1f_{\boldsymbol{\mathit{r}}^{j-1}}. This is guaranteed by part bb of Theorem 2.3, which, along with the facts that Er(f~)≥Er(frj−1)\mathcal{E}_{\boldsymbol{\mathit{r}}}(\widetilde{f})\geq\mathcal{E}_{\boldsymbol{\mathit{r}}}(f_{\boldsymbol{\mathit{r}}^{j-1}}), ρ≤1\rho\leq 1, and ϵ<1/2\epsilon<1/2, gives us that

Let kk be the cardinality of the set HH at the end of the algorithm. Let f~\widetilde{f} be the flow that was produced by our algorithm just before kk-th edge was added to HH, let jj be the time when this flow was output, and let w\boldsymbol{\mathit{w}} be the corresponding weights.

As the energy required by an ss-tt flow scales with the square of the value of the flow,

By the construction of our algorithm, it must have been the case that Erj(f~)≤(1+ϵ)∣w∣1\mathcal{E}_{\boldsymbol{\mathit{r}}^{j}}(\widetilde{f})\leq(1+\epsilon)|\boldsymbol{\mathit{w}}|_{1}. This inequality together with equation (13) and part 2 of Lemma 4.4 implies that

Now, since up to time jj we had k−1k-1 additions of edges to HH, parts 1 and 3 of Lemma 4.4, and Lemma 3.4 imply that

where the last inequality used the fact that ϵ<1/2\epsilon<1/2. Rearranging the terms in the above inequality gives us that

where we used the inequalities ϵ<1/2\epsilon<1/2 and log⁡(1−c)<−c\log(1-c)<-c for all c∈(0,1)c\in(0,1). This establishes our bound on cardinality of the set HH.

To bound the value of u(H)u(H), let us note that we add an edge ee to HH only when we send at least ρue\rho u_{e} units of flow across it. But since we never flow more than FF units across any single edge, we have that ue≤F/ρu_{e}\leq F/\rho. Therefore, we may conclude that

4 Improving the Running Time to O~(mn1/3ϵ−11/3)\widetilde{O}\left(mn^{1/3}\epsilon^{-11/3}\right)

We can now combine our algorithm with existing methods to further improve its running time. In (see also ), Karger presented a technique, which he called ’’graph smoothing‘‘, that allows one to use random sampling to speed up an exact or (1−ϵ)(1-\epsilon)-approximate flow algorithm. More precisely, his techniques yield the following theorem, which is implicit in and stated in a more similar form in :

Let T(m,n,ϵ)T(m,n,\epsilon) be the time needed to find a (1−ϵ)(1-\epsilon)-approximately maximum flow in an undirected, capacitated graph with mm edges and nn vertices. Then one can obtain a (1−ϵ)(1-\epsilon)-approximately maximal flow in such a graph in time O~(ϵ2m/n⋅T(O~(nϵ−2),n,Ω(ϵ)))\widetilde{O}\left(\epsilon^{2}m/n\cdot T(\widetilde{O}\left(n\epsilon^{-2}\right),n,\Omega(\epsilon))\right).

By applying the above theorem to our O~(m4/3ϵ−3)\widetilde{O}\left(m^{4/3}\epsilon^{-3}\right) algorithm, we obtain our desired running time bound:

For any 0<ϵ<1/20<\epsilon<1/2, the maximum flow problem can be (1−ϵ)(1-\epsilon)-approximated in O~(mn1/3ϵ−11/3)\widetilde{O}\left(mn^{1/3}\epsilon^{-11/3}\right) time.

Given any weighted undirected graph G=(V,E,w)G=(V,E,w) with nn vertices and mm edges, Benczúr and Karger showed that one can construct a graph G′=(V,E′,w′)G^{\prime}=(V,E^{\prime},w^{\prime}) (called a sparsifier of GG) on the same vertex set in time O~(m)\widetilde{O}\left(m\right) such that ∣E′∣=O(nlog⁡n/ϵ2)|E^{\prime}|=O(n\log n/\epsilon^{2}) and the capacity of any cut in G′G^{\prime} is between 11 and (1+ϵ)(1+\epsilon) times its capacity in GG. Applying our algorithm from Section 4 to a sparsifier of GG gives us an algorithm for (1−ϵ)(1-\epsilon)-approximating the value of the maximum ss-tt flow on GG in time O~(m+n4/3ϵ−3)\widetilde{O}\left(m+n^{4/3}\epsilon^{-3}\right).

We note that this only allows us to approximate the value of the maximum ss-tt flow on GG. It gives us a flow on G′G^{\prime}, not one on GG. We do not know how to use an approximately maximum ss-tt flow on G′G^{\prime} to obtain one on GG in less time than would be required to compute a maximum flow in GG from scratch using the algorithm from Section 4.

For this reason, there is a gap between the time we require to find a maximum flow and the time we require to compute its value. We note, however, that this gap will not exist for the minimum ss-tt cut problem, since an approximately minimum ss-tt cut on G′G^{\prime} will also be an approximately minimum ss-tt cut GG. We will present an algorithm for finding such a cut in the next section. By the Max Flow-Min Cut Theorem, this will provide us with an alternate algorithm for approximating the value of the maximum ss-tt flow. It will have a slightly better dependence on ϵ\epsilon, which will allow us to approximate the value of the maximum ss-tt flow in time O~(m+n4/3ϵ−8/3)\widetilde{O}\left(m+n^{4/3}\epsilon^{-8/3}\right).

In this section, we‘ll describe a dual perspective that yields to an even simpler algorithm for computing an approximately minimum ss-tt cut. Rather than using electrical flows to obtain a flow, it will use the electrical potentials to obtain a cut.

The algorithm will eschew the oracle abstraction and multiplicative weights machinery. Instead, it will just repeatedly compute an electrical flow, increase the resistances of edges according to the amount flowing over them, and repeat. It will then use the electrical potentials of the last flow computed to find a cut by picking a cutoff and splitting the vertices according to whether their potentials are above or below the cutoff.

The algorithm is shown in Figure 5. It finds a (1+ϵ)(1+\epsilon)-approximately minimum ss-tt cut in time O~(m4/3ϵ−8/3)\widetilde{O}\left(m^{4/3}\epsilon^{-8/3}\right); applying it to a sparsifier will give us:

For any 0<ϵ<1/70<\epsilon<1/7, we can find a (1+ϵ)(1+\epsilon)-approximate minimum ss-tt cut in O~(m+n4/3ϵ−8/3)\widetilde{O}\left(m+n^{4/3}\epsilon^{-8/3}\right) time.

We note that, in this algorithm, there is no need to deal explicitly with edges flowing more than ρ\rho, maintain a set of forbidden edges, or average the flows from different steps. We will separately study edges with very large flow in our analysis, but the algorithm itself avoids the complexities that appeared in the improved flow algorithm described in Section 4.

We further note that the update rule is slightly modified from the one that appeared earlier in the paper. This is done to guarantee that the effective resistance increases substantially when some edge flows more than ρ\rho, without having to explicitly cut it. Our previous rule allowed the weight (but not resistance) of an edge to constitute a very small fraction of the total weight; in this case, a significant multiplicative increase in the weight of an edge may not produce a substantial change in the effective resistance of the graph.

To analyze this algorithm, we will track the total weight placed on the edges crossing some minimum cut. The basic observation for our analysis is that the same amount of net flow must be sent across every cut, so edges in small cuts will tend to have higher congestion than edges in large cuts. Since our algorithm increases the weight of an edge according to its congestion, this will cause our algorithm to concentrate a larger and larger fraction of the total weight on the small cuts of the graph. This will continue until almost all of the weight is concentrated on approximately minimum cuts.

Of course, the edges crossing a minimum cut will also cross many other (likely much larger) cuts, so we certainly can‘t hope to obtain a graph in which no edge crossing a large cut has non-negligible weight. In order to formalize the above argument, we will thus need some good way to measure the extent to which the weight is ’’concentrated on approximately minimum cuts‘‘.

In Section 5.2, we will show how to use effective resistance to formulate such a notion. In particular, we will show that if we can make the effective resistance large enough then we can find a cut of small capacity. In Section 5.3, we will use an argument like the one described above to show that the resistances produced by the algorithm in Figure 5 converge after N=O~(m1/3ϵ−8/3)N=\widetilde{O}\left(m^{1/3}\epsilon^{-8/3}\right) steps to one that meets such a bound.

2 Cuts, Electrical Potentials, and Effective Resistance

During the algorithm, we scale and translate the potentials of the approximate electrical flow so that ϕ~s=1\boldsymbol{\widetilde{\mathit{\phi}}}_{s}=1 and ϕ~t=0\boldsymbol{\widetilde{\mathit{\phi}}}_{t}=0. We then produce a cut by choosing x∈x\in and dividing the graph into the sets S={v∈V ∣ ϕv>x}S=\{v\in V\,|\,\phi_{v}>x\} and V∖S={v∈V ∣ ϕ~v≤x}V\setminus S=\{v\in V\,|\,\boldsymbol{\widetilde{\mathit{\phi}}}_{v}\leq x\}. The following lemma upper bounds the capacity of the resulting cut in terms of the electrical potentials and edge capacities.

Consider choosing x∈x\in uniformly at random. The probability that an edge (u,v)(u,v) is cut is precisely ∣ϕ~(u)−ϕ~(v)∣|\boldsymbol{\widetilde{\mathit{\phi}}}(u)-\boldsymbol{\widetilde{\mathit{\phi}}}(v)|. So, the expected capacity of the edges in a random cut is given by (14), and so there is a cut of capacity at most (14). ∎

Now, suppose that one has a fixed total amount of resistance μ\mu to distribute over the edges of a cut of size FF. It is not difficult to see that the maximum possible effective resistance between ss and tt in such a case is μF2\frac{\mu}{F^{2}}, and that this is achieved when one puts a resistance of μF\frac{\mu}{F} on each of the edges. This suggests the following lemma, which bounds the quantity in Lemma 5.2 in terms of the effective resistance and the total resistance (appropriately weighted when the edges have non-unit capacities):

So, we can apply the Cauchy-Schwarz inequality to prove

for δ≤1/3\delta\leq 1/3. The rest of the analysis follows from another application of Cauchy-Schwarz. ∎

3 The Proof that the Dual Algorithm Finds an Approximately Minimum Cut

We‘ll show that if F≥F∗F\geq F^{*} then within N=5ϵ−8/3m1/3ln⁡mN=5\epsilon^{-8/3}m^{1/3}\ln m iterations, the algorithm in Figure 5 will produce a set of resistances ri\boldsymbol{\mathit{r}}^{i} such that

Let CC be the set of edges crossing some minimum cut in our graph. Let uC=F∗u_{C}=F^{*} denote the capacity of the edges in CC. We will keep track of two quantities: the weighted geometric mean of the weights of the edges in CC,

of the edges of the entire graph. Clearly νi≤max⁡e∈Cwei\nu^{i}\leq\max_{e\in C}{w_{e}^{i}}. In particular,

The total weight μi\mu^{i} doesn‘t get too large over the course of the algorithm [Lemma 5.4].

The quantity νi\nu^{i} increases significantly in any iteration in which no edge has congestion more than ρ\rho [Lemma 5.5]. Since μi\mu^{i} doesn‘t get too large, and νi≤μi\nu^{i}\leq\mu^{i}, this will not happen too many times.

The effective resistance increases significantly in any iteration in which some edge has congestion more than ρ\rho [Lemma 5.6]. Since μi\mu^{i} does not get too large, and the effective resistance is assumed to be bounded in terms of the total weight μi\mu^{i}, this cannot happen too many times.

The combined bounds from 2 and 3 will be less than NN, which will yield a contradiction.

By Theorem 2.3, the approximate electrical flow f~\widetilde{f} has energy at most (1+δ)(1+\delta) times the energy of ff,

Applying the Cauchy-Schwarz inequality, we find

If congfi(e)≤ρ\mathsf{cong}_{f^{i}}(e)\leq\rho for all ee, then

To bound the increase of νi+1\nu^{i+1} over νi\nu^{i}, we use the inequality

which holds for ϵ\epsilon and xx between 00 and 11. We apply this inequality with x=congf~i(e)/ρx=\mathsf{cong}_{\widetilde{f}^{i}}(e)/\rho. As f~i\widetilde{f}^{i} is a flow of value FF and CC is a cut, ∑e∈C∣f~ei∣≥F\sum_{e\in C}{\left|\widetilde{f}_{e}^{i}\right|}\geq F. We now compute

If i=0i=0 we have 1≥ϵ1\geq\epsilon. For i>0i>0, we have

We now show that an edge ee for which congf~i(e)≥ρ\mathsf{cong}_{\widetilde{f}^{i}}(e)\geq\rho contributes a large fraction of the energy to the true electrical flow of value FF. By the assumptions of the lemma, the energy of the true electrical flow of value FF is

On the other hand, the energy of the edge ee in the approximate electrical flow is

As a fraction of the energy of the true electrical flow, this is at least

By part bb of Theorem 2.3, the fraction of the energy that ee accounts for in the true flow is at least

we have increased the weight of edge ee by a factor of at least (1+ϵ)(1+\epsilon). So, by Lemma 2.6,

We now combine these lemmas to obtain our main bound:

Before proving Lemma 5.7, we note that combining it with Lemmas 5.2 and 5.3 immediately implies our main result:

On input ϵ<1/7\epsilon<1/7, the algorithm in Figure 5 runs in time O~(m4/3ϵ−8/3)\widetilde{O}\left(m^{4/3}\epsilon^{-8/3}\right). If F≥F∗F\geq F^{*}, then it returns a cut of capacity at most F/(1−7ϵ)F/(1-7\epsilon), where F∗F^{*} is the minimum capacity of an ss-tt cut.

To use this algorithm to find a cut of approximately minimum capacity, one should begin as described in Section 2.2 by crudely approximating the minimum cut, and then applying the above algorithm in a binary search. Crudely analyzed, this incurs a multiplicative overhead of O(log⁡m/ϵ)O(\log m/\epsilon).

Let A⊆{1,…,N}A\subseteq\{1,\dots,N\} be the set of ii for which congf~i(e)≤ρ\mathsf{cong}_{\widetilde{f}^{i}}(e)\leq\rho for all ee, and let B⊆{1,…,N}B\subseteq\{1,\dots,N\} be the set of ii for which there exists an edge ee with congf~i(e)>ρ\mathsf{cong}_{\widetilde{f}^{i}}(e)>\rho. Let a=∣A∣a=|A| and b=∣B∣b=|B|, and note that a+b=Na+b=N. We will obtain a contradiction by proving bounds on aa and bb that add up to something less than NN.

We begin by bounding aa. By applying Lemma 5.5 to all of the steps in AA and noting that νi\nu^{i} never decreases during the other steps, we obtain

Since νN≤μN\nu^{N}\leq\mu^{N}, we can combine Equations (17) and (18) to obtain

Taking logs of both sides and solving for aa yields

Taking logs and rearranging terms gives us

Adding the inequalities in Equations (19) and (20), grouping terms, and plugging in the values of ρ\rho and NN, yields

This is our desired contradiction, which completes the proof. ∎

References

Appendix A Computing Electrical Flows

Without loss of generality, we may scale the resistances so that they lie between 11 and RR. This gives the following relation between FF and the energy of the electrical ss-tt flow of value FF:

Let L\boldsymbol{\mathit{L}} be the Laplacian matrix for this electrical flow problem. Note that all off-diagonal entries of L\boldsymbol{\mathit{L}} lie between −1-1 and −1/R-1/R. Recall that the vector of optimal vertex potentials ϕ\boldsymbol{\mathit{\phi}} of the electrical flow is the solution to the following linear system:

For any ϵ>0\epsilon>0, the algorithm of Koutis, Miller and Peng provides in time O(mlog⁡2mlog⁡2log⁡mlog⁡ϵ−1)O\left(m\log^{2}m\log^{2}\log m\log\epsilon^{-1}\right) a set of potentials ϕ^\boldsymbol{\widehat{\phi}} such that

where f\boldsymbol{\mathit{f}} is the potential flow corresponding to ϕ\boldsymbol{\mathit{\phi}}. Now, let f^\boldsymbol{\mathit{\widehat{f}}} be the potential flow corresponding to ϕ^\boldsymbol{\widehat{\phi}},

The flow f^\boldsymbol{\mathit{\widehat{f}}} is not necessarily an ss-tt flow because ϕ^\boldsymbol{\widehat{\phi}} only approximately satisfies the linear system. A small amount of flow can enter or leave every other vertex. In other words, f^\boldsymbol{\mathit{\widehat{f}}} may not satisfy Bf^=Fχs,t\boldsymbol{\mathit{B}}\boldsymbol{\mathit{\widehat{f}}}=F\boldsymbol{\mathit{\chi_{s,t}}}. Below, we will compute an approximation f~\boldsymbol{\mathit{\widetilde{f}}} of f^\boldsymbol{\mathit{\widehat{f}}} that satisfies Bf~=Fχs,t\boldsymbol{\mathit{B}}\boldsymbol{\mathit{\widetilde{f}}}=F\boldsymbol{\mathit{\chi_{s,t}}}.

Before fixing this problem, we first observe that the energy of f^\boldsymbol{\mathit{\widehat{f}}} is not much more than the energy of f\boldsymbol{\mathit{f}}. We have

To see that the flow f^\boldsymbol{\mathit{\widehat{f}}} does not flow too much into or out of any vertex other than ss and tt, note that the flows into and out of vertices are given by the vector

Note that the sum of the entries in iext\boldsymbol{\mathit{i}}_{ext} is zero. We will produce an ss-tt flow of value FF by adding a flow to f^\boldsymbol{\mathit{\widehat{f}}} to obtain a flow f~\boldsymbol{\mathit{\widetilde{f}}} for which

Let η\eta be the maximum discrepancy between iext\boldsymbol{\mathit{i}}_{ext} and Fχs,tF\boldsymbol{\mathit{\chi_{s,t}}}:

It is an easy matter to produce an ss-tt flow f~\boldsymbol{\mathit{\widetilde{f}}} that differs from f^\boldsymbol{\mathit{\widehat{f}}} by at most nηn\eta on each edge. For example, one can do this by solving a flow problem in a spanning tree of the graph. Let TT be any spanning tree of the graph GG. We now construct a flow in TT that with the demands Fχs,t(u)−iext(u)F\boldsymbol{\mathit{\chi_{s,t}}}(u)-\boldsymbol{\mathit{i}}_{ext}(u) at each vertex uu. As the sum of the positive demands in this flow is at most nηn\eta, one can find such a flow in which every edge flows at most nηn\eta. Moreover, since the edges of TT are a tree, one can find the flow in linear time. We obtain the flow f~\boldsymbol{\mathit{\widetilde{f}}} by adding this flow to f^\boldsymbol{\mathit{\widehat{f}}}. The resulting flow is an ss-tt flow of value FF. Moreover,

To ensure that we get a good approximation of the electrical flow, we now impose the requirment that

To check that requirement aa is satisfied, observe that

We may ensure that this is at most (1+δ)Er(f)(1+\delta)\mathcal{E}_{\boldsymbol{\mathit{r}}}(\boldsymbol{\mathit{f}}) by setting

We now bound ∣refe2−ref^e2∣\left|r_{e}f_{e}^{2}-r_{e}\widehat{f}_{e}^{2}\right| by

It remains to bound ∣ref^e2−ref~e2∣\left|r_{e}\widehat{f}_{e}^{2}-r_{e}\widetilde{f}_{e}^{2}\right|, which we do by the calculation

Putting these inequalities together we find