A COMBINATORIAL ARC TOLERANCE ANALYSIS FOR NETWORK FLOW PROBLEMS

For the separable convex cost flow problem, we consider the problem of determining tolerance set for each arc cost function. For a given optimal flow x, a valid perturbation of cij(x) is a convex function that can be substituted for cij(x) in the total cost function without violating the optimality of x. Tolerance set for an arc(i,j) is the collection of all valid perturbations of cij(x). We characterize the tolerance set for each arc(i,j) in terms of nonsingleton shortest distances between nodes i and j. We also give an efficient algorithm to compute the nonsingleton shortest distances between all pairs of nodes in O(n3) time where n denotes the number of nodes in the given graph.


Introduction
Consider a directed network G = (N,A), where N is the set of nodes and A is the set of arcs.Let x denote the flow vector and let C i j (x) be the convex cost function associated with each arc(i, j) ∈ A, where C i j (x) is a function of the flow x i j on arc(i, j) only.The separable convex cost flow (SCCF) problem is to find a flow x which minimizes the total cost while satisfying supplies/demands at nodes and honoring the capacity constraints on the arcs.The arc tolerance analysis for SCCF is the problem of characterizing valid cost perturbations of an arc with respect to an optimal flow; the valid perturbations are the convex cost functions that can replace the existing cost function of an arc while keeping the optimality of the given flow.In this paper, we study the arc tolerance analysis for SCCF and give a combinatorial algorithm to compute the arc tolerance set for each arc which characterizes the corresponding valid perturbations.
For the minimum cost flow problem, the arc cost function C i j (x) = c i j x i j is a linear function of the arc flow and c i j is called the cost coefficient of arc(i, j).The set of all the values of c i j for which a flow remains optimal forms an interval on the real line.In the literature, the problem of finding these intervals is called the arc tolerance analysis Srinivasan and Thompson [9] specialized sensitivity results of linear programming to the transportation problem.They apply the so-called basis preserving cell operators to calculate tolerance intervals associated with an optimal basis.Shier and Witzgall [7] studied arc tolerance associated with a basis for the linear minimum cost flow problem.They exploited the tree structure of the basis to develop an O(n 2 ) algorithm to calculate tolerance intervals for all arcs.
Optimal basic (spanning tree) solutions to network flow problems often have high degree of degeneracy.For example, dynamic networks for the vehicle allocation problem studied by Powell [5] have been found to have 40%-80% degenerate basic (tree) arcs (i.e., flows on these arcs are either at upper or lower bounds).Due to degeneracy, tolerance interval of an arc with respect to an optimal basis is often not exact, that is, it need not contain all possible perturbations of the arc cost coefficient.Degeneracy issues have also drawn the attention of other researchers.Fong and Srinivasan [2] calculate nondegenerate shadow prices.They delete the degenerate basic arcs, contract the resultant subtrees into a single node, and then find shortest distances in the resultant graph to find nondegenerate shadow prices for the transportation problem.Powell [5] has characterized nondegenerate shadow prices for the minimum cost flow problem in terms of shortest distances without using any contractions.He gives an approximation procedure for calculating nondegenerate shadow prices, and applies it to dynamic networks arising in the vehicle allocation problem.
Maier [4] has modified Fong and Srinivasan's procedure for calculating nondegenerate arc tolerance intervals for the minimum cost flow problem.He calculates the nondegenerate tolerance interval of a nondegenerate basic arc by deleting all degenerate basic arcs and the considered arc, and then contracting the resulting subtrees.The shortest distance between the head and tail nodes of the considered arc gives the required interval.For the SCCF, we define the arc tolerance set for an arc(k,l) with respect to an optimal flow (say x), as the set having the property that any convex cost function with at least one of its right or left derivative or both at x, in this set, is a valid cost perturbation of the arc(k,l).In this paper, we show that the arc tolerance set has one of the following forms: Here dl (k) is the nonsingleton shortest distance from node l to node k and dk (l) is the nonsingleton shortest distance from node k to node l.We develop an O(n 3 ) algorithm to compute the nonsingleton shortest distance { dk (l)} for all pairs of nodes.For the minimum cost flow problem, our arc tolerance set reduces to an exact tolerance interval, and our algorithm does not have to contract the original network for computing these intervals.The paper is organized as follows.Section 2 contains the necessary background material and the optimality conditions for the separable convex cost flow problem.In Section 3, we characterize the arc tolerance set in terms of nonsingleton shortest distances.In Section 4, we develop the algorithm for computing nonsingleton shortest distances between all pairs of nodes.Section 5 contains concluding remarks.

Notation and background
In this section, we state the separable convex cost flow (SCCF) problem and introduce related definitions and notations.We also state the optimality conditions for a flow to P. T. Sokkalingam and P. Sharma 85 be optimal for SCCF.We follow the terminologies and notations used in [1] apart from those defined in this paper: (iv) x = {x i j }, m-dimensional flow vector on the arc set A; (v) C i j (x) = convex cost function for flow x i j on arc(i, j); (vi) u i j = upper bound on the flow on arc(i, j); (vii) b i = supply/demand for node i ∈ N, n i=1 b(i) = 0. SCCF can be formulated as follows: subject to ( The SCCF reduces to the minimum cost flow problem, when all C i j (x)'s are linear functions; that is, C i j (x) = c i j x i j , where c i j is a real number.
A large variety of algorithms, which either use nonlinear programming techniques or linear programming techniques, are available for solving the SCCF.Ahuja et al. [1] have given quite a comprehensive list of references on SCCF.

Marginal costs.
The right marginal cost of arc(k,l), C + kl (x), with respect to the flow, is the right derivative of the arc cost function C kl (x) at x, that is, the rate of change in C kl (x) when flow is increased on arc(k,l).Thus where e kl is an m-dimensional vector of zeros with a one in the component corresponding to the arc(k,l).Similarly, the left marginal cost of arc(k,l), C − kl (x), is the left derivative of the arc cost function C i j (x) at x; and is negative of the rate of change in C i j (x) when flow is decreased on arc(k,l), that is,

Cost of augmenting cycles and paths.
A cycle W in G is an augmenting cycle with respect to a flow x if we can augment θ > 0 units of flow along the cycle while satisfying (2.2).We define the cost C(W) of the cycle W as the rate of change in the objective function as we augment the flow along the cycle W.Thus, where W + is the set of arcs in W on which the flow increases and W − the set of arcs on which the flow decreases.From (2.3) and (2.4), it follows that For an augmenting path P with respect to the flow x, the augmenting cost C(P) of the path P is the rate of change in the objective function as we augment the flow along the path P. Thus, where P + and P − have the same meaning as W + and W − .

The residual network.
For the residual network G(x) = (N,A(x)) for a feasible flow x for every arc(i, j) ∈ A with x i j < u i j , we introduce an arc(i, j) ∈ A(x) with residual capacity r i j = u i j − x i j and cost c i j = C + i j (x); for every arc(i, j) ∈ A with x i j > 0, we introduce an arc( j,i) ∈ A(x) with r ji = x i j and cost c ji = C − i j (x).Note that for the minimum cost flow problem, c i j = c i j if (i, j) ∈ A and c i j = −c ji if ( j,i) ∈ A. The network G(x) contains cycles of the type i − (i, j) − j − ( j,i) − i, that is, cycles consisting of arcs (i, j) and (j,i) only, if the flow x i j lies in between the bounds, that is, 0 < x i j < u i j .We call these cycles as trivial cycles, since these cycles represent zero flow augmentation on the corresponding arcs.We note that any augmenting cycle W 1 in G with respect to the flow x corresponds to a directed cycle W in G(x); the directed cycle W is a nontrivial cycle and is obtained by reversing the arcs in W 1 on which the flow is decreased.Conversely, any nontrivial directed cycle W in G(x) corresponds to an (2.8) Thus, by construction, the cost of the cycle W in G(x) is the same as the cost of the cor- . Henceforth, we mainly work with the residual network, since it simplifies the discussion and is equivalent to working with the original network.

Optimality conditions.
We need the following two well-known conditions (for more details, see Rockafellar [6]) for a flow x to be optimal for SCCF.We state them using our notations and terminology.

Theorem 2.1 (negative cycle optimality conditions). A feasible flow x to SCCF is optimal if and only if G contains no negative augmenting cycle W with respect to the flow x (equivalently, the residual network G(x) contains no negative directed cycle).
Theorem 2.2 (reduced cost optimality conditions).A feasible flow x to SCCF is optimal if and only if there exists a node potential vector satisfying the following conditions: where and c i j are the costs of arcs in G(x) as defined earlier.
The reduced cost optimality conditions in terms of the marginal costs C + i j (x) and (2.11)

Arc tolerance analysis
In this paper, we investigate the problem of determining all possible convex cost perturbations of the cost function of an arc, while holding all other cost functions, supplies/demands, and capacities constant, such that a given solution to SCCF remains optimal.We refer to this problem as the arc tolerance analysis.In what follows, we develop a combinatorial theory for arc tolerance analysis based on the negative cycle optimality condition of Theorem 2.1.Let x be an optimal flow and let the cost function C kl (x), for arc(k,l), be perturbed.Let C kl (x) denote the perturbed cost.We will say C kl (x) is a valid perturbation of C kl (x) if it is convex and if x remains optimal when C kl (x) is replaced by C kl (x), in the SCCF (2.1) and (2.2).From the construction of the residual network and the negative cycle optimality condition, it is clear that the factors which influence the optimality of the flow x with respect to the arc(k,l) are only the marginal costs of the cost function C kl (x).We are therefore able to characterize all valid perturbations C kl (x) of C kl (x) in terms of the marginal costs of C kl (x).We show that all valid perturbations of C kl (x) will either have or For the minimum cost flow problem with linear cost, we show that the arc tolerance set reduces to an interval on the real line.Let (k,l) denote an arbitrary but fixed arc, which is considered for finding its tolerance interval.Let C kl (x) be any convex function replacing C kl (x).The perturbed total cost function is Let G be the network obtained from G(x) after deleting the arcs (k,l) and (l,k) if they are present in G(x).From the construction of G(x), we have By the negative cycle optimality conditions, G(x) contains no negative cycles.Furthermore, after perturbation, the costs of arcs (k,l) and (l,k) in G(x) change to C + kl (x) and − C − kl (x), respectively, while costs of all other arcs remain unchanged.These two facts lead to the following observations.We denote the shortest distances from node p to node q in G by dp (q).We use the convention that dp (q) = ∞ if there is no path from node p to node q.Property 3.1(a) implies that one can find dp (q) in G, in polynomial time using label correcting shortest path algorithms such as Bellman-Ford's.We will need the following property in subsequent discussions.
Proof.dk (l) + dl (k) is the cost of a closed walk consisting of a shortest path from node k to node l and a shortest path from node l to node k in G. Since G has no negative cycles, dk (l) + dl (k) ≥ 0. In case no nonsingleton paths exist from l to k or k to l, the inequality is still valid since in that case the right-hand side is ∞.
Lemma 3.4.The convex function C kl (x) is a valid perturbation of C kl (x) if and only if the following conditions hold: P. T. Sokkalingam and P. Sharma 89 Proof.Any minimum cost cycle containing arc(k,l) is the union of arc(k,l) and a shortest path from node l to node k in G, and its cost is C+ kl (x) + dl (k).Similarly, the cost of any minimum cost cycle containing arc(l,k) is − C+ kl (x) + dk (l).By negative cycle optimality conditions, the convex function Ckl (x kl ) is a valid perturbation if and only if, after the perturbation, G(x) contains no negative cycles.By Property 3.2, this holds if and only if Hence, the lemma.
Note that a shortest path from node k to node l in G is a shortest path from node k to node l excluding the single arc path k − (k,l) − l, which is in turn a shortest augmenting path from node k to node l in G excluding the path k − (k,l) − l or the path k − (l,k) − l.For this reason, dk (l) can be considered as the nonsingleton shortest augmenting distance from node k to node l in G.
We are now able to characterise the tolerance set for arc(k,l) in terms of the nonsingleton shortest augmenting distances, dl (k) and dk (l).Theorem 3.5.Let dk (l) and dl (k) denote the nonsingleton shortest augmenting distances with respect to the flow x.Then C kl (x) is a valid perturbation of C kl (x) if and only if For the minimum cost flow problem with linear cost functions, that is, By the construction of these intervals, it follows that any one of them will constitute an exact tolerance interval for the minimum cost flow problem.

Algorithm for finding nonsingleton shortest paths
In Section 3, we have shown that the tolerance set of an arc(k,l) can be immediately calculated, once we know nonsingleton shortest distances dk (l) and dl (k) in G(x) (Theorem 3.5).Since G(x) contains no negative cycles, but contains usually many negative arc costs, we can find tolerance sets for all arcs by applying a label correcting shortest path algorithm (such as Bellman and Ford's algorithm) in O(m) times.The best (strongly) polynomial time bound for any label correcting algorithm is O(nm) (Ahuja et al. [1,Chapter V].)This straightforward method for computing all relevant nonsingleton shortest distances would be highly inefficient, since its complexity would be O(nm 2 ).In this section, we improve this complexity significantly to O(n 3 ) in two ways: (1) by working with optimal node potentials, (2) by reoptimization.

4.1.
Working with an optimal node potential.The reduced cost optimality conditions (Theorem 2.2) guarantee that there exist node potentials π such that c π i j ≥ 0 for all arcs in G(x).We call such a π an optimal node potential vector.From definition of c π i j , it follows that for any directed path P from node p to node q, From (4.1), it follows that if we denote the nonsingleton shortest distance with respect to c π i j 's from node p to node q by dπ p (q), then dp (q) = dπ p (q) + π(p) − π(q).( We often get a node potential vector π satisfying c π i j ≥ 0 for every (i, j) in G(x), as a by-product of solving SCCF.Otherwise, we use the following procedure to find such a node potential vector.The procedure has the following three steps.
(1) Augment the network G(x) by adding a node s to G(x) and connect this node to every node i by an arc(s,i) of cost 0.
(2) Find shortest distance d(i) from node s to every node i in the augmented network by applying a label correcting shortest path algorithm. ( Step (2) dominates all other steps and, as we pointed out at the beginning of this section, requires O(nm) time.We call it as procedure potential-initialization.

The reoptimization procedure.
Once we have optimal potentials at hand, we proceed as follows.We choose a node p and apply Dijkstra's algorithm to find a shortest path tree T p from node p ∈ G(x), using arc costs c π i j .The path from node p to any node i in T p is a shortest path from node p to node i, and we denote the corresponding shortest distance by d π p (i).For each node i, the predecessor index pred(i) gives the predecessor node j of node i in T p .We will say that pred(p) = 0. Using index pred(i) we construct other tree indices, namely, depth index and thread index of each node i ∈ N, denoted by depth(i) and thread(i).For details, refer to Ahuja et al. [1,Chapter 11].The index depth(i) stores the number of arcs in the path from the root node p to node i in the tree.The indices thread(i)'s define a traversal of the tree, starting from the root node p, and visiting other nodes in a "top-to-bottom" and "left-to-right" manner, and finally returning to the root node.For node i, thread(i) is the node in depth-first search encountered just after node i.

P. T. Sokkalingam and P. Sharma 91
First we build adjacency list of each node i in T p , denoted by SUCC(i).We then apply breadth-first and depth-first search in T p and use SUCC(i)'s, to construct depth indices and thread indices, respectively, the procedure takes O(n) time.We will see below how these indices are used for efficient reoptimization.
We first point out that the tree paths in T p from p to all nodes except for those in SUCC(p) are nonsingleton shortest paths.To find a nonsingleton shortest path from p to node q in SUCC(p), we delete the arc(p, q) from T p as well as from G(x); as a result, all relevant information, pred(i)'s and d π p (i)'s, becomes invalid only for nodes in D(q), the set of all descendants of node q including q. Let, for each node i ∈ D(q), nsd(i) denote the distance of a shortest path from node p to node i in G(x) − (p, q) passing through the set of permanently labeled nodes (i.e., the nodes for which shortest distances have already been found).Note that N − D(q) is the set of permanently labeled nodes just after the deletion of arc(p, q).Let nspread(i) denote the predecessor of node i in the corresponding shortest path.We initialize the label nsd( j) for each node j ∈ D(q) as follows: where B( j) is the backward star of node j.To perform this process efficiently, we first mark nodes in D(q); we do this by tracing thread(i) starting from node q until the depth of node next traced is at least equal to that of node q (we use depth indices).Then, we again visit nodes D(q) one by one using thread indices, and scan their backward star to initialize nsd( j) for each j ∈ D(q).The algorithmic description of this procedure is given under procedure setup-potentials (D(q)).We now apply Dijkstra's algorithm taking S = N − D(q) as the initial set of permanently labeled nodes; for i ∈ D(q), we use the label nsd(i) instead of d π p (i).At the termination of the iterative loop, nsd(q) is the nonsingleton shortest distance from p with respect to costs c π i j .We call this part of the reoptimization as update (D(q)), whose description is given under procedure update (D(q)).
The procedure setup-potentials initializes the distance labels nsd(i) to the shortest distance to node i passing only through nodes in s = N − D(q) in the graph G(x) − (p, q), for each node i ∈ D(q).Thus we can apply Dijkstra's algorithm taking S = N − D(q) as the initial set of permanently labeled nodes.Hence, at the termination of reoptimization process, nsd(q) is the shortest distance in G(x) − (p, q), that is, the nonsingleton shortest distance from node p to node q.
The validity of the procedure update D(q) follows from the correctness of Dijkstra's algorithm.We now analyze the complexity of the reoptimization process.We refer to the reoptimization process done after deleting the arc(p, q) as reoptimization (p, q).It has two steps: (i) setting initial potentials for nodes in D(q), (ii) applying Dijkstra's algorithm on the graph G(x) − (p, q) taking S = N − D(q) as the initial set of permanently labelled nodes.
For step (i), marking nodes in D(q) takes |D(q)| time; scanning the backward star of each node in D(q) takes O( i∈D(q) |B(i)|) time.In step (ii), scanning forward stars of nodes in D(q) takes O( i∈D(q) |F(i)|) time.Selecting the node with the minimum Procedure update (D(q)); begin S = N − D(q), S = D(q); while |S| < |N | do begin let i ∈ S be a node for which nsd(i) = min{nsd( j) : j ∈ S}; S = S ∪ i; S = S − i; for each (i, j) ∈ A(i) and j ∈ S do if nsd( j) > nsd(i) + c π i j , then nsd( j) := nsd(i) + c i j and nspred( j) = i; end; end.Recall that, for nodes not in SUCC(p), the unique tree path in T p is not only the shortest but also the nonsingleton shortest path.The steps of the algorithm are selfexplanatory, except for reoptimization (p, q) (in step (iic) for which we have already given the justification).Step (i) (finding an optimal potential) requires O(nm) time.Step (iii) requires O(n 2 ) time.We now analyze the complexity of step (ii) for node, say, p; multiplying this complexity by n gives the complexity of step (ii).Using Dijkstra's algorithm, finding a shortest path tree T p , step (iia) requires O(n 2 ) time (see, e.g., Ahuja et al. [1]).Building tree indices for T p , step (iib) requires O(n) time.In step (iic), we apply procedure reoptimization (p, q) for each node q ∈ SUCC(p).By Lemma 4.1, procedure reoptimization (p, q) requires O( i∈D(q) (|B(i)| + |F(i)| + |D(q)| 2 )) time.Note that U q∈SUCC(p) D(q) = N − p.Thus summing the expression i∈D(q) (|B(i)| + |F(i)|) over all q in SUCC(p), we get the bound i∈N (|B Similarly, the summation of |D(q)| 2 over all q in SUCC(p) gives O(n 2 ) bound.(Here we use the property that if a 1 ,a 2 ,...,a k ≥ 0, (a 1 + a 2 + ••• + a k ) 2 > k i=l a 2 i and the fact that q∈SUCC(p) |D(q)| < n).Thus, summing complexity bounds for procedure reoptimization (p, q) given in Lemma 4.1, we get the complexity of step (iic) for a node p as O(m + n 2 ).Since the complexity of this step dominates the complexity of all the other steps, the time complexity of step (ii) for node p is O(n 2 ).Hence, step (ii) (over all nodes) requires O(n 3 ) time.Since this step dominates the bound for step (i) and step (iii), the algorithm runs in O(n 3 ) time.We summarize the discussion in the following theorem.Apart from the storage requirement for the initial data, for every node p, we need an additional n-dimensional array for storing each of the following data: distance labels d π p (i), three indices pred(i),depth(i),thread(i).Thus, over all nodes, we require O(n 2 ) additional storage.
Theorem 4.2 together with Theorem 3.5 implies that one can find tolerance sets of all arcs for a separable convex cost flow (SCCF) problem in O(n 3 ) time.

Concluding remarks
We have developed a theory for cost perturbations of arc cost functions for the separable convex cost flow problem.For each arc, these perturbations are associated with a set, which we call as the tolerance set; this set is obtained from nonsingleton shortest distances between the head and tail nodes of the corresponding arc.For the minimum cost flow problem, this tolerance set reduces to an exact tolerance interval without having to contract the original network.The algorithm we have developed computes tolerance sets for all arcs in O(n 3 ) time in array implementation, which essentially computes nonsingleton shortest distances between all pairs of nodes.Using Fibonacci heaps developed by Fredman and Tarjan [3] instead of arrays, our algorithm will run in O(nm + n 2 logn) time.Details can be found in [8].The assumption that the left and right derivatives of arc cost functions can be computed in O(1) time is valid for piecewise linear convex functions, quadratic convex functions, and linear functions.

Property 3 . 1 .
(a) G contains no negative cycles.(b) If, after perturbation, G(x) contains a negative cycle, then the cycle contains either arc(k,l) or arc(l,k).If a minimum cost cycle containing an arc is nonnegative, then any cycle containing the same arc is nonnegative.Thus Property 3.1(b) implies the following.Property 3.2.After perturbation, G(x) contains no negative cycles if and only if the following statements hold.(a) Any minimum cost cycle containing arc(k,l) in G(x) has nonnegative cost.(b) Any minimum cost cycle containing arc(l,k) has nonnegative cost.

Theorem 4 . 2 .
The algorithm given in this section finds nonsingleton shortest distances G(x) between all pairs of nodes in O(n 3 ).