 Yeah, so so what I want to talk about is, you know, I want to talk about well sort of new approach to the classical problem of maximum flow and You know this approach is roughly based on a notion of electrical flows which you know Which and it exploits its connection to so-called the La Cazanne system So hence this rather mysterious title and I hope most of it Well, what's going on will become clear soon. Okay, so this is joint work with Paul Cristiano John Kellner, Dan Spillman and Shenkuateng Okay, so let's start with the definition of the problem. We were We will be concerned here in the stock. So this is the maximum flow problem So in this problem, we are given a directed graph G and you know with integral integer capacities on the arcs And we have two special vertices source S and sink T And now you know our task is to find the feasible ST flow of maximum value in this graph So what do we mean by a well feasible ST flow? So, you know, so an ST well so a flow for us is just some assignment of numbers to the arcs And now we want this this numbers to obey two types of constraints So the first type of the constraints are the flow conservation constraints And what they just tell us is that for any vertex other than S and T Well, we have to the flow into the vertex has to be equal to the flow out of the vertex Okay, and now the second type of constraints You want to enforce are the capacity constraints and what we just want to happen is that the flow on any particular arc is Never bigger than the capacity of this arc. Okay, so once we have an Well, once we have a flow that obeys these two types of constraints This is the feasible ST flow and now what you want to maximize Well, we want to maximize the value of this flow, which is just the total net flow into T and by flow conservation constraints This is equal to total net flow out of S. Okay so, you know here we see that You know this flow has a value of 7 but you know the actual the actual value of the max flow here is 10 and Well, here is the flow that achieves this value. Okay, so this is the example of flow that achieves this value Okay, so this is the problem and You know and well once you talk once you talk about the maximum flow problem Then usually you also want to talk about Well a similar but slightly different problem in the minimum ST cut problem And so what's happening in the minimum ST cut problem? Well, what we want to do well, we are given the same graph dated graph with Capacitation arcs and we have S and T and what we are looking for is the me Well, we want to find an ST cut in this graph that has minimum capacity. Okay, so what does this mean? Well, so an ST cut is just a partition of vertices into two pieces such that, you know S is in one piece and this and T is there in the other piece So so any cut that separates SMT is an ST cut and now among all of this ST cuts what you want to find Well, we want to find the cut that minimizes the capacity and You know the capacity of the cut is just the sum of capacities of all the arcs that leave Well the part that contains S. Okay, so here we see that you know That all this you know all these arcs are in the are living See and the capacity of this cut is 10 and in fact, this is the minimum cut of this graph Okay, so the minimum cut the new ST cut in this graph has you know has has value of 10 So so so now we have two problems. We have maximum flow problem We have minimum ST cut problem And so why do we talk about both of them? Well, we talk about both of them because they are very intimately connected So there is a celebrate celebrated maximum in cut theorem which states that you know the Well for any graph that directed or not We have that the value of the maximum of the maximum ST flow in this graph is always equal to the value of the minimum ST of to the capacity of the minimum ST cut in this graph. Okay, so in other words, we see that Well maximum flow problem and the minimum ST cut problem are the walls of each other So note that you know sheer this theorem talks only about the values of this of the solution not about the solution in Themselves so well what well we can take this connection a little bit further And actually what one can see is that we can well if we are given the maximum flow in a graph We can actually recover a minimum ST cut from it. Okay, the way it happens is quite easy So we know we look at the we look at the maximum flow and then you know We look at all the arcs in this well in this graph such that the value of the flow on this arc is exactly equal to the capacity Okay, then we just remove all of this arcs from the graph and you know one can approve that You know once we remove this arcs then s and t are separated in graph and just by taking now any cut that Well separates that corresponds to the separation. We will recover a minimum ST cut in the graph Okay, so so we see that from some from maximum flow Solution we can recover the minimum ST cut problem, but well we should know that we don't know how to do it the other way So we don't know any easy way of you know taking a minimum ST cut solution and recovering, you know, well a maximum flow maximum flow solution from it well without just solving the maximum flow from a scratch, okay So this is the connection between those two problems and because of these connections You know what I will focus on in this talk for most well at least for most part of this talk I will be just talking about the maximum flow problem Okay, and essentially because of this connection the well whatever I will say for maximum flow problem Essentially will apply to minimum ST cut problem as well and I will there are some slight differences and I will discuss them at the end Okay, so from from now off well for for most of the talk Let's forget about the new ST cut problem and just focus on the maximum flow problem. So Okay, so now we have our maximum flow problem and you know the question is you know, why do we care about this problem and You know the answer is quite easy here because well You can just say that maximum flow problem is you know a fundamental optimization problem And there are many reasons for that so the study of this problem started quite a while ago in 1930s and the reason why there is so much interest in this problem is that it's really broadly applied in practice So, you know just if you look at the statement of the problem You can easily see that there are some you know obvious applications to well to logistic and transportation But it turns out that there is you know by now there is a host of sometimes quite non-trivial Connections that allow that That teach us that you know max flow problem actually No, whenever you are able able to make progress on the maximum max flow problem You are automatically making progress on you know on many other fronts So for instance in you know what in graph partitioning scheduling or computer revision, okay? So this is one type of reasons why we care about maximum flow problem and you know There is also other reason so other than is that sort of maximum flow problem You know was one of these problems who's you know well our quest for understanding Well led to discovery of tools that well first we try to apply to maximum flow problem But then they turned out to be you know useful for many other problems So in a sense this problem was one of the problems that you know that shaped our understanding of computer algorithms and you know in particular, you know whenever you Will teach algorithms you are quite likely to use this problem as a you know as an exposition of some of the Concepts for instance prime priority in duality and also, you know So this is just you know more general conceptual reason But also somehow once you study the maximum flow problem It seems that you know that trying to make an improvement of these problems You know it requires understanding of you know of graphs and and graph algorithms that sort of you know That's really you know whenever you are able to make progress on well on this question You are usually also able to make progress on some related question as well So really this is problem that we want to focus our attention on because you know It seems that it captures some something about the algorithm graph theory that we really want to understand Okay, so these are some reasons why we care about the problem and now it's time to just you know say You know, what do we know about it? So well as you might imagine, you know, there is quite a lot of work on you know on maximum flow problem And this is actually only a snippet of it. So this is not by far everything that was published about this problem So I hope you will understand why I will not go over you know over each of these results in detail And all I just want to say that you know the current you know state of the art algorithm is the similar algorithm of Goldberg row Whose running time is given by this expression. Okay So as you want to focus on the big picture here, so let me just introduce some no utilitation So we will use out in the notation to suppress Polygorithmic factors and if you are concerned by that well the polygorithmic factors We will be suppressing in the end. They are really not big. So don't be too alarmed by that So now once we use out in the notation We see that the running time of the Goldberg row algorithm is dominated by you know One of these two terms depending on the sparsity of the underlying graph So sparsity of a graph is just the ratio of edges of this of the graph to the number of his vertices And what I would like to do in this talk Well, I would like to further simplify the ground here And I would like to assume that you know that our graphs that we are dealing with our sparse So the number of edges is not much bigger than the number of vertices. Okay? And you know, why do we do this simplification simplification? So again, you know, it allows us to focus on the only big picture But also well, you know, we have also, you know, some limited ways of trying to deal with Well, there's a good dance graph. So some somehow when sometimes when the graph is dense We are able to apply some techniques to sort of to help to help fight the sparsity But in general, you know one more reason to do that is that essentially this past case this past case And while the sparse case of maximum flow problem seems to be the benchmark of our understanding of this problem Because essentially, you know, whenever we want to we'll never try to make some improvement It seems that the sparse sparse graph case is the hardest one to make improvement on So really, so really, this is this is something we want to focus on again So, you know, so once we well, once we focus on the sparse graphs Then the running time of the gold-black row is just, you know, and to the three halves Modular the poly logarithmic factor and probably one of the most important questions in algorithmic graph theory nowadays is, you know Whether we can improve this running time So can you compute maximum flow problem in sparse graphs in time that is, you know, faster than n to the three halves Okay, so this is a very important question and you know, we all try really hard to answer it But unfortunately, you know, despite the effort, there is not much progress on this question so far in the sense It's even slightly more, well, slightly worse because if you just focus on, you know On a baby case of this problem in which, you know All the capacities of the graph are like all the capacities are just equal to one Then this bound of n to the three halves was already known for 35 years and is still standing So even in the special case, we also don't know how to make an improvement So we are a bit stuck here and, you know, and once we realize as a community that we are stuck Then, you know, one of the challenges that, you know, that emerged, you know The challenge that is understood to be one of the, you know, first steps towards answering the grand challenge Is, you know, is trying to do something well, hopefully simpler So what we would like to do, well, we would like to approach, well, to solve the maximum flow Approximately, so we have an approximation of one minus epsilon and do it only for undirected graphs Okay, so this is this is sort of an intermediate challenge and, you know, know that in this challenge We are settling, you know, for we are giving up on two aspects Yes, so on one hand we are, you know, settling for approximation instead of optimal solution And on the other hand, we are settling for undirected graphs instead of allowing directed graphs But, you know, actually the interesting thing is that if we give in only on one of these aspects Then the problem provably does not become simpler So you can just, you know, whenever you just focus on approximating maximum flow in directed graphs Or, you know, solving it optimally in undirected graphs Then you will, you know, you can just, well, recover the original problem out of it So really, you know, to get, well, a hope for a simpler problem We really need to give in on two of these aspects Okay, on both of these aspects Okay, so now this is the, well, this is hopefully a simpler challenge But still, you know, even for this simpler challenge, you know, the best known algorithm till now Even when all the crises are equal to one Is just to use the exact algorithm So it was not clear how to, you know, how to take advantage of this, you know, relaxed assumptions And the result I want to discuss today is actually, well, the first progress on this front And, you know, what we show is that you can actually obtain such a 1-minus epsilon approximation For maximum flow in undirected graphs And, you know, and the running time that you will get is roughly n to the 4-thirds Okay? So this is the running time for the case when the graph is sparse And, you know, if the graph is dense Then the running time that you will get, you know, it depends on m as shown So essentially you just have m times n to the 1-third And also we have a similar result for the minimum sdcat problem I will discuss at the end Okay? So this is the result So now, you know, let's talk, you know, about how, well, how can you, how can you, well, get this result So, you know, as usual it is, you know, when you try to discover something new It's good to, well, look back and see what were the previous approaches to solving this problem So essentially most of the algorithms for the maximum flow problem They are all based on, well, including Goldberg's algorithm They are all based on so-called argumenting path framework of, well, of Ford and Fulkerson And roughly what this framework boils down to Well, it's based on, you know, iterative finding of sdpaths in the residual graph So just to give you an illustration, so imagine that, you know, that you have a directed graph And you have snt and let's say all the capacities are 1 Then, you know, what this, like, one way of solving a maximum flow problem in these graphs Via this framework would look less follows So you would start by finding some snt path in this graph Now you just, you know, flip the directions of all the arcs, you know, on this path And this will, you know, this way you will get the residual graph corresponding to Augumenting the flow along this path And then, well, you have your residual graph So you look for another snt path here once again And you flip the directions of the arcs And, you know, and you keep doing this until you are no longer able to find an snt path And you can prove that, you know, once you are no longer able to find a new snt path Then, you know, then essentially you are able to recover in very easy way The maximum flow solution for the corresponding graphs So as you can see, you know, this framework is, you know, is very nice You know, it's purely combinatorial, you know, we just build the flow path by path And, you know, it's really, it's really, it's really clean So, you know, so the tempting thing to, well, that you might want to do to, well, to get the result Would be just, you know, so let's look at this framework and, you know, at the best algorithm Let's say, let's look at the Goldback row algorithm And let's try to speed it up by leveraging the fact that, you know, we are okay with, you know, providing approximation And, you know, leveraging the fact that our graph is undirected Okay But of course, you know, as tempting as it is, you know, this is exactly, you know This is exactly the moment where we were stuck for quite a long time already Because, you know, well, well, yes, that's what you would hope to do But the question is, how can you do it? And we don't know how to do it either So because of that, you know, the approach that we are actually taking is, well, it's a new approach And, you know, what we are trying to do in a one sentence We try to probe the global flow structure of the graph by solving linear system Okay So, you know, how, so the question that should pop up in your mind now is, you know How to relate something as combinatorial as flow structure to something as linear algebraic as linear system And, you know, as you might guess from the title of the talk, the answer is electrical flows Okay So this will be the key concept that we will be, that we will be employing here So let's talk a bit about, you know, what electrical flows are So probably the simplest definition of the electrical flows is like physics 101 definition So what it says is, you know, so imagine that you have a graph and now the graph is undirected And we have some resistances assigned to, you know, there is one resistance RE assigned to each of the edge Well, not one, but like for every edge we have a resistance and we have source SN and SYNCT And now, you know, what is the electrical flow in this graph? Well, it's something very simple, so the recipe for it is very simple So what we do, you just, well, you just treat edges as resistors and the resistance is given by REs And now, you just, you know, you just connect the battery to SNT And you look at the current that settles in this, you know, in this Well, in this resistor networks and that will be the electrical SD flow Okay, so this is a, you know, very natural and intuitive definition The problem with it is that sort of it's hard to use it if you want to prove some mathematical statement So the actual equivalent definition of electrical flow that we'll be using in this work is slightly different So what it says is that if I have a graph G and resistances RE and source SN SYNCT Then, well, what do I understand by an electrical flow over value F? It's just a solution to the following optimization problem So what I do is just I optimize over all the SD flows in my graph of value F And I choose the one of this, you know, SD flows that has minimum energy And the energy here is just the sum over all the edges of, you know, RE times the flow on the edge squared So this is the heat dissipation formula that you know from physics And essentially, you know, so I view the electrical flow as just, you know, unique solution to this minimization Energy minimization problem Okay, so this is sort of reminiscent of the principle of least energy from physics Okay, so this will be our definition of electrical flow And you can show that it's equivalent to the previous definition, you know, that it all follows from, you know From Ohm's law and Kirchhoff's law and so on Okay, so now, you know, we know what electrical flows are But, you know, we care about algorithms here So, you know, the question is, you know, that we want to answer now is, you know, how can you compute an electrical flow in a graph? So if I have a, well, if I'm given a graph and resistance SNT and the prescribed value How can I compute the corresponding electrical flow? So the really astonishing and, you know, really interesting thing is that all you really need to do to find such an electrical flow Is just to solve an electrical, we just need to solve a linear system And actually it gets even better than that because it's not an arbitrary linear system But a linear system with a very special structure, namely a Laplacian system Which means this is a system in which the constraint matrix corresponds to the Laplacian of the underlying graph So I will not define what Laplacian of the graph is because it's not really relevant for the rest of our discussion here But all I just want to say is that this is a fundamental object that describes our graph And in fact, you know, there is the whole field of spectral graph theory Whose only purpose is just the study of, you know, how the properties of the graph can be tied to the properties of the underlying graph And there are quite a lot of nice connections there So now we know that all we really need to do in order to compute an electrical flow We just solve Laplacian linear system And well, this is really good news for us Because it turns out that we know how to solve such a system extremely efficiently So there is a seminal paper of Spelman and Pank that recently was greatly improved by, well, simplified maybe And improved as well, but mostly simplified by Kutis Miller and Pank And essentially it says that, you know, if you have such a system, you can essentially solve it in nearly linear time So when you think about it, you know, it's, you realize that it turns out, like the implication of this result Is that electrical flows is a nearly linear time primitive So you can compute something as, well, seemingly complex as electrical flow In times that is not much bigger than the time needed for running the Dijkstra's algorithm So the natural question is, you know, once you have this, you know, hammer in your hand How can you use it to say something about maximum flow problem? So let's try to talk about this now Okay, so how can you use electrical flow computations to approximate the maximum flow? Okay, so I will, you know, for this discussion, what I want to do, I want to, well, you know, simplify the grant once more And what I want to do, I want to assume that all the capacities in our graphs are equal to one And also I want to assume that actually we somehow know the value of the maximum flow, F star So we don't know what the max flow is, but we know what is its value And if you are bothered by the second condition, then all I can just say that, you know You can just use an appropriate binary search to essentially, you know, get rid of loss of generality Okay, so now once we, you know, once we have this assumption in place, you know So how could you go about using electrical flows to approximate maximum flow problem? Well, if you thought about this a bit, probably the first, you know, the first thing you would think about would be as follows So, you know, you just take your graph You set all the resistances to one because there is no other good number to start with And you would just, you know, compute the corresponding electrical ST flow in this graph of the prescribed value And then what? Well, then you would just hope for the best and you just assume, you know Maybe this will be the good approximation to the maximum flow problem, okay? So, you know, so will this, will this, will this approach work? So, any thoughts? Yes, it would be, well, way too good if it was true So, fortunately this algorithm does not work and, you know, to see why it doesn't work So this was a good example So imagine the following simple graph that consists of two ST paths So one is of length one and one is of length seven And, you know, if you look at the maximum flow, then, you know, what it does Well, it will just send one unit of flow on one path and the one unit of flow on the other path So the value of the max flow will be two But if we look at the corresponding electrical flow, then it will favor the lower path much more Because its resistance is much, much smaller And, you know, in the end what you will get, well, you will get something that does not look like a, as an, well, as a maximum flow And by just, you know, making this kind of example on a bigger scale You can get, you know, farther and farther from, you know, being close to any maximum flow solution So the way the algorithm is stated here, it doesn't work Okay, so the question is, you know, how to fix it And, well, when you realize that and you will think again Then probably, you know, the second thought that you will have Would be something along this line So what you would do, well, you would, you know, you would You would again start with, you know, all resistances being one You would compute the electrical flow But now you would not, you know, return this flow right away because it might not be a good approximation So what you would do instead, well, you would look at this flow And, you know, if you see some edges that flow way too much flow You would just, you know, increase their resistances just in this way to discourage this, you know, this overflow there And, you know, once you updated the resistances You just repeat the whole thing again So you just use the resistances to compute the electrical flow again And, you know, and you will keep doing that until hopefully some convergence happens And, you know, and you want, and you hope that, you know, the number of iterations that you will need to do To get this convergence will be not too big, okay So this is, you know, the second approach you might try And sort of the really surprising thing is that this approach can actually be made work And, you know, this is in particular the way our algorithm works at the higher level And the only difference that actually there is between our algorithm and this template Is that the way we got the final solution is not by looking at the last flow we compute But by just taking the average of all the flows that we will, well, that we will compute along the way And it will be made, it will be clear in a second why this is what we do Because at first it looks slightly counterintuitive, okay So this is the outline of our algorithm and, you know, what I want to do in the, well, in the reminder Is just, you know, fill in some of the blanks that clearly are there So let me just recall that, you know, that in everything that I'm saying here, you know We are, like, we are just dealing with undirected graphs And also we made a simplifying assumption just for the sake of the exposition That all capacities are one, you know, our graph is sparse And we know the value of the maximum flow F star, okay So, you know, so to fill in the blanks, you know The observation that will be crucial here is just the following So, you know, imagine that we have some resistances Re And let's consider the corresponding electrical flow F of value F star So clearly, you know, if you look at this flow We don't expect this flow to obey all the capacity constraints Yes, we just have seen examples when this is bluntly not true However, still, you know, despite the fact that, you know That all capacities are constraints are satisfied There is still something we can tell about the feasibility of the obtained solutions Namely, what will happen is that, you know The theoretical flow from E will, you know Even though the worst case overflow might be very big If you look at a particular average overflow Then it will be always, you know, at most what it should be So it will be always at most one So the average we are looking at here Is the weighted average of the flows on the edges When, you know, each, when each edge is taken in this average Proportionary to the value of the resistance So, you know, so once again, so, you know In the worst case, you know The worst case overflow here can be extremely big But if you look at this one particular average It will be always at most one So at most what it should be So we see that because of this observation, you know The electrical flow computation gives us a very fast algorithm That solves the following, you know Very crude version of the maximum flow problem Namely, feasibility on average max flow problem Which essentially asks us, you know That in addition to the graph and capacities and S and T We are also given some weights One weight per each edge And what we are asking for We just want to find the flow of value of star For which this particular average overflow is Well, it's nonexistent The flow, this average is always at most one So, you know, the way we get it is just by We just take WEs as our resistances Okay And now, so this is a very crude version of the maximum flow problem But sort of the key point here Is that actually we already know a way of Making such a crude algorithm useful to us And, you know, the name of this method Is multiplicative weight update method Which is, you know, this is a method that Well, it stems from the work of Front and Shapir on boosting And from the work of Plotkin-Schmois-Tardosh on Lagrangian Relaxations and was cleaned up And casted in the uniform framework By Aurora, Hazan and K And essentially, like, you know In one sentence description What this multiplicative weight update method is Well, it is a way, it's a technique For turning weak algorithms into strong ones So what does it mean in our setting? It allows us to do It allows us to take this crude algorithm That solves, you know, this maximum flow problem Only with the feasibility on average condition And by calling it repeatedly with different weights It allows us to recover, you know, the approximate solution To the problem we really care about Namely the maximum flow problem Okay, so this is the tool that we will use So how can you achieve this feat? Well, it's actually very simple But brilliant, but very simple So the basic idea will be as follows Imagine we have this crude algorithm And we treat it as an oracle Like it's a black box oracle And what we will do We will maintain some weights One weight per each weight And initially, all these weights will be equal to one And well, if you have a black box And we have a weight There's only one thing you can do So we just query this algorithm with these weights And what we get in return We get some flow that is of value f star And it's feasible on average With respect to these weights So now, once we got this flow We will update this weights based on this flow In some way that we will describe later And now we updated our weights So what we do is we query the algorithm again And we get another flow out of it And now we update the weights based on this new flow again And we keep doing that, you know, for some number of time And what we do, at the end We just return the average of all the flows That we computed along the way Okay, so it is quite easy to see That the flow, this average of all these fis Will be a flow of value f star Because each individual flow Was an st flow of value f star What is, you know, not that obvious at first Is, you know, that actually this average Will be also a good approximation to the maximum flow So it will approximately preserve all capacity constraints So let's see why this is the case And, you know, to explain why this is the case I have to actually explain to you How we update the weights, okay Because I didn't explain it yet So imagine that we are somewhere In the execution of this algorithm So we have some weights Then we create our algorithm And we got a flow in return And now we have to update weights So the way we update weights Is just like we just do it individually Edge by edge And we just update each of the weights In a multiplicative manner So this is where the name of the method is coming from And this multiplicative manner is proportional to the epsilon Which is our desired accuracy parameter And, well, the value of the flow On this edge in this flow f And it's normalized by something I called Rho f, which is essentially the Largest edge overflow that f incurs And the reason why we are Why we are normalizing here We just want to make sure that this multiplicative Update is something between one and one Plus epsilon, because in this way We will make sure that the evolution of the weights Is smooth enough so we can, you know, prove Some things about, you know, how it evolves Okay So, well So this is the way The weights are updated And now once you have these updates The dynamics that emerges out of it Is just as following So, you know, if you fix your attention Of any particular edge Then, of course, it can suffer some large overflow From time to time But, you know, whenever it suffers a large overflow Well, its weight grows rapidly Yes, it grows at exponential rate So, on the other hand The average overflow is always small Well, you can use this fact to show that, you know If you look at the evolution of the sum Of all the weights, then this, you know Then the sum doesn't grow too fast, actually And now just by binding The growth of any individual weight By the growth of the whole sum What you will get out of it is that, you know Even though some edges can suffer Large congestion from time to time It doesn't happen too often And now, you know Once you are averaging out I'm averaging everything out Across, you know, all the executions Then, you know, this few bumps on any particular edge Will be just, you know, averaged out And in the end, you know, you will just get A one-plus epsilon overflow in the worst case Okay? So this is the intuition which allows you to prove You know, to prove something And, you know, once you make it precise And it's really very, very simple But beautiful but very, very simple proof And, you know, and what you can prove Is that, you know, once you take The rho over epsilon square iteration Of this procedure, then you will Indeed recover the one-minus epsilon Approximation to maximum flow problem And rho here is just, you know It's called the width of the oracle And this is just the largest overflow That we ever encounter Okay? And just to see why We have this like, note that in a sense We really need to have this dependence On rho in the number of iterations Because even if you have one bump Of value rho, then to average it out Is rho iterations. So in a sense These bumps are essentially tied Okay? So now, you know This was, you know, about the multiplicative Weights update method and the question Why this is interesting to us And I already said that Well, it's interesting to us because You know, electrical flow computation Corresponds exactly to the screwed Algorith for the maximum flow problem That we need here. So all we just need To do, well, we just can, you know Use these ideas from multiplicative To use them to fill Our template. So here is Our template again. And now, you know What we just do? Well, we just Make the convergence condition to, well Make it very simple. We just say that, you know We just do this until, you know Rho over epsilon squared iteration have passed And the way we update the resistance Is, well, this is exactly the multi We do it accordingly to the multiplicative With an update rule. Okay? So once we fill in this template As it is here, then it's known We just know that, you know, the algorithm That we will get, it will indeed return The approximate solution to the maximum flow problem And it's running time will be, you know Rho epsilon squared times, you know O tilde of n, because, you know Each computation of electrical flow is just In a linear time. So we get out of it You know, n rho over epsilon squared algorithm That computes the Maximum flow problem Approximately. So now We know almost everything that we need Well, except one tiny detail Because, you know, the question is, you know What is, you know, what is this Worst case bound on the overflow Rho? So what is the width Of the, you know, of our electrical flow Computations? Because, you know, we have to Determine it to know what will be the running time Of the algorithm. Okay? So, you know Let us ponder on this question For a minute. So, you know, what can be The largest overflow that, you know, electrical flow Might produce? And, you know So, first, let's know That, you know, if all the resistances are one Then there is a very simple proof That shows that this overflow Will never be bigger than, well, roughly The square root of n. Okay? So how does This proof goes? Well, it's very simple. So it just consists Of two steps. So in first steps We just want to establish some Upper bound on the On the energy of the electrical flow Okay? How do we do this? Well We just, we do this by just Looking first at, you know, at The energy of some particular s t flow Of value f star, namely the max flow So we don't know much about the max flow But, well, one thing that we really know About it is that, well, it has, it is of Value f star. And also, we know That flow on every individual edge Is never bigger than one So if we look at the energy of this Max flow, then this will be just some of this, you know Of these flows on each particular edge And, you know, so in the worst case It will be, well, it will be never bigger than m So we know that the energy of max flow Is never bigger than m. But now we Recall that the definition of electrical flow Is that, you know, that the energy of Electrical flow is just the minimum, you know Over energy of any s t flow Of value f star. So in particular It cannot be bigger than the energy of the Well, of the max flow. So we know That the energy of electrical flow that we compute Is never bigger than m. Okay? So that's the first step. And now the Second step, you know, is almost immediate So now we just fix our attention on any particular edge And we just look at the square Of the flow on it. Clearly, you know This, this is only one of the terms In the expression for the, well, on the energy Of the electrical flow. So we know that, you know The square of the flow will be never bigger Than m. But now we just take, you know Square roots of both sides and we use the fact That our graph is sparse. And we recover The desired square root of n bound. Okay? So, so this is the Proof. So we see that, you know That if all the resistances are one Then this worst case bound is just Square root of n. You know, but sort of, well The problem is that once the We allow the resistances to be non-uniform Then actually there is No, no bound that we can really Supply. And to see why this is the case Well, you just need to imagine that, you know You have one edge which has extremely tiny Resistance. And as a result, you know It might be very, like the electrical flow Might be very likely to put all its flow On this particular edge because it will minimize energy And, you know, there is not much you can do here So you can get really, really bad overflow So this is a problem, but also there is a Very easy fix for that. So what we just do Well, we just add some tiny Small constant Well, component to each of the resistance Just to ensure that there is No edge in our graph Whose resistance is much smaller Than the average resistance. And once You do that, you know, you just repeat The same, essentially the same proof I just showed you. And you will get That, you know, after this operation You will never have bigger overflow Over epsilon. Okay? Which is completely fine of us. And in this way We upper bounded the worst case overflow And we get, you know, an algorithm That runs in time n to the 3 halves. So, you know, everything is nice And easy, but the problem is that, you know n to the 3 halves is not what I Will promise you, because we already know How to compute the flow exactly in this time So how to get, you know The desired improvement. So how to get The n to the 4th time. Well, let's talk About this now. So, you know, clearly By the structure of the algorithm, we see That, you know, what we want to focus on Is just minimizing the number of electrical flow Computation, because this is the basic Computation we are doing. So, attempting Where, you know, of doing that is just, you know Where we had this, you know, very easy But also, you know, clearly not optimal Proof of, you know, of the worst Of the worst case upper bound on the overflow Row. So if you are able to get a better Proof, you will immediately get Better, well, upper bound on the running Time of the algorithm. So, you know How about improving this upper bound. Well, unfortunately, well Despite the fact that the proof might Look a little bit, you know, wasteful Because we just used the energy to Bound, you know, just the Consribution of one particular edge. It actually Is essentially tight. And here's an example That shows that. So imagine a graph Which consists of roughly square root of n Paths. And each of these paths, except The last one, is of length Roughly square root of n. So clearly If you look at the max flow, then it Is in one unit of flow on each path And the value of the max flow will be Square root of n. Okay? But then If we look at the electrical flow Corresponding to this graph, then we Will see that this, you know, one Short cutting edge would be, you know, vastly Preferred. And essentially it will Essentially get roughly, well, half of The flow, which will be square root of n. So we see that in this graph, even When all the resistances are one We get already this worst case Square root of n overflow. And that's a trouble. Because, you know, What can we do now, yes? Like we This approach that we really were hoping For doesn't work. But nice thing about This example is that, you know, even though This is the worst case example for our Upper bound, it actually gives us a hint What should we do to make things better? So the observation that we should make here Is that, you know, so like if we look At this graph and we just remove This one short cutting edge. So what will Happen? So on one hand, you know, The value of max flow in this graph Is like we just removed one edge and There is like, and the value of the Max flow is square root of n. So we just Reduce the value of the max flow by one Over square root of n fraction, which is completely acceptable For us. But on the other hand, if you Look at the electrical flow in the graph After the removal of this edge, then it's, you know Dramatically better behaved, yes? Now it's actually the max flow in the, like The electrical flow corresponds to the max flow In the remaining graph. So, well Here it worked for this particular Example, and that's very nice, but The question is, you know, can we always Repeat this kind of trick. So can we turn This observation into an algorithmic idea And, you know, as you might imagine The answer is yes. And, you know, so Essentially what we are doing, where we Will try to modify our crude algorithm That's based on electrical flow computations To make sure that it self-enforces Smaller overflow, raw prime, okay? So how would we do This self-enforcement? Well, we will do it in the most Well, the simplest possible way. So what we will do? Well, we will do the following. So the way we modify the algorithm is the following So it will once again, given the weight It computes the resistances and it computes the flow Corresponding to it. But it does not return This flow right away. Instead it just, you know Takes a look at this flow. And if it sees Well, if it sees that there is no edge That flows more than raw prime, then it just returns This flow and it's happy because, you know It, the, this raw prime Upper bound on the overflow is met. But if there is some edge that flows more Than raw prime, what it does is just remove And recomputes the flow again. And it keeps doing that until, you know It finds a flow that satisfies it Or some disaster happens, like We will disconnect SMT, okay? So the nice thing about this, this modification Is that, you know, clearly, you know If this algorithm always successfully Terminates, then the, you know The worst-case overflow of this, of this Good algorithm will be raw prime By definition. So that's a very Good thing. But of course the question Is, you know, how do we choose raw prime So to, you know, ensure that, you know It always successfully terminates, okay? So note that, you know, it's, you know There are some two things That, two issues that we have to counterbalance So on one hand, we would like raw prime To be as small as possible because It will make the width of our oracles As small as possible But on the other hand, you know If we make raw prime too small Then our removal of edges will become too aggressive And, you know, either we will end up Disconnecting the graph, or even if we Disconnect the graph, what will happen is a number Of recomputation of the electrical flow Inside of the oracle will be, you know Much bigger than the benefit of having The small width and, you know, the sort of The smaller number of outer level Outer level iterations of the algorithm So the question is, you know, what is The best way of choosing raw prime And turns out that, you know, surprisingly The, you know, the sweet spot here Is just setting raw prime to be roughly Into the one-third. And I will not Give you the computation that leads To, you know, to exactly this band But sort of the phenomenon that we are leveraging here Is that, you know, whenever we remove An edge that flows a lot in the electrical flow Then, you know, on one hand, max flow does not Get changed too much But, you know, if you remove an edge That flows a lot in the electrical flow Then, you know, if you look at the electrical flow After removal of this edge Then the energy of this flow Will grow significantly And you just use the energy of your flow As sort of your potential function Things go the way you want We want them to go So I will not go any further into that But this is the basic idea So, okay, so, you know, so this is The sweet spot and, you know, this is exactly The way we get the desired end-to-the-four-thirds Algorithm, okay So now, you know, let me just wrap up By, you know, going back to the minimum STCAT problem and saying a few words about that So, you know, as I said, you know, by this You know, well, as I said, you know We know that there is this tight connection To the maximum flow problem and the minimum STCAT problem In particular, we can use, you know And, well, we can use the maximum flow solution To get the minimum STCAT problem So as a result, because of that Well, all the previous algorithms where, you know We're computing, well, essentially all the Previous algorithms for minimum STCAT Are based on, you know, running the maximum flow algorithm And just using the procedure that I Showed to you to obtain the minimum STCAT And, you know, as a result, you know The picture for minimum STCAT Is essentially the same as for The maximum flow problem. The only difference Is that actually, when we care about, you know The only minimum STCAT problem Then we know that we can always assume That our graph is essentially sparse Without loss of generality. And this is the Like the beautiful cut sparsifier Construction of venture and cargo So, you know, whenever you have a Graph, it can be dense. There is a very Very efficient procedure that, you know Gives you a different graph that is Sparse and, you know, and whenever you are Able to find approximate minimum STCAT in this, well, in this new graph Well, it immediately will be also Approximately a minimum STCAT In the original graph. So we have Sort of this sparsity condition without Loss of generality. So, you know, So that's, well, that's all good And, you know, and as I said We also have a result for minimum STCAT problem, which whose running time Is similar to the running time of the Max flow algorithm. But, well There is one key here. So, you know, so Well, in the light of what I just said You would think that this Well, this results completely not interesting Because, you know, all you can do is Just use the previous max flow algorithm And get minimum STCAT out of it But that, well, that approach will not Really work because the problem here is that We only know how to get an, you know Optimal minimum STCAT out of the Optimal maximum flow And we don't know, we don't know How to extract an approximate minimum STCAT out of approximate maximum flow So this approach will not work. At least We don't make it work. So, you know, so So, well, so that's the problem So we have to devise some different Way of, you know, of getting this minimum STCAT. And, well, once again We want to apply, you know, we want to Use electrical flow computations. So what Do we do? Well, the observation that We make here is that actually, you know If you look at electrical flow computations Well, electrical flow computations And you look at the electrical flow in a graph Then, you know, one thing that Come with electrical flow are the voltages That assigns, well, number to each Of the vertices. And as a result, you know If you, and what will happen is that, you know The smaller number, like S will get the largest number, and You know, and T will get the smallest number So as a result, you can view Well, any electrical flow in your graph Gives you a way of embedding your graph Into the line, okay? So if you have a flow On your graph and you look at the voltages Then, you know, then you can Treat it as an embedding of your graph In the line, such that S will be on Left side, and T will be on the right side And now if you look at any vertical Line, then this vertical line will be Define an ST cut for you, okay? So that's a nice thing, because, you know In linear time, you can, well You can get some, well, some Interesting cuts of your graph And, you know, and that's what you, like And that's the way we want to obtain Our minimum ST cut. But of course The problem is that, you know, if you just Look at your graph and you compute some electrical flow And look at this embedding and this cut Absolutely no reason why any of these cuts Should be small, like, that, why Any of these cuts should be close to minimum ST cut So, well, to fix this problem We sort of, we, well, we use Similar approach to the one that we used When, when the, you know, the sort of the Simplistic max flow algorithm didn't work So what we do, well, you know We just, you know, we just start by, you know All the resistance is being one We compute the electrical flow Look at the embedding and look at this Vertical cuts, and if none of these cuts Are good, what we do, we just Increase the resistances on the edges That, you know, that flow too much And, you know, once we did that, you know We recompute the flow again with these new resistances And, you know, and we look for, you know And we look for the cut Well, for a good cut again If we don't find it, we just do the same And, you know, and what you can prove Is that, you know, if you make this Update through appropriate, so it will be Very similar to the update through that We are having for the maximum flow problem We have a guarantee that after at most Roughly end to the one-third iterations You are guaranteed to find, you know You are guaranteed to find, well A good cut among these vertical cuts Essentially what will happen is that, you know You will get, like, it will turn out that Most of the resistances in your graph Will be focused on some of them Minimum ST cuts, and in this way It will be exposed in this vertical In this, well, it will be exposed In this embedding into the line So this is the way Well, this is the way our minimum ST cut Algorithm works, and the core of the analysis Actually turns out to be very similar To what was happening for the maximum flow problem Even though the algorithms are seemingly Completely different, and in particular here We get our solution out of the last flow We compute, we don't take any averages here Okay, so this is the Minimum ST cut algorithm, so now Let me just conclude and state some open Problems, so yes, so what We presented here is the, well Approximate algorithm for Maximum ST flow and Minimum ST cut problem And of course, you know The natural question here would be You know, so we managed to get some progress On maximum flow problem using identical flows But the question is, you know, how far Can we take this approach? So in particular You know, can we take this approach to Yell the, you know, nearly linear time algorithm That, well, that gives us An exact solution to the maximum flow problem? So you know, so in particular Well, this is the big question, and you know And we can break it down into Smaller question, so first question is, you know Can you make a variant of this Algorithm running in linear time? So actually So what I should say at this point, it's actually Well, we know by now that our analysis Of the running time of our maximum algorithm is tight So, you know, if you look at the algorithm The way it is stated, it actually In the worst case, runs in this, you know Into the four-thirds time, so there is some Modification you need to make, but you know Is it possible to make a modification That will actually yield a nearly linear time Running time, so that's the first question Second question, in a sense, even the bolder one Is, you know, can we make these ideas Work for directed graphs? Okay, so everything We are doing here was Only about directed graphs, so the question is Can we do something that will imply Some results for directed graphs? Okay And at first, try to look at, you know Complete wishful thinking, because Even the notion, like, we don't know how to compute An electrical flow in a directed graph, yes Like, we just don't know how to enforce That, you know, that the flow is always going In the right direction along the edges But, well, actually, it's not that bad Because notice that I told you that If you are able to solve Maximum flow problem exactly in Undirected graphs, then this immediately Gives you an result for directed graphs So, essentially, all you really need to be able To do, to get exact algorithm For directed graphs is just, you know To be able to find an Approximate algorithm for undirected Graphs, but, you know, the only thing that Has to change is that the dependence on error Has to be logarithmic instead of polynomial As in our approach So, once you are able to get The logarithmic dependence of the running time On your accuracy, you know Everything, everything flows through Okay, so that's an interesting question To do, but I should mention that, you know The problem with doing that is that Well, it's clear that if you want To do that, you have to change the algorithm Entirely, so because the problem is that The multiplicative way of this method Actually, this polynomial dependence on the error Is, you know, it's inherent there So, you really have to use something Different approach of using identical flows To get, to get this better dependence On epsilon So, these are the open questions About the maximum flow problem, but I also would like to make a more general Well, open questions here So, sort of, you know, I view this Result as one of the, well, yet another Example of, you know, when bridging Renal algebra, algebra and commutorial algorithms You know, yielded something interesting So, of course, we know, you know A classical success story in this regime And value connection, when we show That, you know, looking at the spectrum Of the Laplace, in particular At its, well, second smallest Eigenvalue gives us, you know, some understanding Of, you know, mixing time of the random works Or, well, we are able to do the spectral partitioning A very, very good partitioning method So, the question is, you know Well, this is what we are able to achieve We're just looking at, you know, Especially at this lambda 2 So, you know, can we make this connection, you know Can we go beyond that, yes? It actually seems to capture much more information About the Laplace than just, you know Its second smallest Eigenvalue So, maybe, you know, by using it, you know You are able to get some new insight Into the known problem, or maybe Even get some tools for yet unknown problems So, there is a couple of candidates When I think it's It might be possible to get something better So, one candidate is just would be To use electrical flows to get Even better spectral partitioning So, you know, the spectral partitioning Based on looking at the Eigenvector Corresponding to the second smallest Eigenvalue But, you know, how about, well, using the Embedding of the graph Given by the electrical flow and, you know And looking at the vertical cut And maybe, you know, maybe there is a good way Of updating the resistances Maybe you are always guaranteed to get some nice cut So, that's one direction to explore Another direction are, you know, sort of You would like to use this kind of Electrical flow paradigm to get results Also for, you know, for other version Of flow problems So, you would like to think about Multicomunity flow problems Or maybe minimum cost flow problems And as far as I know Richard Peng and Gary Miller They have some results that Get better approximation for Multicomunity flow problems Based on this framework and this kind of reasoning So, by using electrical flows And, yes, so and This is exactly the question, so, you know So, once you have this big hammer In the form of electrical flows The question is, you know, where else can you use it To get something interesting And I hope that you will be, you know You will have some nice ideas And something interesting will happen Thank you