LIDS-P-1850 February 1989 THE AUCTION ALGORITHM FOR THE TRANSPORTATION PROBLEM * by Dimitri P. Bertsekas** and David A. Castanon*** Abstract The auction algorithm is a parallel relaxation method for solving the classical assignment problem. It resembles a competitive bidding process whereby unassigned persons bid simultaneously for objects thereby raising their prices. Once all bids are in, objects are awarded to the highest bidder. This paper generalizes the auction algorithm to solve linear transportation problems. The idea is to convert the transportation problem into an assignment problem, and then to modify the auction algorithm to exploit the special structure of this problem. Computational results show that this modified version of the auction algorithm is very efficient for certain types of transportation problems. * Supported by the U.S. Army Strategic Command ** Laboratory for Information and Decision Systems, M.I.T., Cambridge, MA 02139 *** Alphatech, Inc., 111 Middlesex Turnpike, Burlington, MA 01803 2 1. Introduction In this paper we propose a new relaxation algorithm for linear transportation problems. The algorithm resembles classical coordinate descent, Gauss-Seidel, and Jacobi methods for solving unconstrained nonlinear optimization problems or systems of nonlinear equations., It-modifies.the dual variables (node prices) either one at a time (Gauss-Seidel version) or all at once (Jacobi version) using only local node information, while aiming to improve the dual cost. It is well suited for implementation on massively parallel machines. The first relaxation algorithm for linear network flow problems is the auction algorithm for the classical assignment problem proposed by the first author in 1979 [3] and further discussed in [4], [8], [13]. The algorithm operates like an auction whereby unassigned persons bid simultaneously for objects thereby raising their prices. Once all bids are in, objects are awarded to the highest bidder. The algorithm can also be interpreted as a Jacobi - like relaxation method for solving a dual problem. The variables of the dual problem may be viewed as the prices of the objects and are adjusted upwards as the algorithm progresses. Just as in a real auction, a person's bid is required to be higher than the current price of the object and this provides the mechanism for increasing the object prices. The algorithm makes gradual progress towards a full assignment of persons to objects as the prices of some of the assigned objects become sufficiently high, so that unassigned objects become attractive and receive bids. Computational results [10] show that for large sparse problems, the auction algorithm is superior to the best existing assignment methods even without the benefit of parallelism. The reason for this can be traced to the complexity estimate O(NAlog(NC)) for an efficient implementation of the auction algorithm derived in [8], [10]; here N is the number of persons, A is the number of arcs, and C is the maximum absolute value of arc cost coefficient. Competing methods [1], [2], [14], [15], [18], [19], [20], [23], [24], including the Hungarian method have complexity O(N3 ), so for large sparse problems the complexity of the auction algorithm is superior. This paper extends the auction algorithm to solve linear transportation problems. The basic idea is to convert the transportation problem into an assignment problem by creating multiple copies of persons (or objects) for each source (or sink respectively), and then to modify the auction algorithm to take advantage of the presence of the multiple copies. Section 2 describes the basic form of the auction algorithm. Section 3 considers a variation of the auction algorithm that takes into account "similar" objects. (Roughly, two objects are called similar if every person to whom they can be assigned considers them as equally valuable.) We also consider a variation of the algorithm 3 that takes into account "similar" persons. (Roughly, two persons are called similar if each person assigns the same value to every object as the other person.) The variation of the auction algorithm that takes into account similar objects is useful, among other things, for handling asymmetric assignment problems, where there are M persons and N objects with M>N. We can convert such problems to assignment problems with an equal number of persons and objects by introducing- M-N additional similar objects, each offering equal value (e.g. zero) to all persons. The auction algorithm that takes into account both similar persons and similar objects can be restructured so that it solves efficiently transportation problems. This is described in Sections 4 and 5, and computational results showing the effectiveness of the corresponding transportation algorithm are given in Section 6. 4 2. The Auction Algorithm for the Assignment Problem Consider N persons wishing to divide among themselves N objects. We number persons and objects as 1, 2, ..., N. For each person i there is a nonempty subset A(i) of objects that can be assigned to i. An assignmentS is a (possibly empty) set of person-object pairs (ij) such that: a) je A(i) for all (i,j)e S b) For each person i there is at most one pair (i,j)e S c) For each object j there is at most one pair (i,j)e S. A complete assignment is an assignment containing N pairs (i.e. every person is assigned to a distinct object). In the context of a given assignment S, we say that person i is assigned if there exists an object j such that (i,j)e S; otherwise we say that i is unassigned. We use similar terminology for objects. There is a given integer value aij that a person i associates with an object je A(i). We want to find a complete assignment that maximizes I aij (i,j)e S over all complete assignments S. We call this the primal assignmentproblem and note its wellknown equivalence to the linear programming (linear network flow) problem N maximize I aijfij i=lj A(i) subject to I fij= 1, i=l, ... , N je A(i) E fij = 1, j=l, ... , N {i I jr A(i)) o0< fij A dual problem to the assignment problem is [13], [21], [25], [26] 5 N minimize I N ri +P i=1 j p jl 1 subject to r i + pj > aij, V i, and j E A(i) The dual variable pj is called the price of j. We call the vector p with coordinates pj, j=l, ..., N a price vector. For a given price vector p, the cost of this problem is minimized when Pi equals the maximum value of aij - pj over je A(i). Therefore an equivalent dual problem is the unconstrained minimization problem minimize q(p) subject to no constraints on p (1) q(p) = I i maxjEA(i) {aij -Pj} + Ij Pj (2) where For a given price vector, we define the value of an objectjeA(i)for a person i by vij = aij - pj The profit ri ofperson i is the maximum value of objects j E A(i), i.e., Ri = maxje A(i) vij (3) From linear programming theory we know that a complete assignment S={(i,ji) I i=l, ..., N) and a price vector p are simultaneously primal and dual optimal respectively if and only if ...... 'Ai = maxkE A(i) {aik - Pk} = aij - Pj, for each (ij) E S that is, if and only if each person realizes his profit by being assigned to an object offering maximum value. This is known as the complementary slackness condition. 6 A relaxation of the complementary slackness condition is to allow persons to be assigned to objects that come within e of attaining the maximum in the profit definition (3). Formally we say that an assignment S (not necessarily complete) and a price vector p satisfy e-complementary slackness (e-CS) if for each (ij) E S, ni - e = maXkEA(i) {aik- pk} - E < a - j, (4) where E is a nonnegative constant. The main fact for our purposes is that a complete assignment [ji / i=1, . . ., N} that satisfies E-CS together with some price vector p is optimal if e<11N. To see this, consider the profits xi given by (3). Then, by adding the e-CS condition (4) over i we obtain i. a.. > 2Z i ( I lJi - P i + Ji )- Ne If A* is the optimal primal value and the (equal) optimal dual value, we have using the relation above A i.a..iji> (i +p )N=q(p) = -N A* - N Therefore the assignment {ji Ii=l, .. ., N} is within Ne of being optimal. Since aij are integer, an optimal assignment is obtained when e < 1/N. We now describe formally the auction algorithm. We fix e > 0, and we start with some (possibly empty) assignment and price vector satisfying e-CS. The algorithm proceeds iteratively and terminates when a complete assignment is obtained. At the start of the generic iteration we have an assignment S and a price vector p satisfying e-CS. At the end of the iteration, S and some prices are updated while maintaining the e-CS condition. There are two phases in each iteration, the bidding phase, and the assignmentphase described below: Bidding Phase: For each person i that is unassigned under the assignment S:, Compute the current value vij = aij - pj of each object je A(i), find a "best" object j* having maximum value 7 Vij* = maxj E A(i) ij, (5) and find the best value offered by objects other than j* Wi = maxj E A(i), j j* Vij (6) (If j* is the only object in A(i) we define w i to be -o, or, for computational purposes, a number that is much smaller than vij* .) Compute the "bid" of person i for object j* given by bij* = pj* + vij* - w i + £ = aij* - w i + £ (7) (We characterize this situation by saying that person i bid for object j*, and that object j* received a bid from person i. The algorithm works if the bid has any value between pj* + e and pj* + vij* - w i + c, but it tends to work fastest for the maximal choice (7). The calculation of the bid of a person is illustrated in Fig. 1.) 8 Values vij of objects j for personi i -v------- j* ai -- 'vi : The value of j*, the best object for person i . (equal to the profit X iof i) - -------- w.: The value of the second best object for person i j2F J3 Price increment bii* - pj* implicit in the bid of person i for its best object j*. It is equal to the difference between the old price of j* and its new price if the bid bij*is accepted J4 Figure 1: Illustration of the bid of person i. The objects j* and jl that offer the best value vij* and second best value wi , respectively, are determined. The bidding increment b ij*- pj* is then set to the difference v ij*- wi plus C Assignment Phase: For each object j: Let P(j) be the set of persons from which j received a bid in the bidding phase of the iteration. If P(j) is nonempty increase pj to the highest bid j := maxi p(j) bij, (8) remove from the assignment S any pair (ij) (if one exists), and add to S the pair (i*,j) where i* is some person in P(j) attaining the maximum above. If P(j) is empty, pj is left unchanged. Note that both the bidding and the assignment phases are highly parallelizable. In the extreme case of a fine-grain parallel computing environment, where there is a processor associated 9 with each person and a processor associated with each object, all unassigned persons/processors can compute their bids simultaneously and communicate them to the relevant objects/processors. Those object/processors that received at least one bid can determine the highest bidder simultaneously and communicate the changes in the current assignment and price vector to the. relevant persons/processors. It can be seen from (5) and (6) that vij* > wi, so from (7) we obtain bij* > pj*. Therefore, from (8) it follows that the price increaseof an object receiving a bid during an iteration is at least e. Furthermore, at the end of the iteration we have a new price vector that differs from the preceding vector only in the prices of the objects that received a bid during the iteration. We also have a new assignment that differs from the preceding one in that each object that received a bid is now assigned to some person that was unassigned at the start of the iteration. However, the assignment at the end of the iteration need not have more pairs than the one at the start of the iteration because it is possible that all objects that received a bid were assigned at the start of the iteration. References [8], [13] provide an interpretation of the iteration as a relaxation iteration whereby each price pj is changed to a level that minimizes the dual cost along pj within e. In this way the algorithm, as given above, may be viewed as a Jacobi type of relaxation method, since the bids of all unassigned persons are calculated simultaneously, and the prices of objects that receive a bid are raised simultaneously. An alternative is a Gauss-Seidel version whereby in each bidding phase, only one unassigned person bids for an object (rather than all unassigned persons). Thus in the Gauss-Seidel version, the price rise caused by a bid is taken into account when the next bid takes place. This tends to speed up convergence. However the Gauss-Seidel version has a smaller potential for parallelization than the Jacobi version. Another possibility, a hybrid between Gauss-Seidel and Jacobi, is to require any subset of persons (including some that are assigned) to bid at any iteration. A restiction here is that an already assigned person must bid for its already assigned object j* the price bij* given by (7). An important fact is that the algorithmpreserves c-CS throughoutits execution, i.e. if the assignment and price vector available at the start of an iteration satisfy e-CS, the same is true for the assignment and price vector obtained at the end of the iteration. To see this, suppose that object j* received a bid from person i and was assigned to i during the iteration. Then if pj and p'j are the object prices before and after the assignment phase we have [cf. (7), (8)] p*= bii* = aij* -i w + £ Using this equation and the fact p'j > pj for all j, it follows that (9) 10 aij* - p'j* = aij* - bij* = wi - e = maxjE A(i), j # j* {aijppj> maxjEA(i), j j* {aij - p'j} - (10) This equation implies that aij* - * maxjEA(i) {aij - P'j - e (11) which shows that the e-CS condition (4) continues to hold after the assignment phase of an iteration for a pair (i,j*) that entered the assignment during the iteration. Consider also any pair (i,j*) that belonged to the assignment just before an iteration, and also belongs to the assignment after the iteration. Then j* must not have received a bid during the iteration and we have pj* = pj*. Therefore, (11) holds in view of the e-CS condition that holds prior to the iteration, and the fact p'j 2 pj for all j. It has been shown in [3], and it will be shown in more generality in the next section that the algorithm terminates in a finite number of iterations (assuming the problem is feasible, i.e., there exists a complete assignment). As a result, if e < 1/N, then the assignment obtained upon termination is optimal. 3. Variations of the Auction Algorithm It is possible to apply the auction algorithm of the previous section to a transportation problem after it has been converted to an assignment problem by replacing each source (sink) with multiple copies of persons (objects). Unfortunately the performance of the method can be quite poor as shown in the example of Fig. 2. Much better performance is obtained with a variation of the auction algorithm which recognizes the special structure derived from the transportation problem. This structure manifests itself in the presence of several "similar" persons and objects, and is. formalized below. PERSONS OBJECTS i Initial price = 0 Here aij = C > 0 for all (i,j) Initial price = 0 except for a33 which is 0 Initial price = 0 Figure 2: Example where the number of bidding phases is large and is proportional to C/ E Here at each bidding phase the persons 1, 2, and 3 bid the prices of objects 1 and 2 up by an increment £ until the time that these prices reach the level C. This problem corresponds to a transportation problem where persons 1 and 2 correspond to a supply node with supply equal to 2, and objects 1 and 2 correspond to a demand node with demand equal to 2. Given the assignment problem of the previous section, we say that two objects j and j' are similar, and write j - j', if for all persons i=l,..., N we have je A(i) => j'e A(i) and aij = aij'. (12) We say that two persons i and i' are similar, and write i - i', if for all objects j=l,..., N we have je A(i) = je A(i') and aij = ailj. (13) For each person (object) i, the set of all persons (objects respectively) similar to i is called the similarity class of i, and is denoted M(i). For a given price vector p, we define the price of the similarity class M(j) of an object j as pj= mink M(j) pk, j = 1, ., M (14) 12 Note that the profit of a person i given by (3) can also be written as i = maxjE A(i) aij - Pj} = maXjeA(i) {aij - Pj} (15) It can be seen that: a) All persons in the same similarity class have the same profit. b) The person profits ii are determined by the prices j of the object similarity classes. It follows that if a complete assignment S and a similarity class price vector p satisfy e-CS, and e<1/N, then S is optimal, even though S and the price vector p may not satisfy s-CS. This is important because in the following algorithms, e-CS of the pair (Sp) is maintained but s-CS of the pair (S,p) may be violated. An additional benefit of working with the similarity class price vector is that the threshold value for e that guarantees optimality can be increased, as indicated in the following proposition, which will be proved in the next section after we introduce the equivalence between assignment and transportation problems (cf. Prop. 4): Proposition 1: Let sp = Number of similarity classes of persons so = Number of similarity classes of objects. If a complete assignment S and a similarity class price vector p satisfy E-CS and min{sp, so} then S is optimal. In what follows in this section we describe two variations of the auction algorithm. The first variation is actually a special case of the second, but is easier to understand and illustrates the main ideas more clearly. The Auction Algorithm for Similar Objects 13 Consider a variation of the auction algorithm which is the same as the one of the previous section except that the bidding increments are determined by the values of the similarity classes of the objects rather than the values of the objects themselves. Specifically, in the bidding phase, each person i determines the object j* that offers maximum value vij* = maxjE A(i) vij [cf. (5)], but the "second best level" wi is defined now as Wi = maxje A(i), jo M(j*) vij (16) (instead of wi = maxjE A(i), jo j* vij). Roughly, wi is the "value of the second best similarity class" rather than the value of the second best object. We refer to this algorithm as AUCTION-SO (for Similar Objects) to distinguish it from the auction algorithm of the previous section, which will be referred to as AUCTION. Because we have maxjEA(i), j M(j*) vij < maxje A(i), jj* vij, it follows that the bid (cf. (7)) bij* = pj* + vij* - w i + e (17) with wi given as in AUCTION-SO [cf. (16)] will be at least as large than the corresponding bid for AUCTION where wi is given by (6). As a result the price changes of the objects in AUCTION-SO are potentially larger than in AUCTION (see Fig. 3). The termination of AUCTION-SO is also potentially faster because, with larger price increases, the gap between values of unassigned and assigned objects will be diminishing faster. As an example the problem of Fig. 2 will be solved mush faster with AUCTION-SO than with AUCTION (see Fig. 4). 14 Price increment bij. - Pj* implicit in the bid of person i for its best object j* in the case of AUCTION Values vijj of objects j for person i class;- - - v j.*: The value of j*, the best object ESimilarity Similarity for person class ofi)jt (best for person i) for person i (= ) \ i - - The value of the second best object for person i \2 . -- Similarity class(second best for person i) - wi : The value of the second best similarity class for person i J4 15 e Price increment b j* - pj* implicit in the bid of person i for its best object j* in the case of AUCTION-SO Figure 3: Illustration of the bid of person i in AUCTION-SO. The object j* offers the best value vij* for person i. The bidding increment b ij*- p j*is set to the difference vij* w i plus e. However, here wi is the value offered by the second best similarity class, rather than the value of the second best object as in AUCTION. When all the second best objects belong to the similarity class of j* (as in the figure), the bid bij* will be higher in AUCTION-SO than in AUCTION. 15 PERSONS OBJECTS 1 _ '; ~Initial price = O prioObjects 1 and 2 form a similarity class Init'\ price = 0 W ,ZInitial Here aij = C > 0 for all (i,j) except for a33 which is 0 Initial price = 0 Figure 4: Application of AUCTION-SO to the problem of Fig. 2. Here the objects 1 and 2 form a similarity class. At the first bidding phase, this similarity class is best for all persons. Person 3 submits a bid C + e for either object 1 or 2, while persons 1 and 2 submit a "very high" bid for either object 1 or 2 because there is only one similarity class of objects to which they can be assigned. If both objects 1 and 2 receive a bid at the first iteration, then after the first iteration, the prices of objects 1 and 2 will be very high and only person 3 will unassigned. As a result, it is seen that AUCTION-SO will terminate at the next iteration when person 3 will bid for object 3. If all persons bid for object 1 (or for object 2) at the first iteration, it can be seen that AUCTION-SO will terminate after three iterations. The key fact regarding AUCTION-SO, is that assuming the initial assignment S satisfies £CS together with the initial similarity class price vector , that is Ki - £ = maxkeA(i) {aik- Pk - £ < aij - Pj, for each (i,j) E S, (18) the same is true of the assignment and the vector p obtained at the end of each assignment phase. To show this we assume that (18) is true at the beginning of all iterations up to a given iteration, and we show that it is true at the end of that iteration. Indeed suppose that object j* received a bid from person i and was assigned to i during the iteration. Then if pj and p'j are the object prices before and after the iteration, and p'j is the price of the similarity class of j after the iteration, Apj =minkeM(j)p'k, j = 1,..., N, (19) 16 we have [cf. (7), (8)] pij* = bij* = aij* - wi + £ (20) Using (16), (17), and the easily verifiable fact p'j > pj for all j, it follows that aij* - p'j* = aij* - bij* = wi- £ = maxjEA(i), j e M(*) {aij - Pj} - £ > majE( i), j M(j*) {aij - P'j}) - £ = maxjEA(i), j M(j*) {aij - Pj} - (21) We also have pAj, < p,*, so we obtain aij* -p j* > maxjEA(i), j M(j*) {aij - P} £ (22) Since we have aij* - O'j* = aij - A, for all je M(j*), we see that (22) implies that the e-CS condition (18) holds after the assignment phase of an iteration, for any pair (i,j*) that entered the assignment during the iteration. Consider also a pair (i,j*) that belonged to the assignment just before an iteration, and also belongs to the assignment after the iteration. Let p" be the price vector just after the iteration in which (i,j*) entered the assignment. Then, as in (21), we obtain aij* - P j* > maxjeA(i), j 0 M(j*) {aij aPj"j} - £ where Pj = minkE M(j) P"k. We have (23) 'j > P j, since the prices are monotonically nondecreasing, and p"j* =p'j* since j* must not have received a bid since it was last assigned to i. Therefore from (23) we obtain aij* - P'j*> maxjEA(i), j ¢ M(j*) {aij - P'J} - C In view of the fact P'j, < p'j*, we obtain the £-CS condition (18) for the pair (i,j*). The conclusion is that if AUCTION-SO terminates, the assignment obtained at termination is complete and satisfies C-CS together with the corresponding price vector p. Thus if 1 Number of object similarity classes 17 (cf. Prop. 1), the assignment obtained is optimal. There remains to show that AUCTION-SO terminates. We will show this in the context of the following more general algorithm that takes into account both similar persons and similar objects. The Auction Algorithm for Similar Persons and Objects We consider a variation of the auction algorithm that takes into account similar persons. The idea is to submit a common bid for all persons in a similarity class if at least one person in the class is unassigned. As a result, persons in the same similarity class do not "compete" against each other for the same object, and the bids submitted are higher than they would otherwise be. This idea is combined with the variation discussed earlier that takes into account similar objects to accelerate termination even further. The algorithm will now be described formally. We fix £ > 0, and we start with some assignment S (possibly the empty assignment), and a price vector p satisfying the following condition: £ - Complementary Slackness Strengthened (e-CSS): If (i,j)e S, then aij - pj > maxkEA(i), k 9 M(j) {aik - Pk - £, (24) that is, the value of j for i can be worse by at most £ over the highest value offered by similarity classes other than the one of j. We note that the £-CSS condition implies that S and the similarity class price vector p given by (14) satisfy e-CS (the reverse is not true). Indeed, from (24) and the definition (14) of p we have for all (i,j)e S, aij - pj 2 aij -pj 2 maXkE A(i), k 0 M) {aik - Pk} Since we also have aij - pj = maxk E M(j) {aik - Pk }, the E-CS condition 18 aij - pj 2 max k E A(i) {aik - Pk - E-= Xi - V (i,j)e S V, follows. The algorithm proceeds iteratively, and terminates when a complete assignmentiis obtained. At the start of the generic iteration we have a pair (S,p) satisfying e-CSS. At the end of the iteration we obtain another pair (S',p') that will be shown to satisfy £-CSS. As earlier, there are two phases in each iteration, the bidding phase, and the assignmentphase described below: Bidding Phase: For each similarity class of persons M(i) containing a person i that is unassigned under the assignment S: Compute the current value vij = aij - pj of each object je A(i). Let il, i2 , ... , im be the persons in M(i) that are assigned under S, and let jl, j 2, ... , jm be the corresponding objects to which they are assigned. Let im+l, im+2, ... , in be the persons in M(i) that are unassigned under S. Denote also by jm+l, jm+2, ..., in' the objects that belong to A(i) and are not assigned to any person in M(i) under S, and assume that these objects are ranked in order of nonincreasing value, i.e. v.. 1Jm+ 1 v.. Jm+2 > .. v..1 . Jn' (25) Compute the scalar wi (which is analogous of the scalar wi of (6) and (16)) as follows: Case a): If n < n' and jl, i 2 , ... , jn do not belong to the same similarity class, let wi =v.. %+1 . (26) Case b): If n < n' and j 1, 2 , ..., in belong to the same similarity class, let wi be the value vij of the first object j E {in+l, ..., in'} that does not belong to the common similarity class M(jl). 19 Case c): If n=n', which is the exceptional case where all the objects in A(i) must be assigned to the persons in the similarity class of person i, we define w i to be -a or, for computational purposes, a number that is much smaller than minjE A(i) vij. Compute the "bid" of each person il, i2, ..., in for the object j 1,j2, ... , in, respectively, as b.. lkJk =a. - wi+ e. (27) lkJk (As before, we characterize this situation by saying that person ik bid for object jk, and that object jk received a bid from person ik. Note here that the objects il, ..., im, which are assigned under S will bid for their assigned objects jl, j 2, ... , jm. Cases a) and b) and the corresponding bids are illustrated in Fig. 5.) 20 Values v ij of objects j for person i Value of best objects for similarity class of i 1st Similarity Class ' ....... Common value of already assigned objects to persons - - - - in the similarity class of i ---------- Case a) Value vij n wi = Value vij n+1 2nd Similarity Class ,Object ' -_ --- values after the bid is accepted - Value vin Values vij of objects j for person i Value of best objects for similarity class of i 1st Similarity Class ~ Common value of already assigned objects to persons in the similarity class of i -- --)-,- Value vijin Case b) Value Vijn+ 1 rValue of first object j E{jn+l'-" in'} 2nd Similarity Class --------- wI = that does not belong to the leValue v.. similarity class Of jl,...,jn Iin' Object values after the bid isaccepted -4- Figure 5: Illustration of the bid of a similarilty class of an unassigned person i. There are n persons in this class. The objects that the similarity class bids for are jl,...,jn. The common value of those of the objects for which the bid is accepted is shown for case a) (objects jl,--"n belong to the different similarity classes), and for case b) (objects Jl ,...,j belong to the same similarity class). 21 Assignment Phase: For each object j: Let P(j) be the set of persons from which j received a bid in the bidding phase of the iteration. If P(j) is nonempty, set pj to the highest bid, i.e., p'j = maxiE(j) bij (28) remove from the assignment S any pair (ij) (if one exists), and add to S the pair (i*,j) where i* is some person in P(j) attaining the maximum above. If P(j) is empty, pj is left unchanged, i.e., p'j = Pj. The problem can be easily transformed so that the exceptional Case c) of the bidding phase does not arise. To simplify the subsequent analysis we will henceforth assume that if necessary, this transformation is done, so that Case c) never arises. Our results, however, hold even when Case c) can arise, provided we allow the object prices to take the value -oo and we interpret appropriately the arithmetic of extended real numbers. The preceding algorithm will be referred to as AUCTION-SOP (for Similar Persons and Qbjects). Note that the case where all similarity classes of persons consist of a single person corresponds to m=0O and n=l in the bidding phase. Then case a) of the bidding phase never arises and AUCTION-SOP coincides with AUCTION-SO. Note also that the structure of the algorithm is such that if at the end of an iteration we have (i,j)e S and (i',j')e S, and i - i', then aij - pj = aij' - pjt, that is, objects assigned to persons from the same similarity class have the same value for these persons. If in addition j - j', it follows that pj = pj,. We now show the validity of AUCTION-SOP. Proposition 2: At each iteration prior to termination of AUCTION-SOP, all the object prices do not increase, and at least one object price increases by at least e. Furthermore, e-CSS holds at the end of each iteration. 22 Proof: Suppose £-CSS holds before a given iteration, and let pj and p'j be the prices of the objects j before and after the iteration respectively. Let also 7i be the person profits and S be the assignment before the iteration. Suppose that person ik E M(i) bids for object jk E M(j) during the iteration. We will show that bid k2 Pjk if (ikjk) E S bijk>2 pj + £ if (ik,jk) (29) S Suppose first that (ik,jk) E S. Then by £-CSS we have aijk- Pjk> maxs E A(i), s M(j){ais- Ps} - (31) If the bid of the similarity class of ik is based on Case a) in the bidding phase, we have maxsE A s M{maiS- Ps}- vijl=wi while if Case b) holds, we have maxs A(i), s * M(j){ais- Ps} = Wi Thus in either case, (31) yields aiJk- Pjk2 wi- £ Using this relation together with (27), we obtain bidjk PJk proving (29). Suppose next that (ik,jk) 0 S. Then in both Cases a), and b), in view of the ordering (25), we have 23 aik-k Pjk Wi and using this relation together with (27), we obtain bidk> Pjk+ e proving (30). Since the price of jk after the iteration is equal to the highest bid [cf. (28)], from (29) and (30) we obtain P 'j k Pjk if (ik,jk) E S(32) (ik,jk)0' S if P j-k Pjk+ (33) We also have p'j = pj for every j that did not receive a bid during the iteration. Thus the object prices cannot decrease during an iteration. Furthermore, since at least one unassigned person bids at each iteration, it follows from (33) that at least one object price will increase by at least £. We next show that e-CSS is satisfied following an iteration. Suppose that (ik,jk), with ik E M(i) and ik E M(j), belongs to the assignment following an iteration and that ik bid for jk during the iteration. Then aijk- P'jk aij k- bikjk=wi- 2 max{ais - Ps I s E A(i), s o M(jk), s did not receive a bid from any person in M(i)) - £ > max{ ais - P's I s E A(i), s i M(jk), s did not receive a bid from any person in M(i)} - £ where the next to last inequality holds as an equation if Case b) holds when the bid of the similarity class of ik is calculated. We also have aijk- Pj,= a- bi > ai ,s p',s for all s E A(i) such that s received a bid from a person im E M(i). By combining the last two relations we see that £-CSS holds at the end of the iteration. 24 Consider now the case where (ik,jk), with ik E M(i) and jk E M(j), belongs to the assignment following an iteration but ik did not bid for jk during the iteration, because all persons in M(ik) were assigned during the iteration. Let p" be the price vector at the end of the last iteration where all persons in M(ik) were assigned. Then by e-CSS we have.. aijk- P"jk2 maxsE A sgz M(J){ ai,,- pS - £ It is seen that the price of jk remained unchanged since the last iteration where all persons in M(ik) were assigned, while the other prices could not have decreased, i.e. P j,= P'jk Ps < P's V s E A(ik) By combining the last three relations we see that e-CSS holds for the pair (ik,jk). Q. E. D. Proposition 3: AUCTION-SOP terminates if the problem is feasible, i.e. there exists at least one complete assignment. Proof: We make the following observations: a) Once an object is assigned, it remains assigned throughout the remainder of the algorithm's duration. Furthermore, except at termination, there will always exist at least one object that has never been assigned, and has a price equal to its initial price. This is due to the fact that a bidding and assignment phase can result in a reassignment of an already assigned object to a different person, but cannot result in the object becoming unassigned. b) When the similarity class of a person bids during an iteration the price of at least one of the objects that it bids for increases by at least e (cf. Prop. 2). c) The profit 7Ei of a person i decreases by at least E when the person (together with all other persons in its similarity class) bids during a number of iterations which is greater or equal to L j EAO) IM(j)l (34) 25 where IM(j)I is the cardinality of the similarity class of object j. The reason is that the number of objects that attain within e the maximum in the definition (3) of xi is at most equal to the sum (34), and the price of each of these objects must increase (by at least e, thereby decreasing Ki by at least &) before the similarity class of person i will submit a bid for any other objects. We now argue by contradiction and assume that the algorithm never terminates. Then-the prices of a proper and nonempty subset Joo of objects increase to +oo [cf. observations a) and b) above], while the profits xi of a nonempty subset I °° of persons decrease to -oo, [cf. c) above]. For all i E I-, we must have J°IDA(i), since otherwise, from the definition (3), it is seen that the profit of i would be bounded. The objects in J- after some iteration can only be assigned to objects from I-, since the profits of persons not in I °° remain bounded and the prices of objects in J-o increase to +oo. Furthermore, in view of observation c) above, only persons from I °° will be unassigned after some iteration. Therefore the cardinality of I °° is greater than the cardinality of Jo, while we have Jo D A(i) for all i in IP. This contradicts the existence of a complete assignment. Q. E. D. By combining now Props. 1 - 3 we see that if the problem is feasible and e < 1/min{ sp, so}, then AUCTION-SOP will terminate with an optimal assignment. 4. The Auction Algorithm for the Transportation Problem We now consider a transportation problem of the form maximize 2 I aijfij i=lje A(i) subject to A fij = ai, i=1,...,N je A(i) E fij = [j, j=l,...,M {iljE A(i)) Ej U(TP) where aij, and A(i) are as in the assignment problem, and cai, and [Dj are given positive integers, called the supply of source i and the demand of sink j respectively. For feasibility, it is necessary to assume that 26 N Elai= i=1 M 'Pj (35) j=1 This problem can be converted into an assignment problem by replacing source i (sink j) with ai similar persons (or [j similar objects, respectively). We call this assignment problem (ATP). An integer flow variable fij in (TP) is equivalent to assignment of fij similar persons (corresponding to source i) to fij similar objects corresponding to sink j. A flow vector f = {fij Ij E A(i) } satisfying 0 < fij, ljfij < ai, for all (ij) with j E A(i), for all i, and lifij < [j, (36) for all j, (37) corresponds to an assignment in (ATP). This assignment is complete if and only if the flow vector f is feasible in (TP). Consider now the auction algorithm for (ATP) as modified in the previous section to take into account similar persons and objects. We assume that the initial assignment and price vector satisfy the E-CSS condition of the previous section, and that initially all objects in the same similarity class have equal prices. The assignment and price vector pairs generated by the modified auction algorithm will satisfy £-CSS at the beginning of each iteration. Furthermore, all objects from the same similarity class which are assigned to persons from the same similarity class have equal prices; see the note preceding Prop. 2. Therefore the price vector can be described by specifying, for each (i,j) with je A(i), a common price Yij for all objects of the similarity class of j which are assigned to persons in the similarity class of j, together with the common initial price y0j for the unassigned objects in the similarity class of j. We denote by R(j) the set of indices i=l, 2, ..., N for which there are some objects in the similarity class of j which are assigned to some persons in the similarity class of i, together with the index 0, if there is some unassigned object in the similarity class of j. Because initially all objects in the same similarity class have equal prices, and all prices are monotonically nondecreasing, we see that at the begining of each iteration we have YOj < Yij, if 0 E R(j), andj E R(j). Furthermore £-CSS yields that the price vector p with coordinates given by (38) 27 (39) pj = minieR(j) Yij, satisfies the g-CS condition is R(j), i0 =X Iti-E<aij-pj. where ni, the profit of source i, is given by [cf. (3)] (40) 1i = max{k IjeA(k)} {akj - pj} In the context of the transportation problem (TP) this condition is restated as li- <aij-Pj, fij> >0 (41) which may be viewed as a version of the e-CS condition of [6], [11], [9], [10] as applied to the transportation problem (TP). The following proposition derives the appropriate threshold value for e that guarantees optimality of a feasible flow vector f and a price vector p that satisfy the s-CS condition (41). Proposition 4: If the feasible flow vector f and the price vector p satisfy the £-CS condition (41) with e<l/min{M,N}, then f is optimal. Proof: If f is not optimal, there must exist a cycle with no repeated nodes Y = (il, j 2 , i2, j3, . , ik-l, k, ik,jl, iil) along which flow can be pushed without violating the feasibility of f and with an improvement of the primal cost. Here the nodes imand jm are sources and sinks, respectively, and jmE A(im), jm+l E A(im), m=1,2,..., k-I, jke A(ik), jle A(ik). Because Y has no repeated nodes, we have k < min{M,N}, which based on the hypothesis on c, implies that ke < 1 Furthermore, we must have (42) 28 m= 1,..., k figi> 0, (in order to be able to push flow from jm back to im), and k k aimjm + 1 < aikjl+ E aim lim m=2 m=l (44) (since pushing flow along Y improves the cost and the coefficients aij are integer). It follows that k k (ai m-pj) + 1 < (aikjl-pjl) + m=l k k < (aim-lJm- Pjm; m--2 m= (45) Using (43) and the E-CS condition (41) we obtain iim- Eaimim- Pj n m= 1, .k (46) The last two inequalities and the condition ke < 1 [cf. (42)] yield k i m=l (aimm pjA +1 < E m=l k im< I m=l kk (ai PjppJ + < m=l + (am1, which is a contradiction. Q. E. D. Based on the equivalence of transportation problems and assignment problems with similarity classes of persons and objects discussed earlier, it is seen that Prop. 1 is a special case of Prop. 4. We now describe our transportation algorithm, by restating AUCTION_SOP for the equivalent assignment problem (ATP) in terms of a flow variable fij and a price variable for each (ij) with je A(i), together with a set of initial price variables y0j for all sinks j. The generic iteration of this algorithm consists of a bidding phase and an assignment phase stated below. At the start of the iteration we have a set of flow variables fij and price variables Yij satisfying conditions (39), (40), and (41). At the end of the iteration we obtain a set of flow variables fij and price variables 29 Y'ij satisfying the same conditions. To simplify the statement of the algorithm we define, for any flow vector f, foj = Pj - [i IjEA(i)) fij, j = 1, 2, ..., M. (47) We also assume that < ai E Pj, j E A(i) for all i; this guarantees that Case c) in the bidding phase of AUCTION_SOP does not arise. Bidding Phase: For each source i such that Ej fij < ai: Consider the collection II(i) = {aij - Ykj Ij E A(i), and either k=0 and f0j > 0 or kai and je A(k), fkj > 0 }, (48) and assume that fI(i) is ordered in nondecreasing order, i.e. for some fi we have 1(i) = {aij - ykl j l , aij 2 - Yk2 j2 , ... , aij - yknji} with ai - YlJrn > aiJn+l - Ykl+l+, Let m be the smallest integer m' such that fkj + *-- + fkm,m- ai- x fij. m, given by je A(i) Define flows iij for all je A(i), j'j forall n 1,... - 1. 30 tij = fij jl, ... , jm if fij= fij + E fkjn if i E {jl, j2,i, Jm-1} {jn Ij=j, n= 1..., m-1) and then define fi. =afi.- j ({j A(i)lj,-j m} Compute the scalar wi as follows: If tij > 0 for more than one sinks j, then wi= aij - (aim- ym), and otherwise wi- aij -(aij - ykjn), where n is the first integer n' for which jn't jl. Compute the "bid" of source i for each flow tij > 0 as bij = aij - wi + £. (As before, we characterize this situation by saying that source i bid for a flow increment tij of sink j at a price bij, and that sink j received a bid from source i for a flow increment fij at a price bij.) Assignment Phase: For each sink j: Let P(j) be the set of sources from which j received a bid for a positive flow increment in the bidding phase of the iteration. Assume that P(i) is ordered in nondecreasing bid value, i.e. P(j) is of the form 31 P(j) = {il, i2 , ... , im} where ' b~imJ> bi,+lj, ' for m = 1, ... , - 1. Let m n=m if fij < [j m=l and, otherwise, let n be the smallest integer m' such that fij J> j m=l Then update the flows fij, for i such that je A(i), by if f'ij = tij iE {il,...,in-1} n [ j} f'ij = fij - max{O, ,fif,- if i=i n m=l fij = 0 otherwise. Set also Y'ij = bij, Y'Oj = Y0j. for i{il, ... ,in}, 32 Based on the results proved for the auction algorithm of the previous section, the transportation algorithm above terminates with an optimal solution, provided that the transportation problem (TP) is feasible and £ < 1/min{M,N}. 5.-- The Auction Algorithm for Inequality Constrained Transportation-Problems> The ideas and algorithms of the previous sections can be extended to inequality constrained assignment and transportation problems of the form N maximize A I aijfij i=lje A(i) subject to fij < eai, i= 1,...,N je A(i) \ fi < [, j=l,...,M (ilje A(i)) (TPI) 0 < fij The £-complementary slackness conditions take the form fij > 0 i= 1,...,N Ri>0, pj>O, Y. i i- -< aij - pj, =: Vj 1,...,M fij < j =: pj =O, (i Ij E A(i)) where the surce profits ni are given by Rli =max{k IjA(k)) {akj-pj}, V i = 1,...N. It can be shown that if a feasible flow vector f satisfies, together with a price vector p, the above conditions, then f is optimal if e < 1/min{M,N}. 33 Finally, the auction algorithm of the previous section can be used to solve inequality constrained problems, provided the initial flow and price vector pair satisfies the above e-CS conditions, and the set fl(i) of Eq. (48) in the bidding phase is modified to include only scalars aij Ykj that are nonnegative. In particular, if due to this restriction the set fl(i) is empty then source.i does not participate in the bidding phase. The algorithm terminates when for all sources i, either the set fl(i) is empty or the supply ai is assigned, that is, ;je A(i) fij = ai. 6. Computational Results The algorithm of Section 4 for (equality constrained) transportation problems was implemented in a code called TRANSAUCTION, and was compared with the following state-ofthe-art codes: 1) AUCTION (written by Bertsekas [8]): This is a public domain code implementing the auction algorithm for the assignment problem described in Section 2. Computational results with an early (and somewhat inefficient) version of this code [10] show that for sparse assignment problems AUCTION outperforms by a large margin the code of Jonker and Volegnant [20], which is based on the use of sequential shortest paths. 2) RELAX (written by Bertsekas and Tseng [12]): This is a state-of-the-art code for general linear minimum cost network flow problems, based on the relaxation method [5], [11]. 3) RNET (written by Grigoriadis and Hsu): This is a state-of-the-art code for general linear minimum cost network flow problems, based on the simplex method. In analogy with earlier auction algorithms, TRANSAUCTION applies the algorithm of the previous section with successively smaller values of £, starting from a large value and ending with £=1/min {M,N}; the price vector obtained at the end of each application of the algorithm is used as the starting price vector for the next application of the algorithm. The idea of successive reduction of e is known as e - scaling and has been suggested in the original proposal of the auction algorithm as a method of improving performance. E-scaling was analyzed first in [16] (and more fully in [17]), in the broader context of the e-relaxation method of [6], [7], where it was shown that it leads to polynomial algorithms. By introducing appropriate data structures and e-scaling, and by combining the complexity analysis of the unscaled e-relaxation method [6], and of scaling ([16], [17], and also [9], [10]), it is possible to use the algorithm of the previous section to construct an O((M+N)31og(Cmin {M,N})) transportation algorithm, where C=max{ laijl Ije A(i)). This will be 34 demonstrated in more general form in a forthcoming publication. Our TRANSAUCTION code has polynomial complexity, but does not use all the data structures needed to attain the polynomial complexity bound just mentioned; it is doubtful that an implementation attaining this bound would perform better than TRANSAUCTION in practice. The details of the e-scaling scheme that we used are somewhat complicated. Roughly, all cost coefficients aij are first-multiplied with min{M,N}, so that the threshold value of e that guarantees optimality is E = 1; then e is initialized at a value of Cmin{M,N}/2 for the first application of the algorithm of the previous section; e is reduced by a ceratin factor (4 - 6 are recommended values) with each successive application of the algorithm until the final value c=l is reached. There is also an additional feature, called adaptivescaling, whereby the value of e is gradually modified before the algorithm terminates based on some heuristic rules. Adaptive scaling is also used optionally in the public domain version of the AUCTION code. The test problems we used were of two types. The first type are problems generated randomly with the public domain program NETGEN [22]. Figure 6 shows the times required by AUCTION and TRANSAUCTION for solving NETGEN assignment problems of different sizes. The figure reflects the additional overhead (between 2 and 3) which is required to maintain the data structures used by TRANSAUCTION. 35 20 10- / /· - 100 I I C TRANSAUCTION ' )AUCTION / 200 300 400 500 600 DIMENSION OF NETGEN ASSIGNMENT PROBLEM Figure 6. Comparison of AUCTION and TRANSAUCTION for NETGEN assignment problems of different size. The number of arcs in each problem was 12.5% of the maximum possible that corresponds to a fully dense problem. Figure 7 illustrates the computation times required by the TRANSAUCTION, RELAX and RNET codes to solve the first ten standard problems of [22]. These are symmetric transportation problems with number of supply nodes ranging from 100 to 150, and number of arcs ranging from 1300 to 6300. Figure 7 shows that TRANSAUCTION runs slower than RELAXII and roughly comparably with RNET. The total supply in these problems is 1000 times the number of sources. 36 30 TRANSAUCTION 20 ~RNET i t~ Zi4~~~~ 10 RELAXIi 0- I NG1 . . I ! ! I I * I NG2 NG3 NG4 NG5 NG6 NG7 NG8 NG9 NG10 NETGEN TRANSPORTATION PROBLEMS Figure 7. Performance of TRANSAUCTION, RELAXII and RNET algorithms on NETGEN transportation problem benchmarks. The second type of problems that we tested are asymmetric transportation problems with relatively few levels of supplies and demands; by this we mean that the sources (sinks) can be divided into a few groups with roughly comparable values of supply (demand) within each group. Problems arise often in practice, where few sources with large supplies are allocated to many sinks with small demands. They are the type of problems for which TRANSAUCTION outperforms substantially both RELAXII and RNET. This is supported by the results shown in Figures 8 - 10. For these problems, the TRANSAUCTION code obtains an optimal solution in 20-50% of-the'time required by RELAXII. Figures 8-10 indicate that the advantage of TRANSAUCTION over the other codes increases with problem dimension. 37 600 500 400 RELAXII 400 300 CO a O 200 0. 100 J - 100 300 TRANSAUCTION 1000 3000 PROBLEM SIZE Figure 8. Performance of TRANSAUCTION, RELAX and RNET on transportation-assignment problems. All problems have 100 sources: 10 with large supply, and 90 with small supply. Problem size is described by the number of sinks, all of which have unit demand. The number of arcs in each problem is 14% of maximum. 300 RELAXII 200 - 0C 100 / 0) 50X200 100X400 300X1200 PROBLEM SIZE TRANSAUCTION 500X2000 Figure 9. Performance of TRANSAUCTION and RELAX on transportation problems of 38 homogeneous type. The number of sinks equals four times the number of sources. The demand of each sink ranges from 1-9, with average 5. The sources are divided into two classes, with 10% of the sources having 50% of supply divided evenly, while 90% of the sources divide the remaining 50% of supply evenly. The average number of arcs in each problem is 5% of maximum. RELAXII 60 50 40 ) TRANSAUCTION 30- 03 20 10 0 , 0 . 200 400 I I 600 800 I 1000 NUMBER OF SINKS Figure 10. Performance of TRANSAUCTION and RELAX on transportation problems of homogeneous type. There are 100 sources in each problem. 10 sources have supply 225 and 90 sources have supply 25. The average number of arcs in each problem is 14% of maximum. 39 References Balinski, M. L., "A Competitive (Dual) Simplex Method for the Assignment Problem", Math Programming,Vol. 34, 1986, pp. 125-141. Barr, R., Glover, F., and Klingman, D., "The Alternating Basis Algorithm for Assignment [2] Problems", Math Programming,Vol. 13, 1977, pp. 1-13. [3] Bertsekas, D. P., "A Distributed Algorithm for the Assignment Problem", Laboratory for Information and Decision Systems Unpublished Report, M.I.T., March 1979. [4] Bertsekas, D. P., "A Distributed Asynchronous Relaxation Algorithm for the Assignment Problem", Proc. 24th IEEE Conference on Decisionand Control, Ft Lauderdale, Fla., Dec. 1985, [1] pp. 1703-1704. Bertsekas, D. P., "A Unified Framework for Primal-Dual Methods in Minimum Cost [5] Network Flow Problems", Math. Progr., Vol. 32, 1985, pp. 125-145. [6] Bertsekas, D. P., "Distributed Asynchronous Relaxation Methods for Linear Network Flow Problems", LIDS Report P-1606, M.I.T., Sept. 1986, revised Nov. 1986. Bertsekas, D. P., "Distributed Relaxation Methods for Linear Network Flow Problems", [7] Proceedingsof 25th IEEE Conference on Decision and Control, Athens, Greece, 1986, pp. 21012106. Bertsekas, D. P., "The Auction Algorithm: A Distributed Relaxation Method for the [8] Assignment Problem", LIDS Report P-1653, M.I.T., March 1987, also in Annals of Operations Research., Vol 14, 1988, pp. 105-123. Bertsekas, D. P., and Eckstein, J., "Distributed Asynchronous Relaxation Methods for [9] Linear Network Flow Problems", Proc. of IFAC '87, Munich, Germany, July 1987. [10] Bertsekas, D. P., and Eckstein, J., "Dual Coordinate Step Methods for Linear Network Flow Problems", to appear in Math. ProgrammingSeries B, 1989. [11] Bertsekas, D. P., and Tseng, P., "Relaxation Methods for Minimum Cost Ordinary and Generalized Network Flow Problems", LIDS Report P-1462, M.LT., May 1985, Operations.. Research, Vol. 36, 1988, pp. 93-114. [12] Bertsekas, D. P., and Tseng, P., "RELAX: A Code for Linear Network Flow Problems", in FORTRAN Codesfor Network Optimization, (B. Simeone, ed.), Annals of Operations Research, Vol. 13, 1988, pp. 125-190. [13] Bertsekas, D. P., Tsitsiklis, J. N., Paralleland DistributedComputation:Numericcl Methods, Prentice-Hall, Englewood Cliffs, N.J., 1989. Engquist, M., "A Successive Shortest Path algorithm for the Assignment Problem", [14] INFOR, Vol. 20, 1982, pp. 370-384. 40 [15] Glover, F., Glover, R., and Klingman, D., "Threshold Assignment Algorithm", Center for Business Decision Analysis Report CBDA 107, Graduate School of Business, Univ. of Texas at Austin, Sept. 1982. [16] Goldberg, A. V., "Solving Minimum-Cost Flow Problems-by Successive Approximations", extended abstract, submitted to STOC 87, Nov 1986. [17] Goldberg, A. V., and Tarjan, R. E.; "Solving Minimum Cost Flow Problems by - .. Successive Approximation", Proc. 19th ACM STOC, May 1987. [18] Goldfarb, D., "Efficient Dual Simplex Methods for the Assignment Problem", Math Programming, Vol. 33, 1985, pp. 187-203. [19] Hung, M., "A Polynomial Simplex Method for the Assignment Problem", Operations Research, Vol. 31, 1983, pp. 595-600. [20] Jonker, R., and Volegnant, A., "A Shortest Augmenting Path Algorithm for Dense and Sparse Linear Assignment Problems", Computing, Vol. 38, 1987, pp. 325-340. [21] Kennington, J., and Helgason, R., Algorithms for Network Programming,Wiley, NY., 1980. [22] Klingman, D., Napier, A., and Stutz, J., "NETGEN -- A Program for Generating Large Scale (Un)Capacitated Assignment, Transportation, and Minimum Cost Flow Network Problems", Management Science, Vol. 20, 1974, pp. 814-822. [23] Kuhn, H. W., "The Hungarian Method for the Assignment Problem", Naval Research Logistics Quarterly, Vol. 2, 1955, pp. 83-97 [24] McGinnis, L. F., "Implementation and Testing of a Primal-Dual Algorithm for the Assignment Problem", OperationsResearch, Vol. 31, 1983, pp. 277-291. [25] Papadimitriou, C. H., and Steiglitz, K., CombinatorialOptimization: Algorithms and Complexity, Prentice-Hall, Englewood Cliffs, N.J. 1982. [26] Rockafellar, R. T., Network Flows and Monotropic Programming,J. Wiley, N. Y., 1984.