 So, let's speak a little bit about how hard is it to compute a Nash equilibrium in a normal form game. So, let's start with a little history. John von Neumann, one of the founders of modern game theory, when he investigated zero sum game, we proved the existence of equilibrium there, and he used what's known as the Brouwer fixed point theorem for that. And that led directly to algorithms for computing fixed points in such linear programs. First, there was Dante's algorithm that really equivalent to what in modern days is called LP duality, and it's an exponential procedure, although in practice used widely. Of note is the Hacciatin polynomial time approach to solving linear programs, although in truth in practice it's not used as widely, it's not as practical a procedure. And when you go beyond zero sum games, so when John Nash approved the existence of equilibrium for general sum games, he used the same fixed point theorem of Brouwer. And that also informed a series of algorithms, and they're noted there on the slide, and we will be looking at two of them, the Lemke-Hausen algorithm and a much more recent algorithm due to Ryan Porter and others. I will note that all of these are exponential in the worst case, and I will get back to that later. So let's start with the Lemke-Hausen algorithm, and let's start with a formulation of the natural equilibrium for two player games. It looks as follows. This is a busy slide, but I'll walk you through it and all will become clear. At heart are two sets of variables, the S's and the R's. The S's will capture the mixed strategy used by the two players, player one and player two. S1, for example, of S2K, for example, would be the weight of the probability with which player two plays action K in his mixed strategy. So the S1's and the S2's capture the mixed strategy of the two players, player one and player two. R's are what are called the slack variables. And to understand their roles, let's look at, for example, this equation right there. So this applies to any action of player one. For any action of player one, we look at the value that it, the value that it gives with respect to the strategy of the other player. And so we look at all the actions available to player two. We look at the payoff to player one given that he is playing a particular action J and looking at that action of player of the other two and normalizing it by the probability that the player two attaches to that strategy A2. And so if we look at this sum as a whole, this is the expected payoff for player one when playing strategy J given that the player two is playing a certain mixed strategy S2. And it is what it is. And in general, if you look at all the actions that the player one plays, they will give different payoffs. What we want is for player one to best respond to that strategy of player two. Because in equilibrium, every player is best responding to the other. And so let's call u star one to be the payoff to player one in the natural equilibrium. So in general, the payoff for player one when they play AJA will be no greater than the best response, but in general will be less. So we're going to add this slack variable as it's called that will say this is how much player one is missing relative to their best response when they're playing strategy J. Those are the slack variables. And so now that will also give us a sense for this condition here. So the slack variables are always non-negative. And in the natural equilibrium, they will be exactly zero, except when you speak about strategies that are actually played with zero probability by the player. So now we talk about the S's. S's, as we said, speak about the weight in the mix that each player gives to each of their actions in the mixed strategy they play. And so when player one plays strategy J with non-zero probability, it better be the case that he's best responding, namely that the slack variable is zero. And when they're playing with zero probability, you don't care what the slack variable is because they're not playing that strategy at all. And you capture that by requiring that the product be zero. This is exactly the condition and this is what makes it a linear complementarity problem. So I hope that's clear and you can see now similarly for player two. For player two we take each of their actions and we say if they're going to play it with some probability then and we look at their best response here given whatever player one is going to play their mixed strategy and we're going to look at the slack variable here and again we're going to require that the product be zero. In other words, the probability that they play J is non-zero just in case the slack variable is zero. So this is the nature of this mathematical optimization program and of course I forgot to mention but of course we want the S's to be a probability distribution. So they sum to one and they're all non-zero. Alright so this is our linear complementarity program and now come Lemke-Housen who suggests to find a solution in a particular way and we won't go over it but the flavor of it is to initialize the S's and the R's a particular way in fact to artificially initialize them all to zero and then one by one take them it's called a pivoting procedure take the an S and an R in turn alternating between the two taking them out of the set that has the current value and replacing it with a complementary variable if it's an R replacing with an S and with an S replacing an R until you get an equilibrium. That's the general flavor of it and in this lecture we won't go in more detail into the Lemke-Housen procedure but it is a procedure that looks very deeply at what a natural equilibrium is sets it up as a mathematical program and then searches the space of variables in an informed way. Let's now look at a very different procedure one that doesn't look in as much detail at the structure of equilibria but compensates by performing heuristic searching in a certain way. So let's look at it and we'll look at it at two stages. The first step is to note that when you fix the support of a strategy profile finding out whether there is a natural equilibrium with that support is an easy problem. Remember that the support of a strategy is consists of all the actions to which the player is giving non-zero probability in that mixed strategy. So let's look at this formulation. Let's look and this will be limited to two players and so let's look at all players in turn for example player one and let's look at every action of that player for example A sub i. We'll be looking for some mixed strategy P, mixed strategy profile for one for each of the players that will give us a natural equilibrium namely each agent will be best responding and so for all actions in the support that we're considering we'd want the agent to be best responding so let's assume that the best response value is V sub i just call it that number then we want A i in fact to be a best response to the rest and what we want is all other actions any other actions not in support to give us a value that's no greater than the best response and we want it for each each of the two players and each of their actions in the support so that makes sense and we want these to be a probability so we want the probabilities in the support to be non-zero we want the probabilities outside the support to be zero and we want it indeed to be a probability distribution this all makes sense so this is a linear program it's solvable in polynomial time that is theoretically there's a polynomial time procedure in practice the procedures used are not polynomial in the worst case but but nonetheless effective by the way notice that we actually use the assumption that we're fixing the support here superficially you might look at it and say oh i could do the same thing but simply ignore the support part where are we using that really well we're using it in the assumption that that when we're best responding inside and don't have a profit profit deviation we're actually playing these p i's with probability with positive probability because if we playing the remaining strategy with zero probability in fact doesn't matter if we're best responding to it or not and so this is where this assumption is hidden so now we know that when we fix the support we can solve the question efficiently the flying the ointment is the fact that there's an exponential number of support to explore and this is the second part we need to simply now start exploring the set of support and i won't go into details about how we do it but the basic idea is the following we will bias the support to supports that are close in size to one another that is we will not start by considering one agent looking at only two strategies among which is his randomizing and the other agent looking at 17 strategies we'll look at a strategy profile that's similar who support is similar in size we'll also start with small supports and gradually move to larger supports if we do that and we involved and we we use another trick called conditional domination that is we look at certain thing we can ignore along the way then what turns out that although the procedure is in the worst case exponential as is the Lemke-Housen in fact it performs in practice quite well and in fact better than essentially all other procedures tried including the the Lemke-Housen these procedures do have exponential worst case and so the question is can we do better are there procedures that are less than exponential in the worst case and that takes us from the realm of complexity algorithms to the realm of complexity analysis so let's first remind ourselves a little bit about what complexity analysis looks like we're looking at classes whole classes of problems such as the class of all games and the problem of determining a sample natural equilibrium those games and we look at the how hard is that class as a whole and so here are it's a small part of complexity hierarchy the class p as it's known is the class of problem for which a polynomial time solution is is known the class np is the class of problems for which a class a solution can be verified in polynomial time but not necessarily found in polynomial time the class np complete is the hardest among all the np classes that is the classes to which all np problems can be reduced and perhaps the biggest unsolved problem theoretical computer science is the question of whether np is different from p it's widely believed to be but has not been proved so this is the general background we need to keep in mind and now we can ask well where does where does the problem finding a natural equilibrium reside in p in np what can we say well first of all strictly speaking we can't quite speak about it being in p or np because we know from Nash's theorem that a natural equilibrium always exists so the question does it exist in natural equilibrium is trivial the answer is yes so we need to look at it a little differently one way to look at differently is to ask for natural equilibrium with specific kind of properties so for example we can say does it have a unique natural equilibrium or does a exist a natural equilibrium that's strictly Pareto efficient or does is there a natural equilibrium that guarantees a given player some minimum payoff or can we guarantee some minimum social welfare in a natural equilibrium does there is a natural equilibrium that includes some pure pure strategy some action of the player in it or conversely that does exclude it all of these and others are examples of questions that are provably np np hard okay so that tells us something about the hardness but still we still ask about it just finding a sample natural equilibrium how hard is that so we've seen the algorithm people have tried very hard to find algorithms computing a sample natural equilibrium and it does seem hard the question is can we somehow capture that formally within the complexity hierarchy and and and for that we need to introduce a new new concept the essential concept is that of the new class of problems called ppad for polynomial parity arguments directed graph introduced by Christos Papadimitri in 1994 we weren't going to detail but just so you know the chronology ppad is a specialization of a class called tfnp which is in turn was a specialization of a problem called fnp going in detail here is is beyond the scope of of what we want to speak about but it does help us now position the complexity of finding a sample natural equilibrium in the complexity hierarchy and again we have the class of polynomial time problems of problem that can be verified in polynomial time with these being the hardest among them and given that ppad turns out to reside somewhere within this class now again we don't know whether this entire class does not collapse and all become one of the same it's why do you believe that it does not but proof doesn't exist however we do know that ppad lies someplace in between p and np now what does that have to do with the problem computing a natural equilibrium well that's where the the following theorems come in originally it was shown that the problem computing a natural equilibrium is complete for this class ppad that is it's the hardest among all problem that class initially proved for four players then for all four games with three or more players and then finally in 06 for all all class of games and so we widely believe that the problem is not polynomial cannot prove it but we do know where it resides and within the complexity hierarchy that we are familiar with