Improved Algorithms for Computing Fisher's Market Clearing Prices The MIT Faculty has made this article openly available. Please share how this access benefits you. Your story matters. Citation Orlin, James B. “Improved algorithms for computing fisher’s market clearing prices.” Proceedings of the 42nd ACM symposium on Theory of computing, STOC '10, ACM Press, 2010. 291. As Published http://dx.doi.org/10.1145/1806689.1806731 Publisher Association for Computing Machinery Version Author's final manuscript Accessed Thu May 26 19:33:06 EDT 2016 Citable Link http://hdl.handle.net/1721.1/68009 Terms of Use Creative Commons Attribution-Noncommercial-Share Alike 3.0 Detailed Terms http://creativecommons.org/licenses/by-nc-sa/3.0/ Improved Algorithms for Computing Fisher’s Market Clearing Prices ∗ James B. Orlin MIT Sloan School of Management Cambridge, MA 02139 jorlin@mit.edu ABSTRACT We give the first strongly polynomial time algorithm for computing an equilibrium for the linear utilities case of Fisher’s market model. We consider a problem with a set B of buyers and a set G of divisible goods. Each buyer i starts with an initial integral allocation ei of money. The integral utility for buyer i of good j is Uij . We first develop a weakly polynomial time algorithm that runs in O(n4 log Umax + n3 emax ) time, where n = |B| + |G|. We further modify the algorithm so that it runs in O(n4 log n) time. These algorithms improve upon the previous best running time of O(n8 log Umax + n7 log emax ), due to Devanur et al. [5]. Categories and Subject Descriptors F.2 [Theory of Computation]: Analysis of Algorithms and Problem Complexity General Terms Algorithms, Economics Keywords Market Equilibrium, Strongly Polynomial 1. INTRODUCTION In 1891, Irving Fisher (see [3]) proposed a simple model of an economic market in which a set B of buyers with specified amounts of money were to purchase a collection G of diverse goods. In this model, each buyer i starts with an initial allocation ei of money, and has a utility Uij for purchasing all of good j. The utility received is assumed to be proportional to the fraction of the good purchased. In 1954, Arrow and Debreu [2] provided a proof that a wide range of economic markets (including Fisher’s model) have unique market clearing prices, that is, prices at which ∗Research supported in part by ONR grant N00014-05-10165. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. STOC’10, June 5–8, 2010, Cambridge, Massachusetts, USA. Copyright 2010 ACM 978-1-4503-0050-6/10/06 ...$10.00. the total supply is equal to the total demand. However, their proof relied on Kakutani’s fixed point theorem, and did not efficiently construct the market clearing prices. Eisenberg and Gale [8] transformed the problem of computing the Fisher market equilibrium into a concave cost maximization problem. They deserve credit for the first polynomial time algorithm because their concave maximization problem is solvable in polynomial time using the ellipsoid algorithm. Devanur et al [5] gave the first combinatorial polynomial time algorithm for computing the exact market clearing prices under the assumption that utilities for goods are linear. For a problem with a total of n buyers and goods, their algorithm runs in O(n8 log Umax +n7 log emax ) time, where Umax is the largest utility and emax is the largest initial amount of money of a buyer, and where all data are assumed to be integral. More precisely, it determines the market clearing prices as a sequence of O(n5 log Umax + n4 log emax ) maximum flow problems. (For details on solution techniques for maximum flows, see Ahuja et al. [1]). Here we provide an algorithm that computes a market equilibrium in O(n4 log Umax + n3 log emax ) time. We also show how to modify the algorithm so that the running time is O(n4 log n), resulting in the first strongly polynomial time algorithm for computing market clearing prices for the Fisher linear case. The running time can be further improved to O((n2 log n) (m+n log n)), where m is the number of pairs (i, j) for which Uij > 0. Moreover, the algorithm can be used to provide an -approximate solution in O((n log 1/)(m + n log n)) time, which is comparable to the running time of the algorithm by Garg and Kapoor [10] while using a stricter definition of -approximation. 1.1 A Formal Description of the Model Suppose that p is a vector of prices, where pj is the price of good j. Suppose that x is an allocation of money to goods; that is, xij is the amount of money that buyer i spends P on good j. The surplus cash of buyer i is ci (x) = ei − j∈G xij . The backorder amount of good j is bj (p, x) = P −pj + i∈B xij . We assume that for each buyer i, there is a good j such that Uij > 0. Otherwise, we would eliminate the buyer from the problem. Similarly, for each good j, we assume that there is a buyer i with Uij > 0. Otherwise, we would eliminate the good from the problem. For a given price vector p, the ratio Uij /pj is called the bang-per-buck of (i, j) with respect to p. For all i ∈ B, we let αi (p) = max{Uij /pj : j ∈ G}, and refer to this ratio as the maximum bang-per-buck for buyer i. A pair (i, j) is said to be an equality edge with respect to p if Uij /pj = αi (p). We let E(p) denote the set of equality edges. A solution refers to any pair (p, x) of prices and allocations. We say that the solution is optimal if the following constraints are all satisfied: al. [5]) so that prices are always non-decreasing. The algorithm relies on a parameter ∆, called the scaling parameter. We say that a solution (p, x) is ∆-feasible if it satisfies the following conditions: i. ∀i ∈ B, ci (x) ≥ 0; i. Cash constraints: For each i ∈ B, ci (x) = 0. ii. ∀j ∈ G, if pj > p0j , then 0 ≤ bj (p, x) ≤ ∆; ii. Allocation of goods constraints: For each good j ∈ G, bj (p, x) = 0 . iii. ∀i ∈ B and ∀j ∈ G, if xij > 0, then (i, j) ∈ E(p), and xij is a multiple of ∆; iii. Bang-per-buck constraints: For all i ∈ B and j ∈ G, if xij > 0, then (i, j) ∈ E(p). iv. ∀i ∈ B and ∀j ∈ G, xij ≥ 0 and pj ≥ 0. iv. Non-negativity constraints: xij ≥ 0, pj ≥ 0 for all i ∈ B and j ∈ G. The above optimality conditions are the market equilibrium conditions specified by Fisher, as well as the optimality conditions for the Eisenberg-Gale program [8]. 1.2 Other Algorithmic Results The computation of market clearing prices is an important aspect of general equilibrium theory. Nevertheless, as pointed out in [5], there have been few results concerning the computation of market equilibrium. We refer the reader to [5] for these references. Papers that are particular relevant to this paper include papers by Garg and Karpur [10], Ghiyasvand and Orlin [11], and Vazirani [14]. Garg and Kapoor present a fully polynomial time approximation scheme (FPTAS) for computing approximate market clearing prices for the Fisher linear case as well as other cases. Ghiyasvand and Orlin develop a faster FPTAS while using a stronger (less relaxed) definition of approximate market equilibrium. Vazirani develops a weakly polynomial time algorithm for a generalization of the Fisher linear case in which utilities are piecewise linear functions of the amounts spent, and in which there is a utility of saving money. This more general utility function permits the modeling of several types of constraints, including upper bounds on the amount spent by buyer i in the purchase of good j. 1.3 Contributions of this Paper The primary contributions of this paper are a strongly polynomial time algorithm for computing the market clearing prices, as well as a simple and efficient weakly polynomial time algorithm. Additional contributions of this paper include the following: i. An algorithm for obtaining an -approximate solution that is comparable to the running time of the algorithm of Garg and Kapoor [10], while simultaneously having a stricter definition of -approximation. ii. Our weakly polynomial and strongly polynomial time algorithms terminate after an optimal set of edges is identified, which may be much sooner than the termination criterion given by Devanur et al. [5]. 1.4 Overview of the Weakly Polynomial Time Algorithm The algorithm first determines an initial vector p0 of prices (as described in Section 3.1). During the algorithm, prices are modified in a piecewise linear manner (as per Devanur et We say that a solution (p, x) is ∆-optimal if it is ∆-feasible and if in addition v. ∀i ∈ B, ci (x) < ∆. The ∆-feasibility conditions modify the optimality conditions as follows: buyers may spend less than their initial allocation of money; it is possible for none of good j to be allocated if pj = p0j ; more than 100% of a good may be sold; and allocations are required to be multiples of ∆. Our algorithm is a “scaling algorithm” as per Edmonds and Karp [7]. It initially creates a ∆-feasible solution for ∆ = emax . It then runs a sequence of scaling phases. The input for the ∆-scaling phase is a ∆-feasible solution (p, x). The ∆-scaling phase transforms (p, x) into a ∆-optimal solution (p0 , x0 ) via a procedure PriceAndAugment, which is called iteratively. The algorithm then transforms (p0 , x0 ) into a ∆/2-feasible solution. Then ∆ is replaced by ∆/2, and the algorithm goes to the next scaling phase. One can show that within O(n log Umax + emax ) scaling phases, when the scaling parameter is less than 8n−2 (Umax )−n , the algorithm determines an optimal solution. 1.5 Overview of the Strongly Polynomial Time Algorithm If xij ≥ 3n∆ at the beginning of the ∆-scaling phase, then x0ij ≥ 3n(∆/2) for the solution x0 at the beginning of the ∆/2-scaling phase. We refer to edges (i, j) with xij ≥ 3n∆ as “abundant.” Once an edge becomes abundant, it remains abundant, and it is guaranteed to be positive in the optimal solution to which the scaling algorithm converges. If a solution is “∆-fertile” (as described in Section 4) at the end of the ∆-scaling phase, then there will be a new abundant edge within the next O(log n) scaling phases. If the solution (p, x) is not ∆-fertile, then the algorithm calls a special procedure that transforms (p, x) into a new solution (p0 , x0 ) that is ∆0 -fertile and ∆0 -feasible for some ∆0 ≤ ∆/n2 . Since there are at most n abundant edges, the number of scaling phases is O(n log n) over all iterations. 2. PRELIMINARIES We next state how to perturb the data so as to guarantee a unique optimal allocation. We then establish some results concerning feasible and optimal solutions. For a feasible price vector p, it is possible that the set E(p) of equality edges has cycles. If p is the optimal vector of prices, this leads to the possibility of multiple optimal solutions. Here we perturb the utilities as follows: for all pairs i, j such that Uij > 0, we replace Uij by Uij + in + j , where is chosen arbitrarily close to 0. One can use lexicography to simulate perturbations without any increase in worst case running time. The advantage of perturbations is that it ensures that the set of equality edges is always cyclefree. Henceforth, we assume that the utilities have been perturbed, and the algorithm uses lexicography. If E is the equality graph prior to perturbations, and if E 0 is the equality graph after perturbations, then E 0 is the maximum weight forest of E obtained by assigning edge (i, j) a weight of in + j. (This can be seen if one observes that (i, j) is an equality edge if log Uij − log pj = log αi ). In the case that prices are changed and more than one edge is eligible to become an equality edge (prior to the perturbation), then the algorithm will select the edge with maximum weight for the perturbed problem. Henceforth, we assume that the utilities are perturbed, and we implement the algorithms using weights as a tie-breaking rule. Suppose that H ⊆ B × G. If H is cycle free, then the vector BasicSolution(H) is the unique vector p satisfying the following: i. If (i, j) ∈ H and if (i, k) ∈ H, then Uij /pj = Uik /pk . P ii. For i∈C ei = P each connected component C of H, j∈C pj . iii. If (i, j) ∈ / H, then xij = 0. P iv. For all i ∈ B, j∈G xij = ei . P v. For all j ∈ G, i∈B xij = pj . The first two sets of constraints uniquely determine the vector p. The latter three sets of constraints uniquely determine the allocation vector x. The following lemma implies that an optimal solution can be obtained from its optimal set of edges. ∗ Lemma 2. Suppose that (p, x) is any solution and that B 0 ⊆ B, and G0 ⊆ G. Then eB 0 − pG0 = cB 0 (x) + bG0 (p, x). 3. THE SCALING ALGORITHM 3.1 We initialize as follows. Let ∆0 = emax /n; ∀i ∈ B, let P UiG = j∈G Uij ; ∀i ∈ B and ∀j ∈ G, let ρij = Uij ei /nUiG ; ∀j ∈ G, let p0j = max {ρij : i ∈ B}; ∀i ∈ B and ∀j ∈ G, x0ij = 0. We note that the initial solution (p0 , x0 ) is ∆0 -feasible. Moreover, it is easily transformed into a feasible solution by setting xij = pj for some i with (i, j) ∈ E(p0 ). 3.2 Proof. We first observe that H ∗ is cycle free because the perturbation ensures that there is a unique optimal solution. Suppose that (p̂, x̂) = BasicSolution(H ∗ ). The optimal price vector satisfies the |B| constraints given in the first two sets of constraints for BasicSolution(H ∗ ). Since these constraints are linearly independent, p∗ = p̂. We next consider the remaining three sets of constraints that determines x̂. For each component C of H ∗ , there are |C| variables and |C| + 1 constraints, one of which is redundant because the sum of the moneys equals the sum of the prices. These constraints are all satisfied by x∗ . Since there are |H ∗ | variables that are not required to be 0, and there are |H ∗ | linearly independent constraints, it follows that x∗ = x̂. Any solution satisfying the above systems of equations is a rational number with denominator less than D by Cramer’s rule. Moreover, if j ∈ G is in component C, then the numerator of the rational number representing pj is a multiple P of i∈B ei , which is at least emin . In the following, the use of a setP as a subscript indicates summation. For example, eS = i∈S ei . The following lemma is elementary and is stated without proof. The Residual Network and Price Changes Suppose that (p, x) is a ∆-feasible solution at some iteration during the ∆-scaling phase. We define the residual network N (p, x) as follows: the node set is B ∪ G. For each equality edge (i, j), there is an arc (i, j) ∈ N (p, x). We refer to these arcs as the forward arcs of N (p, x). For every (i, j) with xij > 0, there is an arc (j, i) ∈ N (p, x). We refer to these arcs as the backward arcs of N (p, x). Let r be a root node of the residual network N (p, x). The algorithm will select r ∈ B with cr (x) ≥ ∆. We let ActiveSet(p, x, r) be the set of nodes k ∈ B ∪ G such that there is a directed path in N (p, x) from r to k; if k ∈ ActiveSet(p, x, r), we say that k is active with respect to p, x and r. As per price changes in [5], we will replace the price pj of each active good j by q × pj for some q > 1. This is accomplished by the following formula: f (q) = Price(p, x, r, q), where fj (q) = ∗ Lemma 1. Suppose that (p , x ) is the optimal solution for the Fisher Model. Let H ∗ = {(i, j) : x∗ij > 0}. Then BasicSolution(H ∗ ) = (p∗ , x∗ ). Moreover, if x∗ij > 0, then x∗ij > emin /D, where D = n(Umax )n . The Initial Solution qpj pj if j ∈ ActiveSet(p, x, r) otherwise, and where q is below a certain threshold. UpdatePrice(p, x, r) is the vector p0 of prices obtained by setting p0 = Price(p, x, r, q 0 ), where q 0 is the maximum value of q such that (p0 , x) is ∆-feasible. At least one of two conditions will be satisfied by p0 : (i) there is an edge (i, j) ∈ E(p0 )\E(p), at which point node j becomes active; or (ii) there is an active node j with bj (p0 , x) ≤ 0. In the former case, PriceAndAugment will continue to update prices. In the latter case, it will carry out an “augmentation” from node r to node j. The following lemma is straightforward and is stated without proof. Lemma 3. Suppose that (p, x) is ∆-feasible and p0 is the vector of prices obtained by Update-Price(p, x, r). Then (p0 , x) is ∆-feasible. 3.3 Augmenting Paths and Changes of Allocation Suppose that (p, x) is a ∆-feasible solution. Any path P ⊆ N (p, x) from a node in B to a node in G is called an augmenting path. A ∆-augmentation along the path P consists of replacing x by a vector x0 where x0ij 8 < xij + ∆ if (i, j) ∈ P is a forward arc of N (p, x); xij − ∆ if (i, j) ∈ P is a backward arc of N (p, x); = : xij otherwise. Lemma 4. Suppose that (p, x) is ∆-feasible and that cr ≥ ∆. Suppose further that P is an augmenting path from node r to a node k ∈ G for which bj (p, x) ≤ 0. If x0 is obtained by a ∆-augmentation along path P , then (p, x0 ) is ∆-feasible. Moreover, cr (x0 ) = cr (x) − ∆, and cj (x0 ) = cj (x) for j 6= r. We will divide the proof of Theorem 1 into several parts. But first we deal with an important subtlety. We permit a good j in G to have no allocation if pj = p0j . We need to establish that node j will receive some allocation eventually, and that bj (p, x) ≥ 0 at that time. We present the procedures PriceAndAugment and ScalingAlgorithm next. We will establish their proof of correctness and running time in Subsection 3.4. Lemma 5. Suppose that ∆ < p0j /n, and that that (p, x) is a ∆-feasible solution at the end of the ∆-scaling phase. Then bj (p, x) ≥ 0. Algorithm 1. PriceAndAugment(p, x) begin select a buyer r ∈ B with cr (x) ≥ ∆; compute ActiveSet(p, x, r); until there is an active node j with bj (p, x) ≤ 0 do replace p by UpdatePrice(p, x, r); recompute N (p, x), b(p, x), and ActiveSet(p, x, r); enduntil let P be a path in N (p, x) from r to an active node j with bj (p, x) ≤ 0; replace x by carrying out a ∆-augmentation along P ; recompute c(x) and b(p, x); end Algorithm 2. ScalingAlgorithm(e, U ) begin ∆ := ∆0 ; p := p0 ; x := 0 (as per Section 3.1); ScalingPhase: while (p, x) is not ∆-optimal, replace (p, x) by PriceAndAugment(p, x); E 0 := {(i, j) : xij ≥ 4n∆}; if BasicSolution(E 0 ) is optimal, then quit; else continue; ∆ := ∆/2; for each j ∈ G such that bj (p, x) > ∆, decrease xij by ∆ for some i ∈ B; return to ScalingPhase; end 3.4 Running Time Analysis for each Scaling Phase and Proof of Correctness Our bound on the number of calls of PriceAndAugment during a scaling phase will P rely on a potential function argument. Let Φ(x, ∆) = i∈B bci (x)/∆c. We will show that Φ ≤ n at the beginning of a scaling phase, Φ = 0 at the end of a scaling phase, and each call of PriceAndAugment decreases Φ by exactly 1. At the ∆-scaling phase, ScalingAlgorithm selects a buyer r with cr (x) ≥ ∆. Ultimately it performs a ∆-augmentation. It continues the ∆-scaling phase until it obtains a ∆-optimal solution. Each ∆-augmentation reduces cB by ∆. At the end of the scaling phase, ScalingAlgorithm does a check for optimality. If an optimal solution is not found, it divides ∆ by 2, obtains a ∆/2-optimal solution and goes to the next scaling phase. Theorem 1. During the ∆-scaling phase, ScalingAlgorithm transforms a ∆-feasible solution into a ∆-optimal solution with at most n calls of PriceAndAugment. Each call of PriceAndAugment can be implemented to run in O(m + n log n) time. The number of scaling phases is O(emax +n log Umax ); the algorithm runs in O(n(m + n log n)(emax + n log Umax )) time. Proof. We prove the contrapositive of the lemma. Suppose that bj (p, x) < 0. By Property (ii) of the definition of ∆-feasibility, pj = p0j . Select node i ∈ B such that (i, j) ∈ E(p0 ). We will show that ci (x) ≥ ∆, which is a contradiction. By construction, p0j ≤ ei /n, and so ei /n ≥ n∆. Note that for each k ∈ G, Uik Uij Uij Uik ≤ 0 ≤ 0 = . pk pk pj pj Therefore, (i, j) ∈ E(p). Let K = {k ∈ G : xik > 0}. Because (i, k) ∈ E(p), the above inequalities hold with equality. Therefore, for each k ∈ K, pk = p0k .PMoreover, p0k ≤ ei /n for each k ∈ K, and ci (x) = ei − k∈K xik ≥ ei − P k∈K (pk + ∆) ≥ ei − |G|ei /n − |G|∆ = |B|ei /n − |G|∆ > ∆. We now return to the proof of Theorem 1. Proof of correctness and number of calls of PriceAndAugment. By Lemma 3 and Lemma 4, if a solution is ∆-feasible at the beginning of a PriceAnd-Augment, then the sequence of solutions obtained during the procedure are all ∆-feasible. We next bound the number of calls of PriceAndAugment during a scaling phase. Lemma 4 implies that each call of PriceAndAugment reduces Φ by exactly 1. In the first scaling phase ci (x0 ) ≤ ∆0 for all i ∈ B. Thus, Φ(x0 , ∆0 ) ≤ |B| < n. Suppose next that ∆ is a scaling parameter at any other scaling phase. Let (p, x) be the 2∆-optimal solution at the end of the 2∆-scaling phase. Thus ci (x) < 2∆ for all i ∈ B. Therefore, Φ(x, ∆) ≤ |B|. However, immediately after replacing 2∆ by ∆, the algorithm reduces by ∆ the allocation to any good j with bj (p, x) > ∆. This transformation can increase Φ by as much as |G|∆. By Lemma 4, the number of calls of PriceAndAugment is at most |B| + |G| = n. Proof of time bound per phase. We next show how to implement PriceAndAugment in O(m+|B| log |B|) time. The time for identifying an augmenting path, and modifying the allocation x is O(n). So, we need only consider the total time for UpdatePrice. We cannot achieve the time bound if we store prices explicitly since the number of prices changes during PriceAndAugment is O(|B|2 ). So, we store prices implicitly. Suppose that p is the vector of prices that is the input for PriceAndAugment, and let p0 be the vector of prices at some point during the execution of the procedure and prior to obtaining an augmenting path. Let r be the root node of PriceAndAugment, and choose v so that (r, v) ∈ E(p). Rather than store the vector p0 explicitly, we store the vector p, the price p0v , and the vector α(p). In addition, for each active node k, we store γk , which is the price of node v at the iteration at which node k became active. If node j ∈ G is not active with respect to p0 , then p0j = pj . If j is active then Then p0j = pj × p0v /γj . An edge (i, j) has the possibility of becoming an equality edge at the next price update only if i is active and j is not active. Suppose that (i, k) ∈ E(p). In such a case, (i, j) will become active when the updated price vector p̂ satisfies Uij /p̂j = αi (p̂) = αi (p)γi /p̂v . Accordingly, if node i ∈ B is active, and if node j ∈ G is not active, then the price βij of node v at the iteration at which (i, j) becomes an equality edge is βij = γi αi (p)pj /Uij . For all inactive nodes j ∈ G, we let βj = min {βij : i is active}, and we store the β’s in a Fibonacci heap, a data structure developed by Fredman and Tarjan [9]. The Fibonacci heap is a priority queue that supports “FindMin”, “Insert”, “Delete”, and “Decrease Key”. The FindMin and Decrease Key operations can each be implemented to run in O(1) time in an amortized sense. The Delete and Insert operations each take O(log |B|) time when operating on |B| elements. We delete a node from the Fibonacci heap whenever the node becomes active. We carry out a Decrease Key whenever βj is decreased for some j. This event may occur when node i becomes active and edge (i, j) is scanned, and βij is determined. Thus the number of steps needed to compute when edges become equality edges is O(m + |B| log |B|) during PriceAndAugment. In addition, one needs to keep track of the price of v at the iteration at which bj will equal 0. Suppose that node i ∈ B is active. Let q 0 be the minimum value ≥ 1 such that bj (q 0 p, x) = 0 mod ∆. Thus bj = 0 when the price of node v is q 0 γj . Accordingly, βj = q 0 γj , and we store β j in the same Fibonacci Heap as the inactive nodes of G. Thus the total time to determine all price updates is O(m+|B| log |B|). 3.5 Abundant Edges and Bounds on the Number of Scaling Phases Before proving the bound on the number of phases given in Theorem 1, we introduce another concept and prove a lemma. An edge (i, j) is called ∆-abundant if xij ≥ 3n∆, where x is the allocation at the beginning of the ∆-scaling phase. (We could use 2n rather than 3n here, but 2n will not be sufficient for the strongly polynomial time algorithm.) The concept of abundance was introduced by Orlin [12] for a strongly polynomial time algorithm for the minimum cost flow problem. (See also, [13] and Chapter 10 of Ahuja et al., [1].) The following lemma shows that once an edge (i, j) becomes abundant, it stays abundant at every successive iteration. (The reader may note that the following lemma suggests that it would be better to define “abundance” with a right hand side of 2∆ rather than 3∆. However, a larger value is needed for the proof of Property (iv) of Lemma 13.) Lemma 6. If edge (i, j) is abundant at the ∆-scaling phase, it is abundant at the ∆/2-scaling phase, and at all subsequent scaling phases. Proof. Let x0 and x00 be the initial and final allocations during the ∆-scaling phase. If (i, j) is ∆-abundant, then x00ij ≥ 3n∆ − n∆ = 2n∆ = 4n(∆/2). If it is abundant at the ∆/2-scaling phase, by induction it will be abundant at all subsequent scaling phases. Proof of Theorem 1: the number of scaling phases. Suppose that (pk , xk ) and ∆k is the solution and scaling parameter at the beginning of the k-th scaling phase of the scaling algorithm. Because the change in any allocation and in any price is at most n∆ during the ∆-scaling phase, the sequences {pk : k = 1, 2, . . .} and {xk : k = 1, 2, . . .} both converge in the limit to the optimal solution (p∗ , x∗ ). Now suppose that ∆k < D/8n, where D = (Umax )−n /n. Let E k = {(i, j) : xkij > 4n∆k }. We next claim that BasicSolution(E k ) is optimal. Consider edge (i, j). If (i, j) ∈ E k , then (i, j) is ∆-abundant, and by Lemma 6, x∗ij > 0. If (i, j) ∈ / E k , then x∗ij < xkij + 4n∆k < 1/D. By Lemma ∗ 1, xij = 0. We have thus shown that BasicSolution(E k ) is optimal. The number of scaling phases needed to ensure that ∆k < 1/8nD is O(log emax + n log Umax ). 3.6 Finding Approximate Solutions Suppose that > 0. A solution (p, x) P is said to be approximate if it is ∆-optimal for ∆ < j∈G pj . Theorem 2. . ScalingAlgorithm finds an -approximate solution after O(log(n/)) scaling phases. The running time is O(n(m + n log n) log(n/)). Proof. Recall that ∆0 = emax . Within O(log(n/)) scaling phases, ∆ < ·emax /2n. Suppose (p, x) is the solution at the end of that phase, P and let k = argmax{ei : i ∈ B}. Then ci (x) < ∆ and so j∈G pj > ei − ci (x) > emax /2 > n∆/. P Therefore, ∆ < j∈G pj . The above approach is the fastest method to determine an -approximate solution. Also, finding an approximate solution is quite practical. For example, if all initial endowments are in dollars and are bounded by O(f (n)) for some polynomial f (·), then ScalingAlgorithm determines a solution that is within 1 penny of optimal in O(log n) scaling phases. 3.7 A Simple Strongly Polynomial Time Algorithm if Utilities are Small Devanur et al. [5] showed how to find an optimal solution in the case that Uij = 0 or 1 for each (i, j). Here we provide a simple algorithm for finding an optimal solution if Uij is polynomially bounded in n. In the following, we assume that buyers have been reordered so that ei ≥ ei+1 for all i = 1 to |B| − 1. We let Problem(j) be the market equilibrium problem as restricted to buyers 1 to j, and including all goods of G. In the following theorem, M = 4n2 (Umax )n . We also relax (iii) of the definition of ∆-feasibility. We do not require allocations in abundant edges (see Subsection 3.5) to be multiples of ∆. Theorem 3. Suppose that ej > M ej+1 , and that k is the next index after j for which ek > M ek+1 . If one starts with an optimal solution for Problem(j), ScalingAlgorithm solves Problem(k) in O(n(k − j) log Umax ) scaling phases. By solving Problem(i) for each i such that ei > M ei+1 , The total number of scaling phases to find an equilibrium is O(n2 log Umax ). Proof. Suppose that (p0 , x0 ) is the optimal solution for Problem(j). The algorithm solves Problem(k) starting with solution (p0 , x0 ) and with scaling parameter ∆0 = ej+1 . We first show that this starting point is ∆0 -feasible. It is possible that allocations will not be a multiple of ∆0 . However, if x0il > 0 for some i ≤ j, then by Lemma 1, x0il ≥ ej /D > 4nej+1 = 4n∆0 . Thus (i, l) is abundant, and by Lemma 6, it remains abundant at all subsequent scaling phases. We next bound the number of scaling phases for Problem(k). By Lemma 1, the optimum solution (p∗ , x∗ ) for Problem(k) has the following property. If x∗il > 0 for some i ≤ k, then x∗il ≥ ek /D. So, the algorithm will stop when the scaling parameter is less than ek /4nD. Thus, the number of scaling phases is O(log 4nD(ej /ek )) = O(log M k−j ) = O((k − j)(n) log Umax ). If we solve Problem(i) for each i such that ei > M ei+1 , then the total number of scaling phases to find an equilibrium is O(n2 log Umax ). 4. A STRONGLY POLYNOMIAL TIME ALGORITHM In this section, we develop a strongly polynomial time scaling algorithm, which we call StrongScaling. This algorithm is a variant of the scaling algorithm of Section 3. The number of scaling phases in StrongScaling is O(n log n), and the number of calls of PriceAndAugment is O(n) at each phase. The total running time of the algorithm is O((n2 log n)(m + n log n)). 4.1 Preliminaries The algorithm StrongScaling relies on two new concepts: “surplus” of a subset of nodes and “fertile” price vectors. We also provide more details about abundant edges. For the ∆-scaling phase, we let A(∆) denote the set of ∆abundant edges. We refer to each component in the graph defined by A(∆) as a ∆-component. We let C(∆) denote the set of ∆-components. Suppose that p is any price vector during the ∆-scaling phase. We let N (p, ∆) be the network in which the forward arcs are E(p) and the backward arcs are the reversals of ∆-abundant edges. We refer to N (p, ∆) as the ∆-residual network with respect to p. We let ActiveSet(p, ∆, r) be the set of nodes reachable from r in the network N (p, ∆). Suppose that H ⊆ B ∪G. We define the surplus P of H with respect to a price vector p to be s(p, H) = i∈B∩H ei − P j∈G∩H pi . Equivalently, s(p, H) = eH − pH . Suppose that (p, x) is the solution at the beginning of the ∆-scaling phase. We say that a component H of A(∆) is ∆-fertile if (i) H consists of a single node i ∈ B and ei > ∆/3n2 , or if (ii) s(p, H) ≤ −∆/3n2 . We say that the solution (p, x) is ∆-fertile if any of the components of C(∆) are ∆-fertile. Lemma 7. Suppose that (p, x) is the solution obtained at the end of the ∆-scaling phase. For each fertile ∆-component, there will be a new abundant edge incident to H within 5 log n + 5 scaling phases. Proof. Let ∆0 be the scaling factor after at least 5 log n+ 4 scaling phases. Then ∆0 < ∆/(16n5 ). Let (p0 , x0 ) be the solution at the beginning of the ∆0 -scaling phase. If H = {i}, then ei > 3n2 ∆0 , and so node i is incident to an edge (i, j) with x0ij > 3n∆0 . If H contains a node of G, then s(p0 , H) ≤ s(p, H) < −3n2 ∆0 . Because bj (p0 , x0 ) ≥ 0, it follows that there must be some edge (i, j) with i ∈ B\H and j ∈ H ∩ G, such that x0ij ≥ 3n∆0 , and so (i, j) is abundant at the ∆0 -scaling phase. Because the set of optimal edges is cycle free, there are at most n − 1 optimal edges, and so there are at most n − 1 abundant edges. If the solution at the beginning of each scaling phase were fertile, then ScalingAlgorithm would identify all abundant edges in O(n log n) scaling phases, after which the algorithm would identify the optimal solution. However, it is possible that a solution is infertile at a scaling phase, as illustrated in the following example, which shows that ScalingAlgorithm is not strongly polynomial. Example. B = {1}; G = {2, 3}; e1 = 1; U12 = 2K ; U13 = 1, and K is a large integer. The unique optimal solution is: p2 = x12 = 2K /(2K + 1), and p3 = x13 = 1/(2K + 1). At the k-th scaling phase for k < K, the ∆-optimal solution has x12 = 1 − 2k and x13 = 2k . It takes more than K scaling phases before (1, 3) is larger than 2n∆ and the optimal solution is determined. 4.2 The Algorithm StrongScaling In this section, we present the algorithm StrongScaling. Its primary difference from ScalingAlgorithm occurs when a solution is ∆-infertile at the beginning of a scaling phase. In this case, StrongScaling calls procedure MakeFertile, which produces a smaller parameter ∆0 (perhaps exponentially smaller) and a feasible vector of prices p0 that is ∆-fertile. It then returns to the ∆0 -scaling phase. In addition, there are two more subtle differences in the algorithm StrongScaling. The procedure MakeFertile permits allocations on abundant edges to be amounts other than a multiple of ∆. In addition, the procedure produces a solution (p0 , x0 ) such that bj (p0 , x0 ) is permitted to be negative, so long as bj (p0 , x0 ) ≥ ∆0 /n2 . Algorithm 3. StrongScaling(e, U ) begin ∆ := ∆0 ; p := p0 ; x := 0; Threshold := ∆; ScalingPhase: if BasicSolution(A(∆)) is optimal, then quit; while (p, x) is not ∆-optimal, replace (p, x) by PriceAndAugment(p, x); if no ∆-component is ∆-fertile, and if ∆ ≤ Threshold, then MakeFertile(p, x) else do ∆ := ∆/2; for each j ∈ G such that bj (p, x) > ∆, decrease xij by ∆ for some i ∈ B; return to ScalingPhase; end Algorithm 4. MakeFertile(p, x, ∆) begin ∆0 = GetParameter(p, ∆); if ∆0 > ∆/n2 then Threshold := ∆/n5 and quit; else continue p0 := GetPrices(p, ∆0 ); x0 := GetAllocations(p, ∆0 ); end In the remainder of this section, we let (p, x) be the solution at the end of the ∆-scaling phase, and we assume that (p, x) is infertile. We use C instead of C(∆). The procedure MakeFertile(p, ∆) has three subroutines. The first subroutine is called Get-Parameter(p, ∆). It deter- mines the next value ∆0 of the scaling parameter. If ∆0 > ∆/n2 , the procedure sets Threshold to ∆/n5 and returns to the ∆-scaling phase. (The purpose of the parameter Threshold is to prevent MakeFertile from being called for at least 5 log n scaling phases.) In this case, even though p is not ∆fertile, there will be a new abundant edge within O(log n) scaling phases. If ∆0 ≤ ∆/n2 , MakeFertile continues. The second subroutine is called GetPrice(p, ∆0 ), which determines a ∆0 -feasible set of prices p0 . The price vector p0 is ∆0 fertile. In addition, −∆0 /2n ≤ s(p0 , H) ≤ ∆0 for all H ∈ C. The third subroutine is called GetAllocations(p0 , ∆0 ). It obtains an allocation x0 so that (p0 , x0 ) is nearly ∆0 -feasible, and where allocations are only made on abundant edges. Subsequently, StrongScaling runs the ∆0 -scaling phase. In the remainder of this section, we present the subroutines of MakeFertile. In addition, we will state lemmas concerning the properties of their outputs ∆0 , p0 , and x0 . The algorithms GetParameter and GetPrices each rely on a procedure called SpecialPrice(p, H, t), where H is a ∆-component, and t ≥ 0. The procedure produces a feasible price vector p̂, which depends on H and t. The price vector p is increased until one of the following two events occurs: s(p̂, H) = t, or there is a component J ∈ C with s(p̂, J) = −s(p̂, H)/2n2 . The procedure GetParameter computes the next value of the scaling parameter. For each H ∈ C with at least one node in G, the procedure runs SpecialPrice(p, H, 0) and computes the vector of prices as well as the scaling parameter, which we denote as ∆H . If H = {i} (and thus H has no node of G), then ∆H := ei . The algorithm then sets ∆0 = max{∆H : H ∈ C}. The procedure GetPrices computes the next price vector. It computes SpecialPrice(p, H, ∆0 ) for all H ∈ C, and then lets p0 be the component-wise maximum of the different price vectors. These three procedures are presented next. (We will discuss the procedure GetAllocations later in this section.) Procedure SpecialPrice(p, H, t) begin p0 := p; select a node v ∈ H ∩ G; while s(p0 , H) > t and s(p0 , J) > −s(p0 , H)/2n2 , for all J ∈ C do compute the nodes ActiveSet(p0 , ∆, v); ∀ inactive nodes j ∈ G, p̂j := p0j ; ∀ active nodes j ∈ G, p̂j := qp0j , where q > 1 is the least value so that (i) a new edge becomes an equality edge or (ii) s(p̂, H) = t or (iii) s(p̂, J) = −s(p̂, H)/2n2 for some J ∈ C; p0 := p̂; endwhile end Procedure GetParameter(p, ∆) begin ∀ components H ∈ C do if H = {i} and i ∈ B, then ∆H := ei ; else p̂ := SpecialPrice(p, H, 0), and ∆H := s(p̂, H); ∆0 := max {∆H : H ∈ C}; end Procedure GetPrices(p, ∆0 ) begin ∀ components H ∈ C that contain a node of G do if s(p, H) ≤ ∆0 , then pH := p; else pH := SpecialPrice(p, H, ∆0 ); ∀j ∈ G, p0j :=max {pH j : H ∈ C}; end The following lemma concerns properties of ∆0 and p0 that are needed for the procedure GetAllocation. We let ∆H and pH denote parameters and prices calculated within GetParameter and GetPrices. Lemma 8. Suppose that ∆0 and p0 are the output from GetParameter and GetPrices. Then the following are true: i. For all H ∈ C, s(p0 , H) ≥ −∆0 /n2 . ii. If H ∈ C and if H = {i} and i ∈ B, then ei ≤ ∆0 . iii. For all H ∈ C, s(pH , H) = min{s(p, H), ∆0 }. 0 iv. There is a component H ∈ C , such that pH H = pH and 0 0 s(p , H) = ∆ . v. Either there is a node i ∈ B with ei = ∆0 , or there exists J ∈ C with s(p0 , J) = −∆0 /n2 . vi. If s(p0 , J) < 0, then there is H ∈ C with s(p0 , H) = ∆0 and J ⊆ ActiveSet(p0 , H). Proof. This lemma is highly technical, and the proof of Statements (iv), (v), and (vi) are involved. We first establish the correctness of Statements (i) to (iii). Prior to Proving Statements (iv), (v), and (vi), we will establish additional lemmas. Proof of parts (i) to (iii). Consider Statement (i). There exists component K such that s(p0 , H) = s(pK , H) ≥ −s(pK , K)/n2 ≥ −∆0 /n2 , and so the statement is true. Now consider statement (ii). If H = {i}, then ∆H = ei ≤ ∆0 . Consider statement (iii). If s(p, H) < ∆0 , then SpecialPrice(p, H, ∆0 ) lets pH = p. Otherwise, SpecialPrice increases the prices, and thus decreases the value s(pH , H), until s(pH , H) = ∆0 . The other termination criteria do not play a role until s(pH , H) = ∆H ≤ ∆0 . 4.3 The Auxiliary Network and Maximum Utility Paths Before proving Statements (iv) to (vi) of Lemma 8, we develop some additional properties of prices and paths. We again assume that (p, x) is the input for MakeFertile. Let A(∆) be the set of abundant edges. The auxiliary network is the directed graph N ∗ with node set B ∪ G, and whose edge set is as follows. For every i ∈ B and j ∈ G, there is an arc (i, j) with utility Uij . For every (i, j) ∈ A(∆), there is an arc (j, i) with utility Uji = 1/Uij . (There will also be ∗ an arc (i, j).) For every directed Q path P ∈ N , we let the utility of path P be U (P ) = (i,j)∈P Uij . For every pair of nodes j and k, we let µ(j, k) = max{U (P ) : P is a directed path from j to k in N ∗ }. That is, µ(j, k) is the maximum utility of a path from j to k. Lemma 9. The utility of each cycle in the auxiliary network N ∗ is at most 1. Proof. Let C be any cycle in the auxiliary network. 0 For each edge (i, j) of the auxiliary network, let Uij = 0 Uij /(αi (p)·pj ). Since Uij /pj ≤ αi (p), it follows that Uij ≤ 1 for all (i, j). Q 0 Let U 0 (P ) = (i,j)∈P Uij . It follows that U (P ) = U 0 (P ) ≤ 1, and the lemma is true. We assume next that all components of A(∆) have a single root node, and that the root node is in G whenever the component has a node of G. We extend µ to being defined on components as follows: µ(H, K) = µ(v, w), where v is the root node of H, and w is the root node of K. Lemma 10. Suppose that K ∈ C and that pK = SpecialPrice(p, K, t). If component H ⊆ ActiveSet(pK , ∆, K), then K µ(K, H) = pK H /pK . 0 Proof. For each (i, j) in the auxiliary network, let Uij = K K 0 Uij /(αi (p ) · pj ). Then Uij ≤ 1 for all (i, j). Suppose next that P is any maximum utility path from a node v to a node w with respect to U . Then P is also a maximum utility path from v to w with respect to U 0 . Moreover, if K v ∈ G and w ∈ G, then U 0 (P ) = U (P ) · pK v /pw . We now consider the path P 0 from the root of K to the root of H in the residual network N (pk , ∆). Such a path exists because H is active. Then each arc of P 0 is an equality arc, and U 0 (P 0 ) = 1. It follows that P 0 is a maximum utility K K K path. Moreover, U (P ) = U 0 (P ) · pK H /pK = pH /pK . Lemma 11. Suppose that K and H are components of C, and that pK and pH are price vectors determined in GetK H K Prices. If pH H < pH , then pH /pK < µ(H, K). K K K H K By assumption, Proof. pH H /pK = pH /pH × pH /pK . K K , < 1. This implies that p < p /p pH H H and so compoH H K nent H ⊆ ActiveSet(pK , ∆, K). By Lemma 10, pK H /pK = K < µ(H, K). /p µ(H, K). Therefore pH K H 4.4 The Rest of the Proof of Lemma 8 We are now ready to prove Statement (iv), (v), and (vi) of Lemma 8. Proof of Statement (iv) of Lemma 8. We assume that there is no component H such that s(p0 , H) = ∆0 , and we will derive a contradiction. By statement (iii), if s(p, H) ≥ ∆0 , then s(pH , H) = ∆0 . By construction, if s(pH , H) = ∆0 and if s(p0 , H) < ∆0 , then there is some component K such K that s(pK , K) = ∆0 , and pH H < pH . In such a case, we say that K dominates H. Let H1 be a component for which s(pH , H) = ∆0 . By our assumption, there is a sequence of components H1 , H2 , . . . , Hk such that Hi+1 dominates Hi for i = 1 to k−1, and Hk dominates H1 . For each component J ∈ C, let g(J) = pJJ . Let Hk+1 = H1 . By Lemma 11, k Y i=1 µ(Hi+1 , Hi ) > k Y g(Hi )/g(Hi+1 ) = 1. i=1 For i = 1 to k, let Pi be the max multiplier path from Hi+1 to Hi , and let P = P1 , P2 , . . . , Pk be the closed walk obtained by concatenating the k paths. Then U (P ) = Qk i=1 µ(Hi+1 , Hi ). But by Lemma 9, U (P ) ≤ 1, which is a contradiction. We conclude that there is a component H such that s(p0 , H) = ∆0 . Proof of Statement (v) of Lemma 8. Choose H such that s(p0 , H) = ∆0 . If H = {i}, ∆0 = ei . The remaining case in when H contains a node of G. Then the termination criteria for SpecialPrice(p, H, 0) specifies that that there is a component J such that s(pH , J) = −∆0 /n2 . We claim that s(p0 , J) = s(pH , J) = −∆0 /n2 . Otherwise, there is a compoH K H nent K such that pK J > pJ . But then s(p , J) < s(p , J) = H 2 0 2 K 2 −s(p , H)/n = −∆ /n ≤ −s(p , K)/n , contradicting the termination rule for SpecialPrice(p, K, ∆0 ). Proof of Statement (vi) of Lemma 8. We first prove the statement in the case that s(p0 , J) < s(p, J), and thus p0J > pJ . In this case, there exists a component H such that p0J = pH J > pJ . Let Q be the max utility path from H to J in N ∗ . We claim that p0H = pH H . Otherwise, there is a H component K that dominates H; that is, pK H > pH . By H K H Lemma 10, pK > p . Therefore, s(p , J) < s(p , J) = J J −s(pH , H)/n2 = −∆0 /n2 ≤ −s(pK , K)/n2 , a contradiction. Thus Statement (vi) is true in this case. We will show that there is a component H with s(p, H) ≥ n∆0 and J ⊆ Activeset(p, ∆, H). In this case, p0J ≥ pH J > pJ , and thus Statement (vi) is true because it reduces to the case given above. We next determine an allocation x̂ as restricted to the abundant edges and that is nearly ∆-feasible. We then use flow decomposition (see Ahuja et al. [1] pages 79-81) to determine the component H. Consider the allocation x̂ obtained from p that satisfies the following: i. if (i, j) ∈ / A(∆), then x̂ij = 0; ii. c(x̂) ≥ 0; if s(p, H) ≥ 0, then cH (x̂) = s(p, H); iii. b(p, x̂) ≤ 0; if s(p, H) < 0, then bH (p, x̂) = s(p, H). Consider the flow decomposition of y = x − x̂. The flow decomposition is the sum of nonnegative flows in paths in N (p, ∆),Pwhere each path is from a deficit node (a node vPwith k∈G ŷvk > 0) to an excess node (a node w with k∈B ŷkw < 0). Consider the flow in the decomposition out of component J. We claim that J is a deficit component, and the deficit is at least (n − 1)∆/n. To see that this claim is true, note that bJ (p, x) ≥ 0, and bJ (p, x̂) = s(p, J) < 0. Moreover, since xij is a multiple of ∆ on non-abundant edges, it follows that bJ (p, x) ≡ s(p, J) mod ∆, and thus bJ (p, x) ≥ s(p, J) + ∆ > −∆/n2 + ∆ > (n − 1)∆/n. Since bJ (p, x̂) ≤ 0, it follows that there must be at least (n − 1)∆/n units of flow into component J in the flow decomposition. Accordingly, there must be at least one excess component H such that the flow from H to J in the flow decomposition is at least ∆/n. Since all flows in the decomposition are on equality edges, it follows that J ⊆ ActiveSet(p, ∆, H). Moreover, s(p, H) ≥ ∆/n ≥ n∆0 , which is what we needed to prove. Therefore (vi) is true. 4.5 Determining the Allocations In procedure GetAllocations, for each ∆-component H with at least two nodes, we designate one node in H ∩ B as the B-root of H, and we designate one node in H ∩ G as the G-root of H. If H has a single node k, then k is the root. The procedure will determine the allocation x0 by first obtaining a basic feasible solution for a minimum cost flow problem. (See, e.g., [1].) In the procedure, we will let dk denote the supply/demand of node k. If i ∈ B, then di ≥ 0. If j ∈ G, then dj ≤ 0. Procedure GetAllocations(p0 , ∆0 ) begin ∀ components H ∈ C if i is the B-root of H, then di = max {0, eH − p0H }; if j is the G-root of H, then dj = min {0, eH − p0H }; if k is not a B-root or G-root, then dk = 0; select x0 as the unique solution satisfying the supply/demand constraints and such that x0ij = 0 for all non-abundant edges (i, j); end 4.6 On the Correctness of StrongScaling and its Running Time In this section, we provide lemmas that lead up to the theorem stating the correctness and time bounds for StrongScaling. Lemma 12. Suppose that ∆0 is the parameter obtained by running GetParameter, and suppose that ∆0 > ∆/n2 . If the Scaling-Algorithm is run starting with solution (p, x) and with the ∆-scaling phase, then there will be a new abundant edge within O(log n) scaling phases. Proof. By Lemma 8, we can select a component H such that s(pH , H) = ∆0 . Then there must also be a component J with s(pH , J) = −∆H /n2 . (The termination criterion would not end with ei = ∆0 because (p, x) was not fertile.) Because ∆0 > ∆/n2 , StrongScaling went to the ∆/2-scaling ˆ < phase, starting with the solution (p, x). Suppose that ∆ ∆0 /n2 , and let (p̂, x̂) be a feasible solution at the end of ˆ the ∆-scaling phase. We will show that (p̂, x̂) or else (p̂, x̂) ˆ is ∆-fertile, and there will be a new abundant edge within O(log n) scaling phases. We consider two cases. Assume 0 2ˆ first that p̂H ≤ pH H . In this case, s(p̂, H) ≥ ∆ ≥ n ∆, and there must be an abundant edge directed out of H. In the second case, p̂H > pH H . In this case, s(p̂, J) ≤ ˆ 4 . In this case, J is ∆-fertile, ˆ s(pH , J) = −∆0 /n2 < −∆/n and there will be a new abundant edge in O(log n) scaling phases. Lemma 13. Suppose that ∆0 and (p0 , x0 ) are the parameter and solution obtained by running MakeFertile, and suppose that ∆0 ≤ ∆/n2 . Then the following are true: i. (p0 , x0 ) is ∆0 -fertile. ii. ci (x0 ) ≤ ∆0 for all i ∈ B. iii. −∆0 /n2 ≤ bj (p0 , x0 ) ≤ 0 for all j ∈ G. iv. If (i, j) ∈ A(∆), then x0ij > 2n∆0 . v. If ∆00 < ∆/3n2 , then the solution at the ∆00 -scaling phase is ∆00 -feasible. Within an additional 2 log n + 4 scaling phases, there will be a new abundant edge. Proof. Statement (i) follows from Statements (iv) and (v) of Lemma 8. Statements (ii) and (iii) follow from Statements (i) and (iii) of Lemma 8, as well as the way that x0 is constructed. We next prove Statement (iv). Consider x̂ described in the proof of Statement (vi) of Lemma 8. We first claim that cB (x̂) < (n + 1)∆. The claim is true because cB (x̂) + bG (p, x̂) = eB −pG = cB (x)+bG (p, x) ≤ n∆. Also, bj (p, x̂) ≥ −∆/n2 . Thus cB (x̂) ≤ n∆ − bG (p, x̂) < n∆ + (|G|/n2 )∆ < (n + 1)∆. Now consider the flow decomposition of y = x − x̂ in the proof of Statement (vi) of Lemma 8. The sum of the excesses is at most cB (x̂) < (n + 1)∆. It follows that the total flow in the decomposition emanating from excess nodes is less than (n + 1)∆. Therefore, |x̂ij − xij | < (n + 1)∆ for all (i, j) ∈ A(∆). Now consider x0Pas determined P by Procedure P GetAlloca0 tions. Note that j∈G pj ≤ j∈G pj ≤ j∈G pj + n∆. Therefore, |x̂ij − x0ij | < n∆ for all (i, j) ∈ A(∆). Thus |xij − x0ij | < (2n + 1)∆. Because xij ≥ 3n∆, x0ij > 3n∆ − (2n + 1)∆ = (n − 1)∆ > (n3 − n)∆0 , and thus (i, j) is abundant at the ∆0 -scaling phase. We next prove Statement (v). Let (p00 , x00 ) be the solution at the ∆00 -scaling phase, where ∆00 < ∆0 /4n2 . Let J be a component with s(p0 , J) < 0. Statement (v) says that bJ (p00 , x00 ) ≥ 0. So, suppose instead that bJ (p00 , x00 ) < 0. We will derive a contradiction. We note that p00J = p0J . (Recall that a node j only increases its price when j is active and when there is no augmenting path. This cannot occur for a node j with bj < 0.) We next claim that p00k = p0k if J ⊂ ActiveSet(p0 , ∆, H). To see why, let Q0 be a maximum multiplier path from k to J. Then by Lemma 10, p0J = p0k · µ(k, J), and p00J ≥ p00k · µ(k, J). Since p0J = p00J , and p00k > p0k , it follows that p00k = p0k . By Statement (vi) of Lemma 8, there is a component H with s(p0 , H) = ∆0 . In addition, J ⊆ ActiveSet(p0 , ∆, H). We are now ready to show to derive the contradiction, and thus show that bJ (p00 , x00 ) ≥ 0. Note that s(p00 , H) = ∆0 , and b(p00 , H) ≤ ∆00 ≤ ∆/4n2 . Now consider the flow decomposition y 0 of x00 − x0 . The flow out of component H in y 0 is at least (n − 1)∆0 /n, and so there must be a flow of at least ∆0 /n to some component K. Each arc in the flow decomposition is in N (p0 , x0 ). Then p00K = p00H · µ(H, K), which implies that p00K = p0K . But then bK (p00 , x00 ) = bK (p0 , x00 ) > bK (p0 , x0 )+∆0 /n > (4n−1)∆00 , which is a contradiction. Theorem 4. Optimality of Strong Scaling. The algorithm StrongScaling finds an optimal solution (p∗ , x∗ ) in O(n log n) scaling phases. It calls MakeFertile at most n times, and each call takes O(n(m + n log n)) time. It calls PriceAndAugment O(n) times per scaling phase. It runs in O((n2 log n)(m + n log n) time. Proof. Once all of the abundant edges have been identified, the algorithm finds the optimal solution. And a new abundant edge is discovered at least once every O(log n) scaling phases. Thus the algorithm terminates with an optimal solution. We now consider the running time. The algorithm calls MakeFertile at most n times because each call leads to a new abundant edge. Each call of MakeFertile takes O(n(m + n log n) time. There are O(log n) scaling phases between each call of MakeFertile, and each scaling phase takes O(n(m+ n log n) time. Thus the running time of the algorithm is O((n2 log n)(m + n log n)) time. 5. SUMMARY We presented a new scaling algorithm for computing the market clearing prices for Fisher’s linear market model. We anticipate that this technique can be modified to solve extensions of the linear model. We have also presented a strongly polynomial time algorithm. The strongly polynomial time algorithmic development may possibly be modified to solve extensions of the linear model; however, such modifications are challenging because of the technical aspects of the proof of validity. 6. ACKNOWLEDGEMENTS The author gratefully acknowledges all of the help and advice from Dr. Mehdi Ghiyasvand. 7. REFERENCES [1] R.K. Ahuja, T.L. Maganti, and J.B. Orlin. Network Flows: Theory, Algorithms, and Applications. Prentice Hall, N.J. 1993. [2] K. Arrow and G. Debreu. Existance of an equilibrium for a competitive economy. Econometrica 22:265–290, 1954. [3] W.C. Brainard, H.E. Scarf, D. Brown, F. Kubler, and K.R. Sreenivasan. How to compute equilibrium prices in 1891. Commentary. The American Journal of Economics and Sociology 64: 57-92, 2005. [4] D. Chakrabarty, N. Devanur, and V. Vazirani. New results on rationality and strongly polynomial solvability in Eisenberg-Gale markets. In Proceedings of 2nd Workshop on Internet and Network Economics, 239-250, 2006. [5] N.R. Devanur, C.H. Papadimitriou, A. Saberi, and V.V. Vazirani. Market equilibrium via a primal–dual algorithm for a convex program. Journal of the ACM 55: 1-18, 2008. [6] N.R. Devanur and V.V. Vazirani. The spending constraint model for market equilibrium: algorithmic, existence and uniqueness results. Proceedings of 36th Symposium on the Theory of Computing, 519-528, 2004. [7] J. Edmonds., and R.M. Karp. Theoretical improvements in algorithmic efficiency for network flow problems. Journal of ACM 19: 248-264, 1972. [8] E. Eisenberg and D. Gale. Consensus of subjective probabilities: the Pari-Mutuel method. Annals of Mathematical Statistics 30: 165-168, 1959. [9] M.L. Fredman, and R.E. Tarjan. Fibonacci heaps and their uses in improved network optimization algorithms. Journal of ACM 34: 596-615, 1987. [10] R. Garg and S. Karpur. Price Roll-Backs and Path Auctions: An Approximation Scheme for Computing the Market Equilibrium Lecture Notes in Computer Science, Volume 4286/2006 Springer Berlin / Heidelberg 225-238, 2006. [11] M. Ghiyasvand and J.B. Orlin An improved approximation algorithm for computing Arrow-Debreu market prices MIT Technical Paper. Submitted for publication. 2009. [12] J.B. Orlin. Genuinely polynomial simplex and non-simplex algorithms for the minimum cost flow problem. Technical Report 1615-84, Sloan School of Management, MIT, Cambridge, MA. 1984. [13] J.B. Orlin. A faster strongly polynomial minimum cost flow algorithm. Operations Research 41: 338-350, 1993. [14] V.V. Vazirani. Spending constraint utilities, with applications to the Adwords market. Submitted to Math of OR, 2006. [15] V.V. Vazirani. Combinatorial Algorithms for Market Equilibrium. in N. Nisan, T. Roughgarden, E’. Tardos, and V. Vazirani, editors, Algorithmic Game Theory, pages 103-134, Cambridge University Press, Cambridge, UK., 2007.