An Almost-Linear-Time Algorithm for Approximate Max Flow in Undirected Graphs, and its Multicommodity Generalizations

Jonathan A. Kelner, Yin Tat Lee, Lorenzo Orecchia, Aaron Sidford

Introduction

Given a graph G=(V,E)G=(V,E) in which each edge e∈Ee\in E is assigned a nonnegative capacity μ⃗e\vec{\mu}_{e}, the maximum ss-tt flow problem asks us to find a flow f⃗\vec{f} that routes as much flow as possible from a source vertex ss to a sink vertex tt while sending at most μ⃗e\vec{\mu}_{e} units of flow over each edge ee. Its generalization, the maximum concurrent multicommodity flow problem, supplies kk source-sink pairs (si,ti)(s_{i},t_{i}) and asks for the maximum α\alpha such that we may simultaneously route α\alpha units of flow between each source-sink pair. That is, it asks us to find flows f⃗1,…,f⃗k\vec{f}_{1},\dots,\vec{f}_{k} (which we think of as corresponding to kk different commodities) such that f⃗i\vec{f}_{i} sends α\alpha units of flow from sis_{i} to tit_{i}, and ∑i∣f⃗i(e)∣≤μ⃗e\sum_{i}|\vec{f}_{i}(e)|\leq\vec{\mu}_{e} for all e∈Ee\in E.

These problems lie at the core of graph algorithms and combinatorial optimization, and they have been extensively studied over the past 60 years . They have found a wide range of theoretical and practical applications , and they are widely used as key subroutines in other algorithms (see ).

We believe that both our general framework and several of the pieces necessary for its present instantiation are of independent interest, and we hope that they will find other applications. These include:

a non-Euclidean generalization of gradient descent, bounds on its performance, and a way to use this to reduce approximate maximum flow and maximum concurrent flow to oblivious routing;

the definition and efficient construction of flow sparsifiers; and

the construction of a new oblivious routing scheme that can be implemented extremely efficiently.

We have aimed to make our algorithm fairly modular and have thus occasionally worked in slightly more generality than is strictly necessary for the problem at hand. This has slightly increased the length of the exposition, but we believe that it clarifies the high-level structure of the argument, and it will hopefully facilitate the application of these tools in other settings.

For the first several decades of its study, the fastest algorithms for the maximum flow problem were essentially all deterministic algorithms based on combinatorial techniques, such as augmenting paths, blocking flows, preflows, and the push-relabel method. These culminated in the work of Goldberg and Rao , which computes exact maximum flows in time O(min⁡(n2/3,m1/2)log⁡(n2/m)log⁡U)O(\min(n^{2/3},m^{1/2})\log(n^{2}/m)\log U) on graphs with edge weights in {0,…,U}\{0,\dots,U\}. We refer the reader to for a survey of these results.

More recently, a collection of new techniques based on randomization, spectral graph theory and numerical linear algebra, graph decompositions and embeddings, and iterative methods for convex optimization have emerged. These have allowed researchers to provide better provable algorithms for a wide range of flow and cut problems, particularly when one aims to obtain approximately optimal solutions on undirected graphs.

Our algorithm draws extensively on the intellectual heritage established by these works. In this section, we will briefly review some of the previous advances that inform our algorithm. We do not give a comprehensive review of the literature, but instead aim to provide a high-level view of the main tools that motivated the present work, along with the limitations of these tools that had to be overcome. For simplicity of exposition, we primarily focus on the maximum ss-tt flow problem for the remainder of the introduction.

In , Benczur and Karger showed how to efficiently approximate any graph GG with a sparse graph G′G^{\prime} on the same vertex set. To do this, they compute a carefully chosen probability pep_{e} for each e∈Ee\in E, sample each edge ee with probability pep_{e}, and include ee in G′G^{\prime} with its weight increased by a factor of 1/pe1/p_{e} if it is sampled. Using this, they obtain, in nearly linear time, a graph G′G^{\prime} with O(nlog⁡n/ε2)O(n\log n/\varepsilon^{2}) edges such that the total weight of the edges crossing any cut in G′G^{\prime} is within a multiplicative factor of 1±ε1\pm\varepsilon of the weight crossing the corresponding cut in GG. In particular, the Max-Flow Min-Cut Theorem implies that the value of the maximum flow on G′G^{\prime} is within a factor of 1±ε1\pm\varepsilon of that of GG.

This is an extremely effective tool for approximately solving cut problems on a dense graph GG, since one can simply solve the corresponding problem on the sparsified graph G′G^{\prime}. However, while this means that one can approximately compute the value of the maximum ss-tt flow on GG by solving the problem on G′G^{\prime}, it is not known how to use the maximum ss-tt flow on G′G^{\prime} to obtain an actual approximately maximum flow on GG. Intuitively, this is because the weights of edges included in G′G^{\prime} are larger than they were in GG, and the sampling argument does not provide any guidance about how to route flows over these edges in the original graph GG.

In their breakthrough paper , Spielman and Teng showed how to solve Laplacian systems in nearly-linear time. (This was later sped up and simplified by Koutis, Miller, and Peng and Kelner, Orecchia, Sidford, and Zhu .) Their algorithm worked by showing how to approximate the Laplacian LG\mathbf{\mathcal{L}}_{G} of a graph GG with the Laplacian LH\mathbf{\mathcal{L}}_{H} of a much simpler graph HH such that one could use the ability to solve linear systems in LH\mathbf{\mathcal{L}}_{H} to accelerate the solution of a linear system in LG\mathbf{\mathcal{L}}_{G}. They then applied this recursively to solve the linear systems in LH\mathbf{\mathcal{L}}_{H}. In addition to providing the electrical flow primitive used by the algorithms described above, the structure of their recursive sequence of graph simplifications provides the motivating framework for much of the technical content of our oblivious routing construction.

In an oblivious routing scheme, one specifies a linear operator taking any demand vector to a flow routing these demands over the edges of GG. Given a collection of demand vectors, one can produce a multicommodity flow meeting these demands by routing each demand vector using this pre-specified operator, independently of the others. The competitive ratio of such an operator is the worst possible ratio between the congestion incurred by a set of demands in this scheme and the congestion of the best multicommodity flow routing these demands.

In , Räcke showed how to construct an oblivious routing scheme with a competitive ratio of O(log⁡n)O(\log n). His construction worked by providing a probability distribution over trees TiT_{i} such that GG embeds into each TiT_{i} with congestion at most 1, and such that the corresponding convex combination of trees embeds into GG with congestion O(log⁡n)O(\log n). In a sense, one can view this as showing how to approximate GG by a probability distribution over trees. Using this, he was able to show how to obtain polylogarithmic approximations for a variety of cut and flow problems, given only the ability to solve these problems on trees.

We note that such an oblivious routing scheme clearly yields a logarithmic approximation to the maximum flow and maximum concurrent multicommodity flow problems. However, Räcke’s construction took time substantially superlinear time, making it too slow to be useful for computing approximately maximum flows. Furthermore, it only gives a logarithmic approximation, and it is not clear how to use this a small number of times to reduce the error to a multiplicative ε\varepsilon.

In a later paper , Madry applied a recursive technique similar to the one employed by Spielman and Teng in their Laplacian solver to accelerate many of the applications of Räcke’s construction at the cost of a worse approximation ratio. Using this, he obtained almost-linear-time polylogarithmic approximation algorithms for a wide variety of cut problems.

Unfortunately, his algorithm made extensive use of sparsification, which, for the previously mentioned reasons, made it unable to solve the corresponding flow problems. This meant that, while it could use flow-cut duality to find a polylogarithmic approximation of the value of a maximum flow, it could not construct a corresponding flow or repeatedly apply such a procedure a small number of times to decrease the error to a multiplicative ε\varepsilon.

In simultaneous, independent work , Jonah Sherman used somewhat different techniques to find another almost-linear-time algorithm for the (single-commodity) maximum flow problem. His approach is essentially dual to ours: Our algorithm maintains a flow that routes the given demands throughout its execution and iteratively works to improve its congestion. Our main technical tools thus consist of efficient methods for finding ways to route flow in the graph while maintaining flow conservation. Sherman, on the other hand, maintains a flow that does not route the given demands, along with a bound on the congestion required to route the excess flow at the vertices. He then uses this to iteratively work towards achieving flow conservation. (In a sense, our algorithm is more in the spirit of augmenting paths, whereas his is more like preflow-push.) As such, his main technical tools are efficient methods for producing dual objects that give congestion bounds. Objects meeting many of his requirements were given in the work of Madry (whereas there were no previous constructions of flow-based analogues, requiring us to start from scratch); leveraging these allows him to avoid some of the technical complexity required by our approach. We believe that these paper nicely complement each other, and we enthusiastically refer the reader to Sherman’s paper.

2. Our Approach

In this section, we give a high-level description of how we overcome the obstacles described in the previous section. For simplicity, we suppose for the remainder of this introduction that all edges have capacity 1.

The problem is thus to send as many units of flow as possible from ss to tt without sending more than one unit over any edge. It will be more convenient for us to work with an equivalent congestion minimization problem, where we try to find the unit ss-tt flow f⃗\vec{f} (i.e., a flow sending one unit from ss to tt) that minimizes ∥f∥∞=max⁡e∣f⃗e∣\|f\|_{\infty}=\max_{e}|\vec{f}_{e}|. If we begin with some initial unit ss-tt flow f⃗0\vec{f}_{0}, the goal will be thus be to find the circulation c⃗\vec{c} to add to f⃗0\vec{f}_{0} that minimizes ∥f⃗0+c⃗∥∞\|\vec{f}_{0}+\vec{c}\|_{\infty}.

We give an iterative algorithm to approximately find such a c⃗\vec{c}. There are 2O(log⁡nlog⁡log⁡n)/ε22^{O(\sqrt{\log n\log\log n})}/\varepsilon^{2} iterations, each of which adds a circulation to the present flow and runs in m⋅2O(log⁡nlog⁡log⁡n)m\cdot 2^{O(\sqrt{\log n\log\log n})} time. Constructing this scheme consists of two main parts: an iterative scheme that reduces the problem to the construction of a projection matrix with certain properties; and the construction of such an operator.

The simplest way to improve the flow would be to just perform gradient descent on the maximum congestion of an edge. There are two problems with this:

The first problem is that gradient descent depends on having a smoothly varying gradient, but the infinity norm is very far from smooth. This is easily remedied by a standard technique: we replace the infinity norm with a smoother “soft max” function. Doing this would lead to an update that would be a linear projection onto the space of circulations. This could be computed using an electrical flow, and the resulting algorithm would be very similar to the unaccelerated gradient descent algorithm in .

To apply this to our problem, we write flows meeting our demands as f⃗0+c⃗\vec{f}_{0}+\vec{c}, as described above. We then need a parametrization of the space of circulations so that the objective function (after being smoothed using soft max) has a good bound on its Lipschitz constant. Similarly to what occurs in , this comes down to finding a good linear representation of the space of circulations, which we show amounts in the present setting to finding a matrix that projects into the space of circulations while meetings certain norm bounds.

Constructing a projection matrix

This reduces our problem to the construction of such a projection matrix. A simple calculation shows that any linear oblivious routing scheme AA with a good competitive ratio gives rise to a projection matrix with the desired properties, and thus leads to an iterative algorithm that converges in a small number of iterations. Each of these iterations performs a matrix-vector multiplication with both A\mathbf{A} and AT\mathbf{A}^{T}.

However, the computation involved in existing oblivious routing schemes is not fast enough to be used in this setting. Our task thus becomes constructing an oblivious routing scheme that we can compute and work with very efficiently. We do this with a recursive construction that reduces oblivious routing in a graph to oblivious routing in various successively simpler graphs.

To this end, we show that if GG can be embedded with low congestion into HH (existentially), and HH can be embedded with low congestion into GG efficiently, one can use an oblivious routing on HH to obtain an oblivious routing on GG. The crucial difference between the simplification operations we perform here and those in previous papers (e.g., in the work of Benczur-Karger and Madry ) is that ours are accompanied by such embeddings, which enables us to transfer flows from the simpler graphs to the more complicated ones.

We construct our routing scheme by recursively composing two types of reductions, each of which we show how to implement without incurring a large increase in the competitive ratio:

Vertex elimination This shows how to efficiently reduce oblivious routing on a graph G=(V,E)G=(V,E) to routing on tt graphs with roughly O~(∣E∣/t)\widetilde{O}(|E|/t) vertices. To do this, we show how to efficiently embed GG into tt simpler graphs, each consisting of a tree plus a subgraph supported on roughly O~(∣E∣/t)\widetilde{O}{(|E|/t)} vertices. This follows easily from a careful reading of Madry’s paper . We then show that routing on such a graph can be reduced to routing on a graph with at most O~(∣E∣/t)\widetilde{O}{(|E|/t)} vertices by collapsing paths and eliminating leaves.

Flow sparsification This allows us to efficiently reduce oblivious routing on an arbitrary graph to oblivious routing on a graph with O~(∣V∣)\widetilde{O}(|V|) edges, which we call a flow sparsifier.

To construct flow sparsifiers, we use local partitioning to decompose the graph into well-connected clusters that contain many of the original edges. (These clusters are not quite expanders, but they are contained in graphs with good expansion in a manner that is sufficient for our purposes.) We then sparsify these clusters using standard techniques and then show that we can embed the sparse graph back into the original graph using electrical flows. If the graph was originally dense, this results in a sparser graph, and we can recurse on the result. While the implementation of these steps is somewhat different, the outline of this construction parallels Spielman and Teng’s approach to the construction of spectral sparsifiers .

Combining these two reductions recursively yields an efficient oblivious routing scheme, and thus an algorithm for the maximum flow problem.

Finally, we show that the same framework can be applied to the maximum concurrent multicommodity flow problem. While the norm and regularization change, the structure of the argument and the construction of the oblivious routing scheme go through without requiring substantial modification.

Preliminaries

Cuts: For any vertex subset S⊆VS\subseteq V we denote the cut induced by SS by the edge subset

and we denote the conductance of a graph by

We call a set of flows {f⃗i}\{\vec{f}_{i}\} that meet demands {χ⃗i}\{\vec{\chi}_{i}\}, i.e. ∀i,BTf⃗i=χ⃗i\forall i,\mathbf{B}^{T}\vec{f}_{i}=\vec{\chi}_{i}, a multicommodity flow meeting the demands.

Running Time: For matrix A,\mathbf{A}, we let T(A)\mathcal{T}\left(\mathbf{A}\right) denote the maximum amount of time needed to apply A\mathbf{A} or AT\mathbf{A}^{T} to a vector.

Solving Max-Flow Using a Circulation Projection

Fact 53 shows that this definition indeed yields that \big{\langle}\vec{y},\vec{x}\big{\rangle}\leq\|\vec{y}\|^{*}\|\vec{x}\|. Next, we define the fastest increasing direction x#{x}^{\#}, which is an arbitrary point satisfying the following

In the appendix, we provide some facts about ∥⋅∥∗\|\cdot\|^{*} and x⃗#{\vec{x}}^{\#} that we will use in this section. Using the notations defined, the gradient descent method simply produces a sequence of x⃗k\vec{x}_{k} such that

where tkt_{k} is some chosen step size for iteration kk. To determine what these step sizes should be we need some information about the smoothness of the function, in particular, the magnitude of the second order term in (1). The natural notion of smoothness for gradient descent is the Lipschitz constant of the gradient of ff, that is the smallest constant LL such that

In the appendix we provide an equivalent definition and a way to compute LL, which is useful later.

We assume that X∗X^{*} is non-empty. Now, we are ready to estimate the convergence rate of the gradient descent method.

By the Lipschitz continuity of the gradient of ff and Lemma 54 we have

Furthermore, by the convexity of ff, we know that

Using this and the fact that f(x⃗k)f(\vec{x}_{k}) decreases monotonically with kk, we get

Furthermore, since ϕk≥ϕk+1\phi_{k}\geq\phi_{k+1}, we have

Now, note that since ▽f(x⃗∗)=0\bigtriangledown f(\vec{x}^{*})=0, we have that

So, we have that ϕ0≤L2R2\phi_{0}\leq\frac{L}{2}R^{2} and putting this all together yields that

2. Maximum Flow Formulation

Equivalently, we want to compute a minimum congestion flow

where we call ∥U−1f⃗∥∞\|\mathbf{U}^{-1}\vec{f}\|_{\infty} the congestion of f⃗\vec{f}.

where the output flow is f⃗=f⃗0+c⃗\vec{f}=\vec{f}_{0}+\vec{c}. Although the gradient descent method is applicable to constrained optimization problems and has a similar convergence guarantee, the sub-problem involved in each iteration is a constrained optimization problem, which is quite complicated in this case. Since the domain is a linear subspace, the constraints can be avoided by projecting the variables onto this subspace.

Formally, we define a circulation projection matrix as follows.

Applying gradient descent on this problem is similar to applying projected gradient method on the original problem. But, instead of using the orthogonal projection that is not suitable for ∥⋅∥∞\|\cdot\|_{\infty}, we will pick a better projection matrix.

3. An Approximate Maximum Flow Algorithm

Now we consider the following regularized optimization problem

For the rest of this section, we consider solving this optimization problem using gradient descent under ∥⋅∥∞\|\cdot\|_{\infty}.

First, we bound the Lipschitz constant of the gradient of gtg_{t}.

The gradient of gtg_{t} is Lipschitz continuous with Lipschitz constant L=∥P∥∞2tL=\frac{\|\mathbf{P}\|_{\infty}^{2}}{t}

Seting x⃗←α0⃗+Px⃗\vec{x}\leftarrow\vec{\alpha_{0}}+\mathbf{P}\vec{x} and y⃗←α0⃗+Py⃗\vec{y}\leftarrow\vec{\alpha_{0}}+\mathbf{P}\vec{y}, we have

Hence, the result follows from Lemma 54.∎

Now, we apply gradient descent to find an approximate max flow as follows.

We remark that the initial flow can be obtained by BFS and the OPT value can be approximted using binary search. In Section 7, we will give an algorithm with better dependence on ∥P∥\|\mathbf{P}\|.

Let P~\widetilde{\mathbf{P}} be a cycle projection matrix, let P=U−1P~U\mathbf{\mathbf{P}}=\mathbf{\mathbf{U}}^{-1}\widetilde{\mathbf{P}}\mathbf{U}, and let ε<1\varepsilon<1. MaxFlow outputs an (1−ε)(1-\varepsilon)-approximate maximum flow in time

First, we bound ∥α0⃗∥∞\|\vec{\alpha_{0}}\|_{\infty}. Let x⃗∗\vec{x}^{*} be a minimizer of min⁡x⃗∥U−1f⃗0+Px⃗∥∞\min_{\vec{x}}\|\mathbf{U}^{-1}\vec{f}_{0}+\mathbf{P}\vec{x}\|_{\infty} such that Px⃗∗=x⃗∗\mathbf{P}\vec{x}^{*}=\vec{x}^{*}. Then, we have

Second, we bound RR in Theorem 1. Note that

Hence, the condition gt(x⃗)≤gt(x⃗0)g_{t}(\vec{x})\leq g_{t}(\vec{x}_{0}) implies that

For any y⃗∈X∗\vec{y}\in X^{*} let c⃗=x⃗−Px⃗+y⃗\vec{c}=\vec{x}-\mathbf{P}\vec{x}+\vec{y} and note that Pc⃗=Py⃗\mathbf{P}\vec{c}=\mathbf{P}\vec{y} and therefore c⃗∈X∗\vec{c}\in X^{*}. Using these facts, we can bound RR as follows

From Lemma 3, we know that the Lipschitz constant of ▽gt\bigtriangledown g_{t} is ∥P∥∞2/t\|\mathbf{P}\|_{\infty}^{2}/t. Hence, Theorem 1 shows that

Using t=εOPT/2ln⁡(2m)t=\varepsilon\text{OPT}/2\ln(2m) and k=300∥P∥∞4ln⁡(2m)/ε2k=300\|\mathbf{P}\|_{\infty}^{4}\ln(2m)/\varepsilon^{2}, we have

Therefore, α0⃗+Px⃗k\vec{\alpha_{0}}+\mathbf{P}\vec{x}_{k} is an (1−ε)(1-\varepsilon) approximate maximum flow.

Now, we estimate the running time. In each step 55, we are required to compute (▽g(x⃗k))#{(\bigtriangledown g(\vec{x}_{k}))}^{\#}. The gradient

In ∥⋅∥∞\|\cdot\|_{\infty}, the #\# operator is given by the explicit formula

It is easy to see that for all e∈Ee\in E, ∣∣x⃗#∣∣∞=∣(x⃗#)e∣||{\vec{x}}^{\#}||_{\infty}=\left|\left({\vec{x}}^{\#}\right)_{e}\right| . In particular, we have

Fact 52 shows that ∣∣x⃗#∣∣∞=∥x⃗∥1||{\vec{x}}^{\#}||_{\infty}=\|\vec{x}\|_{1} and the result follows.∎

4. Properties of soft max

For notational simplicity, for all x⃗\vec{x} where this vector is clear from context, we define c⃗\vec{c} and s⃗\vec{s} as follows

where the letters are chosen due to the very close resemblance to hyperbolic sine and hyperbolic cosine.

Thus, the first part follows from Lemma 55. For the later part, we have

Oblivious Routing

In the previous sections, we saw how a circulation projection matrix can be used to solve max flow. In the next few sections, we show how to efficiently construct a circulation projection matrix to obtain an almost linear time algorithm for solving max flow.

Our proof focuses on the notion of (linear) oblivious routings. Rather than constructing the circulation projection matrix directly, we show how the efficient construction of an oblivious routing algorithm with a good competitive ratio immediately allows us to produce a circulation projection matrix.

In the remainder of this section, we formally define oblivious routings and prove the relationship between oblivious routing and circulation projection matrices (Section 4.1), provide a high level overview of our recursive approach and state the main theorems we will prove in later sections (Section 4.2). Finally, we prove the main theorem about our almost-linear-time construction of circulation projection with norm 2O(log⁡(n)log⁡log⁡(n))2^{O(\sqrt{\log(n)\log\log(n)})} assuming the proofs in the later sections (Section 4.3).

Here we provide definitions and prove basic properties of oblivious routings, that is, fixed mappings from demands to flows that meet the input demands. While non-linear algorithms could be considered, we restrict our attention to linear oblivious routing strategies and use the term oblivious routing to refer to the linear subclass for the remainder of the paper.Note that the oblivous routing strategies considered in are all linear oblivious routing strategies.

Oblivious routings get their name due to the fact that, given an oblivious routing strategy A\mathbf{A} and a set of demands D={χ⃗1,…,χ⃗k},D=\{\vec{\chi}_{1},\ldots,\vec{\chi}_{k}\}, one can construct a multicommodity flow satisfying all the demands in DD by using A\mathbf{A} to route each demand individually, obliviously to the existence of the other demands. We measure the competitive ratioAgain note that here and in the rest of the paper we focus our analysis on competitive ratio with respect to norm ∥⋅∥∞\|\cdot\|_{\infty}. However, many of the results present are easily generalizable to other norms. These generalizations are outside the scope of this paper. of such an oblivious routing strategy to be the ratio of the worst relative congestion of such a routing to the minimal-congestion routing of the demands.

At times, it will be more convenient to analyze an oblivious routing as a linear algebraic object rather a combinatorial algorithm; towards this end, we note that the competitive ratio of a linear oblivious routing strategy can be gleaned from the operator norm of a related matrix (see also and ). Below, we state and prove a generalization of this result to weighted graphs that will be vital to relating A\mathbf{A} to P~\widetilde{\mathbf{P}}.

For any oblivious routing A,\mathbf{A}, we have ρ(A)=∥U−1ABTU∥∞\rho(\mathbf{A})=\|\mathbf{U}^{-1}\mathbf{A}\mathbf{B}^{T}\mathbf{U}\|_{\infty}

To make this lemma easily applicable in a variety of settings, we make use of the following easy to prove lemma.

The previous two lemmas make the connection between oblivious routings and circulation projection matrices clear. Below, we prove it formally.

Next, we check that P~\widetilde{\mathbf{P}} is the identity on cycle space

2. A Recursive Approach by Embeddings

We construct an oblivious routing for a graph recursively. Given a generic, possibly complicated, graph, we show how to reduce computing an oblivious routing on this graph to computing an oblivious routing on a simpler graph on the same vertex set. A crucial concept in these constructions will be the notion of an embedding, which will allow us to relate the competitive ratios of an oblivious routing algorithms over graphs on the same vertex sets but different edge sets.

In other words, an embedding is a map from flows in one graph GG to flows in another graph G′G^{\prime} that preserves the demands met by the flow. We can think of an embedding as a way of routing any flow in graph GG into graph G′G^{\prime} that has the same vertex set, but different edges. We will be particularly interested in embeddings that increase the congestion of the flow by a small amount going from GG to G′G^{\prime}.

Embeddings potentially allow us to reduce computing an oblivious routing in a complicated graph to computing an oblivious routing in a simpler graph. Specifically, if we can embed a complicated graph in a simpler graph and we can efficiently embed the simple graph in the original graph, both with low congestion, then we can just focus on constructing oblivious routings in the simpler graph. We prove this formally as follows.

To bound ρ(A),\rho(A), we let U\mathbf{U} denote the capacity matrix of GG and U′\mathbf{U}^{\prime} denote the capacity matrix of G′G^{\prime}. Using Lemma 10, we get

Using that M\mathbf{M} is an embedding and therefore B′TM=BT{\mathbf{B}^{\prime}}^{T}\mathbf{M}=\mathbf{B}^{T}, we get

By the definition of competitive ratio and congestion, we obtain the result. ∎

Note how in this lemma we only use the embedding from GG to G′G^{\prime} to certify the quality of flows in G′G^{\prime}, we do not actually need to apply this embedding in the reduction.

Using this concept, we construct oblivious routings via recursive application of two techniques. First, in Section 5 we show how to take an arbitrary graph G=(V,E)G=(V,E) and approximate it by a sparse graph G′=(V,E′)G^{\prime}=(V,E^{\prime}) (i.e. one in which ∣E′∣=O~(∣V∣)|E^{\prime}|=\widetilde{O}(|V|)) such that flows in GG can be routed in G′G^{\prime} with low congestion and that there is an O~(1)\widetilde{O}(1) embedding from G′G^{\prime} to GG that can be applied in O~(∣E∣)\widetilde{O}(|E|) time. We call such a construction a flow sparsifiers and prove the following theorem.

Let G=(V,E,μ⃗)G=(V,E,\vec{\mu}) be an undirected capacitated graph with capacity ratio U≤\poly(∣V∣)U\leq\poly(|V|). In O~(∣E∣)\widetilde{O}(|E|) time we can construct a graph G′G^{\prime} on the same vertex set with at most O~(∣V∣)\widetilde{O}(|V|) edges and capacity ratio at most U⋅\poly(∣V∣).U\cdot\poly(|V|). Moreover, given an oblivious routing A′\mathbf{A}^{\prime} on G′,G^{\prime}, in O~(∣E∣)\widetilde{O}(|E|) time we can construct an oblivious routing A\mathbf{A} on GG such that

Next, in Section 6 we show how to embed a graph into a collection of graphs consisting of trees plus extra edges. Then, we will show how to embed these graphs into better structured graphs consisting of trees plus edges so that by simply removing degree 1 and degree 2 vertices we are left with graphs with fewer vertices. Formally, we prove the following.

Let G=(V,E,μ⃗)G=(V,E,\vec{\mu}) be an undirected capacitated graph with capacity ratio UU. For all t>0t>0 in O~(t⋅∣E∣)\widetilde{O}(t\cdot|E|) time we can compute graphs G1,…,GtG_{1},\ldots,G_{t} each with at most O~(∣E∣log⁡(U)t)\widetilde{O}(\frac{|E|\log(U)}{t}) vertices, at most ∣E∣|E| edges, and capacity ratio at most ∣V∣⋅U.|V|\cdot U. Moreover, given oblivious routings Ai\mathbf{A}_{i} for each GiG_{i}, in O~(t⋅∣E∣)\widetilde{O}(t\cdot|E|) time we can compute an oblivious routing A\mathbf{A} on GG such that

In the next section we show that the careful application of these two ideas along with a powerful primitive for routing on constant sized graphs suffices to produce an oblivious routing with the desired properties.

3. Efficient Oblivious Routing Construction Proof

First, we provide the lemma that will serve as the base case of our recursion. In particular, we show that electric routing can be used to obtain a routing algorithm with constant competitive ratio for constant-size graphs.

Assuming Theorem 16 and Theorem 17, which we prove in the next two sections, we prove that low-congestion oblivious routings can be constructed efficiently.

Given an undirected capacitated graph G=(V,E,μ⃗)G=(V,E,\vec{\mu}) with capacity ratio UU. Assume U=\poly(∣V∣)U=\poly(|V|). We can construct an oblivious routing algorithm A\mathbf{A} on GG in time

Repeat this process on each Gi(1)G_{i}^{(1)}, it produces t2t^{2} graphs G1(2),⋯ ,Gt2(2)G_{1}^{(2)},\cdots,G_{t^{2}}^{(2)}. Keep doing this until all graphs GiG_{i} produced have O(1)O(1) vertices. Let kk be the highest level we go through in this process. Since at the kk-th level the number of vertices of each graph is at most O(1tk∣E∣log⁡2kc∣V∣log⁡2k(U∣V∣2ck))O\left(\frac{1}{t^{k}}|E|\log^{2kc}|V|\log^{2k}(U|V|^{2ck})\right) vertices, we have k=O(log⁡∣V∣log⁡log⁡∣V∣)k=O\left(\sqrt{\frac{\log|V|}{\log\log|V|}}\right).

On each graph GiG_{i}, we use Theorem 18 to get an oblivious routing algorithm Ai\mathbf{A}_{i} for each GiG_{i} with

Then, the Theorem 17 and 16 shows that we have an oblivious routing algorithm A\mathbf{A} for GG with

The result follows from k=O(log⁡∣V∣log⁡log⁡∣V∣)k=O\left(\sqrt{\frac{\log|V|}{\log\log|V|}}\right) and t=⌈2log⁡∣V∣log⁡log⁡∣V∣⌉t=\left\lceil 2^{\sqrt{\log|V|\log\log|V|}}\right\rceil. ∎

Using Theorem 19, Lemma 12 and Theorem 4, we have the following almost linear time max flow algorithm on undirected graph.

Given an undirected capacitated graph G=(V,E,μ⃗)G=(V,E,\vec{\mu}) with capacity ratio UU. Assume U=\poly(∣V∣)U=\poly(|V|). There is an algorithm finds an (1−ε)(1-\varepsilon) approximate maximum flow in time

Flow Sparsifiers

In order to prove Theorem 16, i.e. reduce the problem of efficiently computing a competitive oblivious routing on a dense graph to the same problem on a sparse graph, we introduce a new algorithmic tool called flow sparsifiers. Note that our flow sparsifiers aim to reduce the number of edges, and are different from the flow sparsifiers of Leighton and Moitra , which work in a different setting and reduce the number of vertices. A flow sparsifier is an efficient cut-sparsification algorithm that also produces an efficiently-computable low-congestion embedding mapping the sparsified graph back to the original graph.

Sparsity: G′G^{\prime} is hh-sparse, i.e.

Cut Approximation: G′G^{\prime} is an ε\varepsilon-cut approximation of G,G, i.e.

Flow Approximation: M\mathbf{M} has congestion at most α,\alpha, i.e.

Flow sparsifiers allow us to solve a multi-commodity flow problem on a possibly dense graph GG by converting GG into a sparse graph G′G^{\prime} and solving the flow problem on G′G^{\prime}, while suffering a loss of a factor of at most α\alpha in the congestion when mapping the solution back to GG using M.\mathbf{M}.

Consider a graph G=(V,E,μ)G=(V,E,\mu) and let G′=(V,E′,μ′)G^{\prime}=(V,E^{\prime},\mu^{\prime}) be given by an (h,ε,α)(h,\varepsilon,\alpha)-flow sparsifier of G.G. Then, for any set of kk demands D={χ⃗1,χ⃗2,…,χ⃗k}D=\{\vec{\chi}_{1},\vec{\chi}_{2},\ldots,\vec{\chi}_{k}\} between vertex pairs of V,V, we have:

Given the optimum flow {fi⋆}\{f^{\star}_{i}\} over G′G^{\prime}, we have

By the flow-cut gap theorem of Aumann and Rabani , we have that, for any set of kk demands DD on VV we have:

where D(∂(S))D(\partial(S)) denotes the total amount of demand separated by the cut between SS and Sˉ.\bar{S}. As any cut S⊆VS\subseteq V in G′G^{\prime} has capacity μ′(∂G′(S))≥(1−ε)μ(∂G(S)),\mu^{\prime}(\partial_{G^{\prime}}(S))\geq(1-\varepsilon)\mu(\partial_{G}(S)), we have:

The second part of the theorem follows as a consequence of the definition of the congestion of the embedding M.\mathbf{M}. ∎

Our flow sparsifiers should be compared with the cut-based decompositions of Räcke . Räcke constructs a probability distribution over trees and gives explicit embeddings from GG to this distribution and backwards, achieving a congestion of O(log⁡n).O(\log n). However, this distribution over tree can include up to O(mlog⁡n)O(m\log n) trees and it is not clear how to use it to obtain an almost linear time algorithm. Flow sparsifiers answer this problem by embedding GG into a single graph G′G^{\prime}, which is larger than a tree, but still sparse. Moreover, they provide an explicit efficient embedding of G′G^{\prime} into G.G. Interestingly, the embedding from GG to G′G^{\prime} is not necessary for our notion of flow sparsifier, and is replaced by the cut-approximation guarantee. This requirement, together with the application of the flow-cut gap , lets us argue that the optimal congestion of a kk-commodity flow problem can change at most by a factor of O(log⁡k)O(\log k) between GG and G′.G^{\prime}.

The main goal of this section will be to prove the following theorem:

Assuming Theorem 23, we can now prove Theorem 16, the main theorem necessary for edge reduction in our construction of low-congestion projections.

To complete the proof, we bound the competivite ratio ρ(A).\rho(\mathbf{A}). Using the same argument as in Lemma 10, we can write ρ(A)\rho(\mathbf{A}) as

0.2. Techniques

In the next two subsections, we introduce the necessary concept about electrical-flow routing and prove that it achieves low competitive ratio over near-expanders (and subsets of near-expanders).

1. Subgraph Routing

Note that A\mathbf{A} may use all the edges in GG but ρF(A)\rho^{F}(\mathbf{A}) compares it only against routings that are restricted to use only edges in FF. As before, we can upper bound the FF-competitive ratio ρF(A)\rho^{F}(\mathbf{A}) by operator norms.

2. Electrical-Flow Routings

In this section, we define the notion of electrical-flow routing and prove the results necessary to construct flow sparsifiers. Recall that R\mathbf{R} is the diagonal matrix of resistances and the Laplacian L\mathbf{\mathcal{L}} is defined as BTR−1B.\mathbf{B}^{T}\mathbf{R}^{-1}\mathbf{B}. For the rest of this section, we assume that resistances are set as R=U−1.\mathbf{R}=\mathbf{U}^{-1}.

Consider a graph G=(V,E,μ)G=(V,E,\mu) and set the edge resistances as re=1μer_{e}=\frac{1}{\mu_{e}} for all e∈E.e\in E. The oblivious electrical-flow routing strategy is the linear operator AE\mathbf{A}_{\mathcal{E}} defined as

In words, the electrical-flow routing strategy is the routing scheme that, for each demand χ⃗\vec{\chi} sends the electrical flow with boundary condition χ⃗\vec{\chi} on the graph GG with resistances R=U−1.\mathbf{R}=\mathbf{U}^{-1}.

For the electrical-flow routing strategy AE\mathbf{A}_{\mathcal{E}}, the upper bound on the competitive ratio ρ(AE)\rho(\mathbf{A}_{\mathcal{E}}) in Lemma 10 can be rephrased in terms of the voltages induced on GG by electrically routing an edge e∈E.e\in E. This interpretation appears in .

The same reasoning can be extended to the subgraph-routing case to obtain the following lemma.

For F⊆EF\subseteq E and R=U−1\mathbf{R}=\mathbf{U}^{-1} we have

In this section, we prove that we can bound the FF-competitive ratio of the oblivious electrical-routing strategy as long as the edges FF that the optimum flow is allowed to route over are contained within an induced expander G(U)=(U,E(U))G(U)=(U,E(U)) for some U⊆VU\subseteq V . Towards this we provide and prove the following lemma. This is a generalization of a similar lemma proved in .

For weighted graph G=(V,E,w)G=(V,E,w) with integer weights and vertex subset U⊆VU\subseteq V the following holds:

Since adding a multiple of the all-ones vector to vv does not change the quantity of interest in Equation 3, we can assume without loss of generality that

For any vertex subset S⊆U,S\subseteq U, we denote the flow out of SS and the weight out of SS by

In words, the ci+1c_{i+1} equals the sum of cic_{i} and an increase Δi\Delta_{i} which depends on how much the cut δ(Ci)∩E(U)\delta(C_{i})\cap E(U) was congested by the electrical flow.

By repeating the same argument on S0≤,S_{0}^{\leq}, we get that ∑a∈S0≤d(a)v(a)≤2rΦ(G(U))\sum_{a\in S_{0}^{\leq}}d(a)v(a)\leq\frac{2r}{\Phi(G(U))}. Putting this all together yields

From this lemma and Lemma 27, the following is immediate:

Let F⊆EF\subseteq E be contained within some vertex induced subgraph G(U),G(U), then for R=U−1\mathbf{R}=\mathbf{U}^{-1} we have

3. Construction and Analysis of Flow Sparsifiers

In the remainder of this section we show how to produce an efficient O(log⁡c)O(\log^{c})-flow sparsifier for some fixed constant c,c, proving Theorem 23. In this version of the paper, we make no attempt to optimize the value of c.c. For the rest of this section, we again assume that we choose the resistance of an edge to be the the inverse of its capacity, i.e. U=W=R−1.\mathbf{U}=\mathbf{W}=\mathbf{R}^{-1}.

As discussed before, our approach follows closely that of Spielman and Teng to the construction of spectral sparsifiers. The first step of this line of attack is to reduce the problem to the unweighted case.

Given an (h,ε,α)(h,\varepsilon,\alpha)-flow-sparsifier algorithm for unweighted graphs, it is possible to construct an (h⋅log⁡U,ε,α)(h\cdot\log U,\varepsilon,\alpha)-flow-sparsifier algorithm for weighted graphs G=(V,E,μ)G=(V,E,\mu) with capacity ratio UU obeying

The next step is to construct a routine which flow-sparsifies a constant fraction of the edges of E.E. This routine will then be applied iteratively to produce the final flow-sparsifier.

FF contains most of the volume of G,G, i.e.

The graph H′=(V,F′,wF′)H^{\prime}=(V,F^{\prime},w_{F^{\prime}}) is an ε\varepsilon-cut approximation to H=(V,F),H=(V,F), i.e. for all S⊆V:S\subseteq V:

The embedding H\mathbf{H} from H=(V,F′,wF′)H=(V,F^{\prime},w_{F^{\prime}}) to GG has bounded congestion

Given Lemma 30 and Lemma 31, it is straightforward to complete the proof of Theorem 23.

By Lemma 31, at every iteration t,t, ∣Ft∣≥12⋅∣Et∣,|F_{t}|\geq\frac{1}{2}\cdot|E_{t}|, so that ∣Et+1∣≤12⋅∣Et∣.|E_{t+1}|\leq\frac{1}{2}\cdot|E_{t}|. This shows that there can be at most T≤log⁡(∣E1∣)=O(log⁡n)T\leq\log(|E_{1}|)=O(\log n) iterations.

In words, M\mathbf{M} maps an edge e′∈E′e^{\prime}\in E^{\prime} by finding tt for which e′∈Ft′e^{\prime}\in F^{\prime}_{t} and applying the corresponding Ht.\mathbf{H_{t}}.

We are now ready to prove that this algorithm with output G′G^{\prime} and M\mathbf{M} is an efficient (O~(n),ε,O~(n))(\widetilde{O}(n),\varepsilon,\widetilde{O}(n))-flow sparsifier. To bound the capacity ratio U′U^{\prime} of G′G^{\prime}, we notice that

where we used the fact that the sets Ft′F^{\prime}_{t} are disjoint and the guarantee on the range of wFt′.w_{F^{\prime}_{t}}.

Next, we bound the sparsity of G′.G^{\prime}. By Lemma 31, Ft′F^{\prime}_{t} contains at most O~(n)\widetilde{O}(n) edges. As a result, we get the required bound

For the cut approximation, we consider any S⊆V.S\subseteq V. By the cut guarantee of Lemma 31, we have that, for all t∈[T],t\in[T],

Summing over all t,t, as E′=⋃˙Ft′E^{\prime}=\mathop{\dot{\bigcup}}F^{\prime}_{t} and E=⋃˙Ft,E=\mathop{\dot{\bigcup}}F_{t}, we obtain the required approximation

The congestion of M\mathbf{M} can be bounded as follows

To conclude the proof, we address the efficiency of the flow sparsifier. The algorithm applies the routine of Lemma 31 for T=O~(1)T=\widetilde{O}(1) times and hence runs in time O~(m),\widetilde{O}(m), as required. Invoking the embedding M\mathbf{M} requires invoking each of the TT embeddings Ht.{\mathbf{H_{t}}}. This takes time O~(Tm)=O~(m).\widetilde{O}(Tm)=\widetilde{O}(m).

In this subsection, we prove Lemma 31. Our starting point is the following decomposition statement, which shows that we can form a partition of an unweighted graph where most edges do not cross the boundaries and the subgraphs induced within each set of this partition are near-expanders. The following lemma is implicit in Spielman and Teng’s local clustering approach to spectral sparsification .

For all i,i, SiS_{i} is contained in Vi.V_{i}.

For all i,i, there exists a set TiT_{i} with Si⊆Ti⊆Vi,S_{i}\subseteq T_{i}\subseteq V_{i}, such that

At least half of the edges are found within the sets {Si},\{S_{i}\}, i.e.

Moreover, the spectral sparsification of constructs the weights {wi′(e)}e∈Ei′\{w^{\prime}_{i}(e)\}_{e\in E^{\prime}_{i}} such that

To complete the description of the algorithm, we output the partition (F,Fˉ)(F,\bar{F}) of E,E, where

We also output the set of weighted sparsified edges F′.F^{\prime}.

The weight wF′(e)w_{F^{\prime}}(e) of edge e∈F′e\in F^{\prime} is given by finding ii such that e∈Ei′e\in E^{\prime}_{i} and setting wF′(e)=wi′(e).w_{F^{\prime}}(e)=w^{\prime}_{i}(e).

where I(E(Vi),Ei′)\mathbf{I}_{(E(V_{i}),E^{\prime}_{i})} is the identity mapping of the edges Ei′⊆E(Vi)E^{\prime}_{i}\subseteq E(V_{i}) of F′F^{\prime} over ViV_{i} to the edges E(Vi)E(V_{i}) of ViV_{i} in G.G. Notice that there is no dependence on the resistances over GG as GG is unweighted.

This complete the description of the algorithm. We are now ready to give the proof of Lemma 31.

The algorithm described above performs a decomposition of the input graph G=(V,E)G=(V,E) in time O~(m)\widetilde{O}(m) by the Decomposition Lemma. By the result of Spielman and Srivastava , each GiG_{i} is sparsified in time O~(∣E(Si)∣).\widetilde{O}(|E(S_{i})|). Hence, the sparsification step requires time O~(m)\widetilde{O}(m) as well. This shows that the algorithm runs in O~(m)\widetilde{O}(m)-time, as required.

By the Decomposition Lemma, we know that ∣F∣=∑i=1k∣E(Si)∣≥∣E∣2,|F|=\sum_{i=1}^{k}|E(S_{i})|\geq\frac{|E|}{2}, which satisfies the requirement of the Lemma. Moreover, by the spectral sparsification result, we know that ∣F′∣=∑i=1k∣Ei′∣≤∑i=1kO~(∣Si∣)≤O~(n),|F^{\prime}|=\sum_{i=1}^{k}|E^{\prime}_{i}|\leq\sum_{i=1}^{k}\widetilde{O}(|S_{i}|)\leq\widetilde{O}(n), as required. We also saw that by construction the weights wF′w_{F^{\prime}} are bounded:

To obtain the cut-approximation guarantee, we use the fact that for every i,i, by spectral sparsification,

We have H′=(V,F′,wF′)H^{\prime}=(V,F^{\prime},w_{F^{\prime}}) and H=(V,F).H=(V,F). Consider now T⊆VT\subseteq V and apply the previous bound to T∩SiT\cap S_{i} for all i.i. Because F′⊆F=∪i=1kE(Si),F^{\prime}\subseteq F=\cup_{i=1}^{k}E(S_{i}), we have that summing over the kk bounds yields

which is the desired cut-approximaton guarantee.

Finally, we are left to prove that the embedding H\mathbf{H} from H′=(V,F′,wF′)H^{\prime}=(V,F^{\prime},w_{F^{\prime}}) to G=(V,E)G=(V,E) has low congestion and can be applied efficiently. By definition of congestion,

When we route DiD_{i} oblivious in G(Vi)G(V_{i}), we can consider the E(Si)E(S_{i})-competitive ratio ρE(Si)(AE,i)\rho^{E(S_{i})}({\mathbf{A}_{\mathcal{E}}}_{,i}) of the electrical routing AE,i=BE(Vi)LG(Vi)†,{\mathbf{A}_{\mathcal{E}}}_{,i}=\mathbf{B}_{E(V_{i})}{\mathbf{\mathcal{L}}}^{\dagger}_{G(V_{i})}, as DiD_{i} is routable in E(Si),E(S_{i}), because Ei′⊆E(Si).E^{\prime}_{i}\subseteq E(S_{i}). We have

Finally, putting these bounds together, we have:

But, by the Decomposition Lemma, there exists TiT_{i} with Si⊆Ti⊆ViS_{i}\subseteq T_{i}\subseteq V_{i} such that

Removing Vertices in Oblivious Routing Construction

In this section we show how to reduce computing an efficient oblivious routing on a graph G=(V,E)G=(V,E) to computing an oblivious routing for tt graphs with O~(∣V∣t)\widetilde{O}(\frac{|V|}{t}) vertices and at most ∣E∣|E| edges. Formally we show

We break this proof into several parts. First we show how to embed GG into a collection of tt graphs consisting of trees minus some edges which we call patrial tree embeddings (Section 6.1). Then we show how to embed a partial tree embedding in an “almost jj-tree” , that is a graph consisting of a tree and a subgraph on at most jj vertices, for j=2tj=2t (Section 6.2). Finally, we show how to reduce oblivious routing on an almost jj-tree to oblivious routing on a graph with at most O(j)O(j) vertices by removing degree-1 and degree-2 vertices (Section 6.3). Finally, in Section 6.4 we put this all together to prove Theorem 17.

We remark that much of the ideas in the section were either highly influenced from or are direct restatements of theorems from adapted to our setting. We encourage the reader to look over that paper for further details regarding the techniques used in this section.

To prove Theorem 17, we make heavy use of spanning trees and various properties of them. In particular, we use the facts that for every pair of vertices there is a unique tree path connecting them, that every edge in the tree induces a cut in the graph, and that we can embed a graph in a tree by simply routing ever edge over its tree path and that the congestion of this embedding will be determined by the load the edges place on tree edges. We define these quantities formally below.

For undirected G=(V,E)G=(V,E) and spanning tree T⊆ET\subseteq E the edges cut by ee, ∂T(F)\partial_{T}(F), and the edges cut by FF, ∂T(e)\partial_{T}(e), are given by

While these properties do highlight the fact that we could just embed our graph into a collection of trees to simplify the structure of our graph, this approach suffers from a high computational cost . Instead we show that we can embed parts of the graph onto collections of trees at a lower computational cost but higher complexity. In particular we will consider what we call partial tree embeddings.

For undirected capacititated graph G=(V,E,μ⃗)G=(V,E,\vec{\mu}), spanning tree TT and spanning tree subset F⊆TF\subseteq T we define the partial tree embedding graph H=H(G,T,F)=(V,E′,μ⃗′)H=H(G,T,F)=(V,E^{\prime},\vec{\mu}^{\prime}) to a be a graph on the same vertex set where E′=T∪∂T(F)E^{\prime}=T\cup\partial_{T}(F) and

For any undirected capacitated graph G=(V,E,μ⃗)G=(V,E,\vec{\mu}) and any t>0t>0 in O~(t⋅m)\widetilde{O}(t\cdot m) time we can find a collection of partial tree embeddings H1=H(G,T1,F1),…,Ht=H(G,Tt,Ft)H_{1}=H(G,T_{1},F_{1}),\ldots,H_{t}=H(G,T_{t},F_{t}) and coefficients λi≥0\lambda_{i}\geq 0 with ∑iλi=1\sum_{i}\lambda_{i}=1 such that ∀i∈[t]\forall i\in[t] we have ∣Fi∣=O~(mlog⁡Ut)|F_{i}|=\widetilde{O}(\frac{m\log U}{t}) and such that ∑iλiMHi′\sum_{i}\lambda_{i}\mathbf{M}^{\prime}_{H_{i}} embeds G′=∑iλiGiG^{\prime}=\sum_{i}\lambda_{i}G_{i} into GG with congestion O~(1)\widetilde{O}(1).

Using this lemma, we can prove that we can reduce constructing an oblivious routing for a graph to constructing oblivious routings on several partial tree embeddings.

Let the HiH_{i} be graphs produced by Lemma 38 and for all ii let Ai\mathbf{A}_{i} be an oblivious routing algorithm for HiH_{i}. It follows that A=∑iλiMHi′Ai\mathbf{A}=\sum_{i}\lambda_{i}\mathbf{M}^{\prime}_{H_{i}}\mathbf{A}_{i} is an oblivious routing on GG with ρ(A)≤O~(max⁡iρ(Ai)log⁡n)\rho(\mathbf{A})\leq\widetilde{O}(\max_{i}\rho(\mathbf{A}_{i})\log n) and T(A)=O(∑iT(Ai))\mathcal{T}\left(\mathbf{A}\right)=O(\sum_{i}\mathcal{T}\left(\mathbf{A}_{i}\right))

The proof is similar to the proof of Lemma 15. For all ii let Ui\mathbf{U}_{i} denote the capacity matrix of graph GiG_{i}. Then using Lemma 10 we get

Using that MHi\mathbf{M}_{H_{i}} is an embedding and therefore BHiTMHi=BT\mathbf{B}^{T}_{H_{i}}\mathbf{M}_{H_{i}}=\mathbf{B}^{T} we get

2. From Partial Tree Embeddings To Almost-j-trees

Here we show how to reduce constructing an oblivious routing for a partial tree embedding to constructing an oblivious routing for what Madry calls an “almost jj-tree,” the union of a tree plus a subgraph on at most jj vertices. First we define such objects and then we prove the reduction.

We call a graph G=(V,E)G=(V,E) an almost jj-tree if there is a spanning tree T⊆ET\subseteq E such that the endpoints of E∖TE\setminus T include at most jj vertices.

For every e=(a,b)∈Ee=(a,b)\in E, we let v1(e)∈Vv^{1}(e)\in V denote the first vertex on tree path P(a,b)P_{(a,b)} incident to FF and we let v2(e)∈Vv^{2}(e)\in V denote the last vertex incident to FF on tree path P(a,b)P_{(a,b)}. Note that for every e=(a,b)∈Te=(a,b)\in T we have that (v1(e),v2(e))=e(v^{1}(e),v^{2}(e))=e.

We define G′=(V,E′,μ⃗′)G^{\prime}=(V,E^{\prime},\vec{\mu}^{\prime}) to simply be the graph that consists of all these (v1(e),v2(e))(v^{1}(e),v^{2}(e)) pairs

and we define the weights to simply be the sums

Now to embed HH in G′G^{\prime} we define M\mathbf{M} by

and to embed G′G^{\prime} in HH we define M′\mathbf{M}^{\prime} by

In other words we route edges in HH along the tree until we encounter nodes in FF and then we route them along added edges and we simply route the other way for the reverse embedding. By construction clearly the congestion of the embedding in either direction is 2.

To bound the running time, we note that by having every edge ee in HH maintain its v1(e)v^{1}(e) and v2(e)v^{2}(e) information, having every edge e′e^{\prime} in E′E^{\prime} maintain the set {e∈E∣e′=(v1(e),v2(e))}\{e\in E|e^{\prime}=(v^{1}(e),v^{2}(e))\} in a list, and using link cut trees or the static tree structure in to update information along tree paths we can obtain the desired value of T(M′)\mathcal{T}\left(\mathbf{M}^{\prime}\right). ∎

3. From Almost-J Trees to Less Vertices

Here we show that by “greedy elimination” , i.e. removing all degree 1 and degree 2 vertices in O(m)O(m) time we can reduce oblivious routing in almost-jj-trees to oblivious routing in graphs with O(j)O(j) vertices while only losing O(1)O(1) in the competitive ratio. Again, we remark that the lemmas in this section are derived heavily from but repeated for completeness and to prove additional properties that we will need for our purposes.

We start by showing that an almost-jj-tree with no degree 1 or degree 2 vertices has at most O(j)O(j) vertices.

For any almost jj-tree G=(V,E)G=(V,E) with no degree 1 or degree 2 vertices, we have ∣V∣≤3j−2|V|\leq 3j-2.

Since GG is an almost jj-tree, there is some J⊆VJ\subseteq V with ∣J∣≤j|J|\leq j such that the removal of all edges with both endpoints in JJ creates a forest. Now, since K=V−JK=V-J is incident only to forest edges clearly the sum of the degrees of the vertices in KK is at most 2(∣V∣−1)2(|V|-1) (otherwise there would be a cycle). However, since the minimum degree in GG is 3, clearly this sum is at least 3(∣V∣−j)3(|V|-j). Combining yields that 3∣V∣−3j≤2∣V∣−23|V|-3j\leq 2|V|-2. ∎

Next, we show how to remove degree one vertices efficiently.

Let G=(V,E,μ⃗)G=(V,E,\vec{\mu}) be an unweighted capacitated graph, let a∈Va\in V be a degree 1 vertex, let e=(a,b)∈Ee=(a,b)\in E be the single edge incident to aa, and let G′=(V′,E′,μ⃗′)G^{\prime}=(V^{\prime},E^{\prime},\vec{\mu}^{\prime}) be the graph that results from simply removing ee and aa, i.e. V′=V∖{a}V^{\prime}=V\setminus\{a\} and E′=E∖{e}E^{\prime}=E\setminus\{e\}. Given a∈Va\in V and an oblivious routing algorithm A′\mathbf{A}^{\prime} in G′G^{\prime} in O(1)O(1) time we can construct an oblivious routing algorithm A\mathbf{A} in GG such that

For any demand vector χ⃗\vec{\chi}, the only way to route demand at aa in GG is over ee. Therefore, if Bf⃗=χ⃗\mathbf{B}\vec{f}=\vec{\chi} then f⃗(e)=χ⃗\vec{f}(e)=\vec{\chi}. Therefore, to get an oblivious routing algorithm on GG, we can simply send demand at aa over edge ee, modify the demand at bb accordingly, and then run the oblivious routing algorithm on G′G^{\prime} on the remaining vertices. The routing algorithm we get is the following

Since all routing algorithms send this flow on ee we get that ρ(A)=ρ(A′)\rho(\mathbf{A})=\rho(\mathbf{A}^{\prime}) and since the above operators not counting A\mathbf{A} have only O(1)O(1) entries that are not the identity we can clearly implement the operations in the desired running time. ∎

Using the above lemma we show how to remove all degree 11 and 22 vertices in O(m)O(m) time while only increasing the congestion by O(1)O(1).

Let G=(V,E,μ⃗)G=(V,E,\vec{\mu}) be an unweighted capacitated graph and let G′=(V′,E′,μ⃗′)G^{\prime}=(V^{\prime},E^{\prime},\vec{\mu}^{\prime}) be the graph the results from iteratively removing vertices of degree 11 and replacing degree 22 vertices with an edge connecting its neighbors of the minimum capacity of its adjacent edges. We can construct G′G^{\prime} in O(m)O(m) time and given an oblivious routing algorithm A′\mathbf{A}^{\prime} in G′G^{\prime} in O(1)O(1) time we can construct an oblivious routing algorithm A\mathbf{A} in GG such that Note that the constant of 4 below is improved to 3 in .

First we repeatedly apply Lemma 43 repeatedly to in reduce to the case that there are no degree 1 vertices. By simply array of the degrees of every vertex and a list of degree 1 vertices this can be done in O(m)O(m) time. We denote the result of these operations by graph KK.

Next, we repeatedly find degree two vertices that have not been explored and explore this vertices neighbors to get a path of vertices, a1,a2,…,ak∈Va_{1},a_{2},\ldots,a_{k}\in V for k>3k>3 such that each vertex a2,…,ak−1a_{2},\ldots,a_{k-1} is of degree two. We then compute j=arg min⁡i∈[k−1]μ⃗(ai,ai+1)j=\operatorname*{arg\,min}_{i\in[k-1]}\vec{\mu}(a_{i},a_{i+1}), remove edge (aj,aj+1)(a_{j},a_{j+1}) and add an edge (a1,ak)(a_{1},a_{k}) of capacity μ⃗(aj,aj+1)\vec{\mu}(a_{j},a_{j+1}). We denote the result of doing this for all degree two vertices by K′K^{\prime} and note that again by careful implementation this can be performed in O(m)O(m) time.

Note that clearly KK is embeddable in K′K^{\prime} with congestion 2 just by routing every edge over itself except the removed edges which we route by the path plus the added edges. Furthermore, K′K^{\prime} is embeddable in KK with congestion 2 again by routing every edge on itself except for the edges which we added which we route back over the paths they came from. Furthermore, we note that clearly this embedding and the transpose of this operator is computable in O(m)O(m) time.

Finally, by again repeatedly applying Lemma 43 to K′K^{\prime} until there are no degree 1 vertices we get a graph G′G^{\prime} that has no degree one or degree two vertices (since nothing decreased the degree of vertices with degree more than two). Furthermore, by Lemma 43 and by Lemma 15 we see that we can compose these operators to compute A\mathbf{A} with the desired properties. ∎

4. Putting It All Together

Here we put together the previous components to prove the main theorem of this section.

Using Lemma 38 we can construct G′=∑i=1tλiGiG^{\prime}=\sum_{i=1}^{t}\lambda_{i}G_{i} and embeddings M1,…,Mt\mathbf{M}_{1},\ldots,\mathbf{M}_{t} from GiG_{i} to GG. Next we can apply Lemma 41 to each GiG_{i} to get almost-jj-trees G1′,…,Gt′G^{\prime}_{1},\ldots,G^{\prime}_{t} and embeddings M1′,…,Mt′\mathbf{M}^{\prime}_{1},\ldots,\mathbf{M}^{\prime}_{t} from Gi′G^{\prime}_{i} to GiG_{i}. Furthermore, using Lemma 44 we can construction graphs G1′′,…,Gt′′G^{\prime\prime}_{1},\ldots,G^{\prime\prime}_{t} with the desired properties (the congestion ratio property follows from the fact that we only add capacities during these reductions)

Nonlinear Projection and Maximum Concurrent Flow

In this section, we strengthen and generalize the MaxFlow algorithm to a more general setting. We believe this algorithm may be of independent interest as it includes maximum concurrent flow problem, the compressive sensing problem, etc. For some norms, e.g. ∥⋅∥1\|\cdot\|_{1} as typically of interest compressive sensing, the Nesterov algorithm can be used to replace gradient descent. However, this kind of accelerated method is not known in the general norm settings as good proxy function may not exist at all. Even worse, in the non-smooth regime, the minimization problem on the ∥⋅∥p\|\cdot\|_{p} space with p>2p>2 is difficult under some oracle assumption . For these reasons we focus here on the gradient descent method which is always applicable.

Given a norm ∥⋅∥\|\cdot\|, we wish to solve the what we call the non-linear projection problem

where y⃗\vec{y} is an given point and LL is a linear subspace. We assume the following:

There are a family of convex differentiable functions ftf_{t} such that for all x⃗∈L\vec{x}\in L, we have

and the Lipschitz constant of ∇ft\nabla f_{t} is 1t\frac{1}{t}.

There is a projection matrix P\mathbf{P} onto the subspace LL.

In other words we assume that there is a family of regularized objective functions ftf_{t} and a projection matrix P\mathbf{P}, which we can think of as an approximation algorithm of this projection problem.

Now, let x⃗∗\vec{x}^{*} be a minimizer of min⁡x⃗∈L∥x⃗−y⃗∥\min_{\vec{x}\in L}\|\vec{x}-\vec{y}\|. Since x⃗∗∈L\vec{x}^{*}\in L, we have Px⃗∗=x⃗∗\mathbf{P}\vec{x}^{*}=\vec{x}^{*} and hence

Therefore, the approximation ratio of P\mathbf{P} is 1+∥P∥1+\|\mathbf{P}\| and we see that our problem is to show that we can solve nonlinear projection using a decent linear projection matrix. Our algorithm for solving this problem is below.

Note that this algorithm and its proof are quite similar to Theorem 4 but modified to scale parameters over an outer loop. By changing the parameter tt we can decrease the dependence of the initial error.This is an idea that has been applied previously to solve linear programming problems .

Assume the conditions in Assumption 45 are satisfied. Let T\mathcal{T} be the time needed to compute Px\mathbf{P}x and PTx\mathbf{P}^{T}x and x#{x}^{\#}. Then, NonlinearProjection outputs a vector x⃗\vec{x} with ∥x⃗∥≤(1+ε)min⁡x⃗∈L∥x⃗−y⃗∥\|\vec{x}\|\leq(1+\varepsilon)\min_{\vec{x}\in L}\|\vec{x}-\vec{y}\| and the algorithm takes time

We prove by induction on jj that when 2−(j−1)∥P∥≥12^{-(j-1)}\|\mathbf{P}\|\geq 1 we have ∥yj⃗∥≤(1+2−j∥P∥)OPT\|\vec{y_{j}}\|\leq\left(1+2^{-j}\|\mathbf{P}\|\right)\text{OPT}.

For the base case (j=0j=0), (46) shows that ∥y0⃗∥≤(1+∥P∥)OPT.\|\vec{y_{0}}\|\leq\left(1+\|\mathbf{P}\|\right)\text{OPT}.

For the inductive case we assume that the assertion holds for some jj. We start by bounding the corresponding RR in Theorem 1 for gjg_{j}, which we denote RjR_{j}. Note that

Hence, the condition that gj(x⃗)≤gj(x⃗0)g_{j}(\vec{x})\leq g_{j}(\vec{x}_{0}) implies that

Take any y⃗∈X∗\vec{y}\in X^{*}, let c⃗=x⃗−Px⃗+y⃗\vec{c}=\vec{x}-\mathbf{P}\vec{x}+\vec{y}, and note that Pc⃗=Py⃗\mathbf{P}\vec{c}=\mathbf{P}\vec{y} and therefore c⃗∈X∗\vec{c}\in X^{*}. Using these facts, we can bound RjR_{j} as follows

Similar to Lemma 3, the Lipschitz constant LjL_{j} of gjg_{j} is ∥P∥2/tj\|\mathbf{P}\|^{2}/t_{j}. Hence, Theorem 1 shows that

When 2−j∥P∥≤12^{-j}\|\mathbf{P}\|\leq 1, we have

Since y⃗last\vec{y}_{\text{last}} is y⃗\vec{y} plus some vectors in LL, y⃗−y⃗last∈L\vec{y}-\vec{y}_{\text{last}}\in L and ∥y⃗−y⃗last−y⃗∥=∥y⃗last∥≤(1+ε)OPT.\|\vec{y}-\vec{y}_{\text{last}}-\vec{y}\|=\|\vec{y}_{\text{last}}\|\leq\left(1+\varepsilon\right)\text{OPT}.

2. Maximum Concurrent Flow

Similar to Section 3.2, it is equivalent to the problem

where Q\mathbf{Q} is a projection matrix onto the subspace {BTUxi⃗=0}\{\mathbf{B}^{T}\mathbf{U}\vec{x_{i}}=0\}, the output maximum concurrent flow is

and Uαi⃗\mathbf{U}\vec{\alpha_{i}} is any flow such that BTUαi⃗=χ⃗i\mathbf{B}^{T}\mathbf{U}\vec{\alpha_{i}}=\vec{\chi}_{i}. In order to apply NonlinearProjection, we need to find a regularized norm and a good projection matrix. Let us define the norm

1) It is clear that smaxL1t\text{smax}L1_{t} is smooth.

3) The Lipschitz constant of ∇smaxL1t\nabla\text{smax}L1_{t} is 2t\frac{2}{t}.

Since s3s_{3} has 1t\frac{1}{t}-Lipschitz gradient, we have

Since s2s_{2} has 1t\frac{1}{t}-Lipschitz gradient in ∥⋅∥∞\|\cdot\|_{\infty}, we have

The last thing needed is to check is that the #\# operator is easy to compute.

In ∥⋅∥1;∞\|\cdot\|_{1;\infty}, the #\# operator is given by an explicit formula

Now, all the conditions in the Assumption 45 are satisfied. Therefore, Theorem 46 and Theorem 19 gives us the following theorem:

Given an undirected capacitated graph G=(V,E,μ⃗)G=(V,E,\vec{\mu}) with capacity ratio UU. Assume U=\poly(∣V∣)U=\poly(|V|). There is an algorithm finds an (1−ε)(1-\varepsilon) approximate Maximum Concurrent Flow in time

Let A\mathbf{A} be the oblivious routing algorithm given by Theorem 19. And we have ρ(A)≤2O(log⁡∣V∣log⁡log⁡∣V∣)\rho(\mathbf{A})\leq 2^{O\left(\sqrt{\log|V|\log\log|V|}\right)}. Let us define the scaled circulation projection matrix P=I−UABTU−1\mathbf{P}=\mathbf{I}-\mathbf{U}\mathbf{A}\mathbf{B}^{T}\mathbf{U}^{-1}. Lemma 12 shows that ∥P∥∞≤1+2O(log⁡∣V∣log⁡log⁡∣V∣)\|\mathbf{P}\|_{\infty}\leq 1+2^{O\left(\sqrt{\log|V|\log\log|V|}\right)}.

By Lemma 47, the function smaxL1t(x⃗)\text{smax}L1_{t}(\vec{x}) is a convex continuously differentiable function such that the Lipschitz constant of ∇smaxL1t\nabla\text{smax}L1_{t} is 2t\frac{2}{t} and

Then, we use the NonlinearProjection to solve

And it gives a (1−ε)(1-\varepsilon) approximate maximum concurrent flow fi⃗\vec{f_{i}} by a direct formula.

Acknowledgements

We thank Jonah Sherman for agreeing to coordinate submissions and we thank Satish Rao, Jonah Sherman, Daniel Spielman, Shang-Hua Teng. This work was partially supported by NSF awards 0843915 and 1111109, NSF Graduate Research Fellowship (grant no. 1122374) and Hong Kong RGC grant 2150701.

References

Appendix A Some Facts about Norm and Functions with Lipschitz Gradient

In this section, we present some basic fact used in this paper about norm and dual norm. Also, we presented some lemmas about convex functions with Lipschitz gradient. See for comprehensive discussion.

If x⃗=0\vec{x}=0 then ∀s⃗≠0\forall\vec{s}\neq 0 we have \big{\langle}\vec{x},\vec{s}\big{\rangle}-\frac{1}{2}\|\vec{s}\|^{2}<0 but \big{\langle}\vec{x},\vec{x}\big{\rangle}-\frac{1}{2}\|\vec{x}\|^{2}=0. So we have x⃗#=0{\vec{x}}^{\#}=0. If x⃗≠0\vec{x}\neq 0 then let \vec{s}=\frac{\big{\langle}\vec{x},\vec{x}\big{\rangle}}{\|\vec{x}\|^{2}}\vec{x} with this choice we have \big{\langle}\vec{x},\vec{s}\big{\rangle}-\frac{1}{2}\|\vec{s}\|^{2}=\frac{1}{2}\frac{\big{\langle}\vec{x},\vec{x}\big{\rangle}^{2}}{\|\vec{x}\|^{2}}>0. However, for s⃗=0\vec{s}=0 we have that \big{\langle}\vec{x},\vec{s}\big{\rangle}-\frac{1}{2}\|\vec{s}\|^{2}=0 therefore we have x⃗#≠0{\vec{x}}^{\#}\neq 0. ∎

If x⃗=0\vec{x}=0 then x⃗#=0{\vec{x}}^{\#}=0 by Claim 50 and we have the result. Otherwise, again by claim 50 we know that x⃗#≠0{\vec{x}}^{\#}\neq 0 and therefore by the definition of x⃗#{\vec{x}}^{\#} we have

Setting the derivative of with respect to cc to 0 we get that 1=c=\frac{\big{\langle}\vec{x},{\vec{x}}^{\#}\big{\rangle}}{\|{\vec{x}}^{\#}\|^{2}}. ∎

Note that if x⃗=0\vec{x}=0 then the claim follows from Claim (50) otherwise we have

From this it is clear that ∥x⃗∥∗≥∥x⃗#∥\|\vec{x}\|^{*}\geq\|{\vec{x}}^{\#}\|. To see the other direction consider a y⃗\vec{y} that maximizes the above and let \vec{z}=\frac{\big{\langle}\vec{x},\vec{y}\big{\rangle}}{\|\vec{y}\|^{2}}\vec{y}

By the definition of dual norm, for all ∥x⃗∥=1\|\vec{x}\|=1, we have \big{\langle}\vec{y},\vec{x}\big{\rangle}\leq\|\vec{y}\|^{*}. Hence, it follows by linearity of both side.∎

A.2. Functions with Lipschitz Gradient

Let ff be a continuously differentiable convex function. Then, the following are equivalence:

Hence, x⃗\vec{x} is a minimizer of ϕx⃗\phi_{\vec{x}}. Hence, we have

Adding up this inequality with x⃗\vec{x} and y⃗\vec{y} interchanged, we have

The last inequality follows from similar proof in above for ϕx⃗\phi_{\vec{x}}.∎

The next lemma relate the Hessian of function with the Lipschitz parameter LL and this lemma gives us a easy way to compute LL.

Then, ff is convex and the gradient of ff is Lipschitz continuous with Lipschitz parameter LL.

where the 0≤θt≤t0\leq\theta_{t}\leq t comes from mean value theorem. By the assumption, we have

And the conclusion follows from Lemma 54. ∎