Algorithms for flows over time with scheduling costs

Flows over time have received substantial attention from both an optimization and (more recently) a game-theoretic perspective. In this model, each arc has an associated delay for traversing the arc, and a bound on the rate of flow entering the arc; flows are time-varying. We consider a setting which is very standard within the transportation economic literature, but has received little attention from an algorithmic perspective. The flow consists of users who are able to choose their route but also their departure time, and who desire to arrive at their destination at a particular time, incurring a 'scheduling cost' if they arrive earlier or later. The total cost of a user is then a combination of the time they spend commuting, and the scheduling cost they incur. We present a combinatorial algorithm for the natural optimization problem, that of minimizing the average total cost of all users (i.e., maximizing the social welfare). Based on this, we also show how to set tolls so that this optimal flow is induced as an equilibrium of the underlying game.


Introduction
The study of flows over time is a classical one in combinatorial optimization; it began already with the work of Ford and Fulkerson [10] in the 50s. It is a natural extension of static flows, which associates a single numerical value, representing a total quantity or rate of flow on the arc. In a flow over time, a second value associated with each arc represents the time it takes for flow to traverse it; the flow is then described by a function on each arc, representing the rate of flow entering the arc as a function of time.
Classical optimization problems involving static flows have natural analogs in the flow over time setting (see the surveys [17,24]). For example (restricting the discussion to single commodity flows), the maximum flow over time problem asks to send as much flow as possible, departing from the source starting from time 0 and arriving to the sink by a given time horizon T ; this can be solved in polynomial time [10,11,9]. A quickest flow asks, conversely, for the shortest time horizon necessary to send a given amount of flow. Of particular importance for us is the notion of an earliest arrival flow: this has the very strong property that simultaneously for all T ′ ≤ T , the amount of flow arriving by time T ′ is as large as possible [12]. Such a flow can also be characterized as minimizing the average arrival time [15]. Earliest arrival flows can be "complicated", in that they can require exponential space (in the input size) to describe [29], and determining the average arrival time of an earliest arrival flow is NP-hard [8]. But they can be constructed in time strongly polynomial in the sum of the input and output size [3].
Another important aspect of many settings were flow-over-time models are applicable-such as traffic-involves game theoretic considerations. In traffic settings, the flow is made up of a large number of individuals making their own routing choices, and aiming to maximize their own utility rather than the overall social welfare (e.g., average journey time). Dynamic equilibria, which is the flow over time equivalent of Wardrop equilibria for static flows, are key objects of study. Existence, uniqueness, structural and algorithmic issues, and much more have been receiving increasing recent interest from the optimization community [4,5,6,7,16,22,23].
Traffic, being such a relevant and important topic, has received attention from many different communities, each with their own perspective. Within the transportation economic literature, modelling other aspects of user choice besides route choice has been considered particularly important. A very standard setting, motivated by morning rush-hour traffic, is the following [26,2].Users are able to choose not only their route, but also their departure time. They are then concerned not only with their journey time, but also their arrival time at the destination. This is captured in a scheduling cost function which we will denote by ρ: a user arriving at time θ will experience a scheduling cost of ρ(θ). The total disutility of a user is then the sum of their scheduling cost and their journey time (scaled by some factor α > 0 representing their value for time spent commuting). A very standard choice of ρ is where β < α < γ (it is very bad to be late, but time spent in the office early is better than time spent in traffic). We will allow general scheduling cost functions, though for most of the paper we will focus on strongly unimodal cost functions; these are the most relevant, and this avoids some distracting technical details. Two very natural questions can be posed at this point. The first is a purely optimization question, with no attention paid to the decentralized nature of traffic. Problem 1. How can one compute a flow over time minimizing the average total cost paid by users, i.e., maximizing the social welfare?
From now on, we will call a solution to this problem simply an optimal flow. It is well understood that users will typically not coordinate their actions to induce a flow that minimizes total disutility. There is a huge body of literature (particularly in the setting of static flows [20]) investigating this phenomenon. In the traffic setting, the relevance of an optimal flow represented by an answer to this question comes primarily via the possibility of pricing. By putting appropriate tolls on roads, we can influence the behaviour of users and the resulting dynamic equilibrium. Thus: Problem 2. How can one set tolls (possibly time-varying) on the arcs of a given instance so that an optimal flow is obtained in dynamic equilibrium?
One subtlety is that since dynamic equilibria need not be precisely unique, there is a distinction between tolls that induce an optimal flow as an equilibrium, compared to tolls for which all dynamic equilibria are optimal. (This is called weak and strong enforcement by Harks [14] in a general pricing setting.) We will return to this subtlety shortly.
Questions like these are of great interest to transportation economists. However, most work in that community has focused on obtaining a fine-grained understanding of very restricted topologies (such as a single link, or multiple parallel links); see [25] for a survey.
Both of these question (for general network topologies) were considered by Yang and Meng [28] in a discrete time setting, by exploiting the notion of time-expanded graphs. This is a standard tool in the area of flows over time; discrete versions all of the optimization questions concerning flows over time mentioned earlier can (in a sense) be dealt with in this way. A node v in the graph is expanded to a collection (v, i) of nodes, for i ∈ Z in a suitable interval, and an arc vw of delay τ vw becomes a collection of arcs ((v, i), (w, i + τ vw )) (this assumes a scaling so that τ vw is a length in multiples of the chosen discrete timesteps). Scheduling costs are encoded by appropriately setting arc costs from (t, i) to a supersink t ′ for each i, and the problem can be solved by a minimum cost static flow computation. A primary disadvantage of this approach (and in the use of timeexpanded graphs more generally) is that the running time of the algorithm depends polynomially on the number of time steps, which can be very large. Further, it cannot be used to exactly solve the continuous time version (our interest in this paper); by discretizing time, it can be used to approximate it, but the size of the time-expanded graph is inversely proportional to the step size of the discretization. In the same work [28], the authors also observe that in the discrete setting, an answer to the second question can be obtained from the time-expanded graph as well. Taking the LP describing the minimum cost flow problem on the time-expanded graph, the optimal dual solution to this LP provides the necessary tolls to enforce (weakly) an optimal flow. (This is no big surprise-dual variables can frequently be interpreted as prices.) An assumption on ρ. Suppose we consider ρ in the standard form given in (1), but with β > α. This means that commuting is considered to be less unpleasant than arriving early. A user arriving earlier than time 0 at the sink would be better off "waiting" at the sink before leaving, in order to pay a scheduling cost of 0. Whether waiting in this way is allowed or not depends on the precise way one specifies the model, but it is most natural (and convenient) to allow this. If we do so, then it is clear that a scheduling cost function ρ can be replaced bŷ without changing the optimal flow (except there is no longer any incentive to wait at the sink, and we need not even allow it). Then θ →ρ(θ) + αθ is nondecreasing. From now on, we always assume that ρ satisfies this; we will call it the growth bound on ρ.
Our results. We give a combinatorial algorithm to compute an optimal flow. Similarly to the case of earliest arrival flows, this flow can be necessarily complicated, and involves a description length that is exponential in the input size.
The algorithm is also similar to that for computing an earliest arrival flow. It is based on the (possibly exponentially sized) path decomposition of a minimum cost flow into successive shortest paths. In particular, suppose we choose the scheduling cost function to be Then the disutility a user experiences is precisely described by how much before time 0 they depart; all users must arrive by time 0 to ensure finite cost. This is precisely the reversal (both in time and direction of all arcs) of an earliest arrival flow, from the sink to the source. Our algorithm will be the same as the earliest arrival flow in this case. This also shows that it may be the case that all optimal solutions to Problem 1 require exponential size (as a function of the input encoding length), since this is the case for earliest arrival flows.
Despite the close relation to earliest arrival flows, the proof of optimality of our algorithm is rather different. A key reason for this is the following. As mentioned, earliest arrival flows have the strong property that the amount of flow arriving before a given deadline T ′ is the maximum possible, simultaneously for all choices of T ′ (up to some maximum depending on the total amount of flow being sent). This implies that an earliest arrival flow certainly minimizes the average arrival time amongst all possible flows [15], but is a substantially stronger property. A natural analog of this stronger property in our setting would be to ask for a flow for which, simultaneously for any given cost horizon C ′ ≤ C, the amount of flow consisting of agents experiencing disutility at most C ′ is as large as possible. Unfortunately, in general no such flow exists. The example is too involved to discuss here, but it relates to some questions on the behaviour of dynamic equilibria in this model that are investigated in a parallel manuscript.
Since the proofs for earliest arrival flows [12,19,27,3] show this stronger property which does not generalize, we take a different approach. Our proof is based on duality (of an infinite dimensional LP, though we do not require any technical results on such LPs). The main technical challenge in our work comes from determining the correct ansatz for the dual solution, as well as exploiting properties of the residual networks obtained from the successive shortest paths algorithm in precisely the right way to demonstrate certain complementary slackness conditions. As was the case with the time-expanded graph approach, the optimal dual solution immediately provides us with the tolls. However, we obtain an explicit formula for the optimal tolls, in terms of the successive shortest paths of the graph (see Section 3). This may be useful in obtaining a better structural understanding of optimal tolls, beyond just their computation. We also remark that a corollary of our result is that there is always an optimal solution without waiting (except at the source).
Consider for a moment the model where users cannot choose their departure time, but instead are released from the source at a fixed rate u 0 , and simply wish to reach the destination as early as possible. This is the game-theoretic model that has received the most attention from the flow-overtime perspective [4,6,7,16,22]. Our construction of optimal tolls is applicable to this model as well. Reverse all arcs, as well as the role of the source and sink (thus making s the new sink), and also introduce a replacement sink s ′ and arc ss ′ of capacity u 0 in the original instance . Then by choosing ρ as described in (2), the optimal flow is an earliest arrival flow, and the tolls we construct will induce it in the original instance (after appropriate time reversal).
We now return to the subtlety alluded to earlier: the distinction between strongly enforcing an optimal flow, and only weakly enforcing it. Consider the simple instance in Figure 1. Suppose that the outflow of arc a is larger than 1 for some period in the optimum flow, due to the choice of scheduling cost function. In this period, one unit of flow would take the bottom arc g, and the rest will be routed on f . Since the total cost (including tolls) of all users is the same in a tolled dynamic equilibrium, a toll of cost equivalent to a unit delay on arc g is needed in this period to induce the optimal flow. But then it will also be an equilibrium to send all flow in this period along f .
To strongly enforce an optimal flow, we need more flexible tolls. One way that we can do it is by "tolling lanes". If we are allowed to dynamically divide up the capacity of an arc into "lanes" (say a "fast lane" and a "slow lane"), and then separately set time-varying tolls on each lane, then we can strongly enforce any optimal flow. We discuss this further in Section 5. We are not aware of settings where this phenomenon has been previously observed, and it would be interesting to explore this further in a more applied context.
Outline of the paper. We introduce some basic notation and notions, as well as a formally define our model, in Section 2. In Section 3, we describe our algorithm, and show that it returns a feasible flow over time; we restrict ourselves to the most relevant case of a strictly unimodal scheduling cost function. In Section 4 we show optimality of this algorithm, and in Section 5 we derive optimal tolls from this analysis. Finally, in Section 6 we remark on the technical changes needed to the algorithm to handle general scheduling cost functions.

Model and preliminaries
The notation (z) + is used to denote the nonnegative part of z, i.e., (z) + = max{z, 0}. Given v : X → R and A ⊆ X, we will use the shorthand notation v(A) := a∈A v(a). We will not distinguish between a map v : X → R and a vector in R X , and so the notation v a and v(a) is interchangeable. All graphs considered will be directed. We assume all graphs to be simple, and that there are no digons (i.e., there are no pairs v, w ∈ V so that vw and wv are both arcs). This is for notational convenience only-this restriction can easily be lifted.
We begin with some basic notions and results about static flows and flows over time. For further details regarding static flows, we refer the reader to the book by Ahuja, Magnanti and Orlin [1]. For more about flows over time, we suggest the surveys by Skutella [24] and Köhler et al. [17].
Static flows. Let G = (V, E) be a directed graph, with source node s ∈ V and sink node t ∈ V . Each arc e ∈ E has a capacity ν e and a delay τ e (both nonnegative). We use δ + (v) to denote the set of arcs in E with tail v, and δ − (v) the set of arcs with head v.
Consider some f : E → R + (which we will equivalently view as a vector in R E + ). For v ∈ V , we define the net flow at v (denoted ∇f v ) to be the quantity Given an s-t-flow f , its residual network Call arcs in E f ∩ E forward arcs and arcs in E f \ E backwards arcs. The residual capacity ν f e of an arc e ∈ E f is then ν f vw = ν vw − f vw for vw a forward arc, and ν f vw = f wv for vw a backwards arc. We also define τ vw = −τ wv for all backwards arcs vw.
Given a subset F ⊆ E, we use χ(P ) to denote the characteristic vector of F . In particular, if P is a path from v to w, then χ(P ) is a unit flow from v to w.
We make the definitions E. Given f, g ∈ R E + , we define f + g in the obvious way, and also define f − g ∈ R ← → E + , by interpreting a negative value on vw instead as a positive value on wv.
Given a choice of value Q, a minimum cost flow is an s-t-flow f * minimizing e∈E f * e τ e (amongst all s-t-flows of value Q). An s-t-flow f (of the correct value) is a minimum cost flow if and only if E f contains no negative cost cycles, i.e., cycles C ⊆ E f with τ (C) < 0.
Flows over time. Consider some f : E × R → R + . We will generally write f e (θ) rather than f (e, θ). Define the net flow into v at time θ by Note that f e (θ) represents the flow entering arc e at time θ; this flow will exit the arc at time θ + τ e (explaining the asymmetry between the terms for flow entering and flow leaving in the above).
We say that f is a flow over time of value Q if the following hold.
Note that this definition allows for flow to wait at a node; to disallow this and consider only flows over time without waiting, we would replace (iii) with the condition (iii ′ ) ∇f v (θ) = 0 for all v ∈ V \ {s, t} and θ ∈ R.
We also have a natural notion of a residual network in the flow over time setting. Define, for any flow over time f and θ ∈ R, Minimizing scheduling cost. We are concerned with the following optimization problem. Given a scheduling cost function ρ : R → R + , as well as a value α > 0, determine a flow over time f of value Q that minimizes the sum of the commute cost α e∈E R f e (θ)dθ and the scheduling cost R ∇f t (θ) · ρ(θ)dθ. As already discussed, we assume that ρ satisfies the growth bound, i.e., that θ → ρ(θ) + αθ is nondecreasing. This ensures that waiting at t is not needed, which is in fact disallowed by our definition 1 , and makes various arguments cleaner. We will also make the assumption that ρ is strongly unimodal 2 . We then assume w.l.o.g. that the minimizer of ρ is at 0, and that ρ(0) = 0. For further technical convenience, by adjusting ρ on a set of measure zero we take ρ to be lower semi-continuous.
The unimodal assumption is not necessary; the algorithm and analysis can be extended to essentially general ρ, under some very weak technical conditions. We postpone this discussion to the end of the paper. 1 Were this really needed, one could simply add a dummy arc tt ′ to a new sink t ′ . 2 I.e., (strictly) decreasing until some moment, and then (strictly) increasing.
We also assume that we are able to query ρ −1 (y) for a given rational y > 0, obtaining a pair of solutions (one positive, one negative) of moderate bit complexity. Alternatively, we can consider the case where ρ is represented as a piecewise linear function.

A combinatorial algorithm
In this section we present an algorithm that computes an optimal flow over time, assuming that ρ is strongly unimodal. The proof of optimality is discussed in Section 4.
We begin by recalling the successive shortest paths (SSP) algorithm for computing a minimum cost static flow. It is not a polynomial time algorithm, so it is deficient as an algorithm for static flows, but it provides a structure that is relevant for flows over time. This is of course well known from its role in constructing earliest arrival flows, which we will briefly detail.
The SSP algorithm construct a sequence of paths (P 1 , P 2 , . . .) and associated amounts (x 1 , x 2 , . . .) inductively as follows. Suppose P 1 , . . . , P j and x 1 , . . . , x j have been defined. Let f (j) = j i=1 x i χ(P i ), and let G j denote the residual graph of f (j) . Also let d j (v, w) denote the length (w.r.t. arc delays τ in G j ) of a shortest path from v to w in G j (this may be infinite). By construction, G j will contain no negative cost cycles, so that d j is computable. If d j (s, t) = ∞, we are done; set m := j. Otherwise, define P j+1 to be any shortest s-t-path in G j , and x j+1 the minimum capacity in G j of an arc in P j+1 . It can be shown that r j=1x j χ(P j ), with r j=1x j = Q andx j = x j for j < r, 0 ≤x r ≤ x r , is a minimum cost flow of value Q, as long as Q is not larger than the value of a maximum flow.
To construct an earliest arrival flow of value Q and time horizon T , we (informally) send flow at rate x j along path P j for the time interval [0, T − τ (P j )], for each j ∈ [m] (if τ (P j ) > T , we send no flow along the path). By this, we mean that for each e = vw ∈ P j , we increase by x j the value of f e (θ) for θ ∈ [d j−1 (s, v), T − d j−1 (v, t)] (or if e is a backwards arc, we instead decrease f wv (θ)). An argument is needed to show that this defines a valid flow, since we must not violate the capacity constraints, and moreover, P j may contain reverse arcs not present in G.
We are now ready to describe our algorithm for minimizing the disutility, which is a natural variation on the earliest arrival flow algorithm. It is also constructed from the successive shortest paths, but using a cost horizon rather than a time horizon. For now, consider C to be a given value (it will be the "cost horizon"). For each j ∈ [m] with αd j−1 (s, t) ≤ C, we send flow at rate x j along path P j for the time interval [a j , b j ] chosen maximally so that 1 (s, t).) Note that a user leaving at time a j or b j and using path P j , without waiting at any moment, incurs disutility C; whereas a user leaving at some time θ ∈ (a j , b j ) and using path P j will incur a strictly smaller total cost. As we will shortly argue, this results in a feasible flow over time f . Given this, its value will be m j=1 x j (b j − a j ). It is easy to see that this value changes continuously and monotonically with C (here we use the strong unimodality). Thus a bisection search can be used to determine the correct choice of C for a given value Q. Alternatively, bisection search can be avoided by using Megiddo's parametric search technique [18]; this will ensure a strongly polynomial running time, if queries to ρ −1 are considered to be of unit cost.
This requires only oracle access to ρ −1 (and reasonable control on the bit complexity of ρ −1 (y) in terms of y). If ρ is piecewise linear with not too many breakpoints (as is the case, in particular, for the "standard" β/γ choice generally used in the transportation economics literature), a third option presents itself. One can generate the entire parametric curve of C as a function of Q, which will also be piecewise linear, from which the correct choice of C can readily be determined. This is fairly straightforward, and we omit the details.
Feasibility. In the following we show that the flow resulting flow f is a feasible flow over time. Given a vertex v ∈ V , a time θ ∈ R and j ∈ [m], let 1 (v, t)).
If v ∈ P j then c j (v, θ) is the travel cost of a user that utilizes path P j and passes through node v at time θ; there does not seem to be a simple interpretation if v / ∈ P j however. Now define with the convention that the maximum over the empty set is 0. The motivation for this definition comes from the following theorem, which completely characterizes f . (If preferred, one could even think of this theorem as providing the definition of f .) for any vw ∈ E and θ ∈ R.
Corollary 2. f is a feasible flow over time.
Proof. By the way that we constructed f , it has value Q and satisfies flow conservation. Only nonnegativity and the capacity constraint remain, which follows from the theorem.
Before proving Theorem 1, we need the following lemma.
Lemma 3. c j (v, θ) is nondecreasing with j for any θ ∈ R.

Proof. Consider any
E . Now observe that the support of g is contained in G j : P j+1 and ← − P j are certainly contained in G j ; and if e ∈ Q ∩ (E j−1 \ E j ), then e ∈ P j . Since G j contains no negative cost cycles, the cost of g is at least that of a shortest v-t-path in G j , and so d j (v, t) ≤ τ (P j+1 ) − τ (P j ) + τ (Q). Finally, we can conclude where the first inequality follows from the growth assumption, using Proof of Theorem 1. Fix some vw ∈ E and θ ∈ R. Consider now any P j (with ατ (P j ) ≤ C, so that it is used for a nontrivial interval), with vw ∈ P j . Since P j is a shortest path in G j−1 , if we send flow along this path starting from some time ξ, it will arrive at v at time ξ + d j −1 (s, v). Considering the definition of the interval [a j , b j ], we see that P j contributes flow to vw at time θ if c j (v, θ) ≤ C.

Optimality
In this section, we show that our proposed algorithm does return an optimal flow.

Duality-based certificates of optimality
We can write the problem we are interested in as a (doubly) infinite linear program as follows: Here, z v (θ) represents the amount of flow waiting at node v at time θ (which must always be nonnegative). The travel cost is captured on a per-arc basis, including waiting time as well.
The following theorem provides a certificate of optimality of a feasible solution to (4).

Theorem 4.
Let f be a flow over time with value Q, and suppose that π : V × R → R satisfies the following, for some choice of C: (iii) π s (θ) = 0 for all θ ∈ R.
Then f is an optimal solution.
Essentially, π v (θ) are dual variables, and the assumptions of the theorem are that f and π satisfy the complementary slackness conditions. There are many extensions of LP duality theory to infinite dimensional settings, e.g., [13,21]; however the situation is subtle, since strong duality and even weak duality can fail [21]. We prefer to avoid technicalities and derive it directly.
Proof of Theorem 4. We will need the following technical lemma (obvious via integrating by parts in the case that h is also absolutely continuous).

Claim 5.
Let h : R → R be a nonincreasing function, and z : R → R + be an absolutely continuous nonnegative function with compact support. Then R h(θ)z ′ (θ)dθ ≥ 0.
Proof. Since R z ′ (θ)dθ = 0, we may assume by shifting if necessary that h is nonnegative on the support of z. Let µ be a measure so that µ([θ, ∞)) = h(θ) for almost every θ in the support of z. We certainly have that for any θ, from which we obtain the result by applying Fubini's theorem.
Define, for each vw ∈ E, Now let g, z be any feasible solution to (4) with compact support. Consider any v ∈ V \ {s, t}, and observe that by the above claim, exploiting property (i).
We have In the above, ( * ) holds by the definitions of π t and δ e ; ( * * ) follows by recombining the g e (θ) terms and recalling that π s ≡ 0 and that g has value Q; and ( * * * ) follows from (5), and the inequalities δ e (θ) ≥ 0 and g e (θ) ≤ ν e that hold for all e ∈ E and θ ∈ R.
As is often the case, the optimal dual solution also provides us the prescription for tolls to induce the optimum flow. We delay this discussion to Section 5.

The dual prescription
We now give a certificate of optimality π : V × R → R for (4) that satisfies the conditions of Theorem 4. Given a vertex v ∈ V and a time θ ∈ R let Notice that π s (θ) = 0 and π t (θ) = max{C − ρ(θ), 0} for all θ ∈ R and thus conditions (iii) and (iv) of Theorem 4 hold. For the remaining conditions, we begin with some basic facts about distance labels associated with successive shortest paths (statements of a similar flavour can be found in Ahuja et al. [1], for example).
(if there is no such path, then there is nothing to prove). If P j ∩ Q = ∅, then Q ⊆ E j , so the claim holds. Otherwise, let xy be the last (i.e., closest to s) edge of Q that is also in P j , and let Q y denote the subpath of Q from v to y. Also let P y denote the subpath of P j from y to v. Then C := Q y + P y is a directed cycle (or collection of cycles, possibly with some edges included twice).
Define Q ′ to be the path obtained by appending the subpath of Q from y to s to ← − P y . Then Q ′ ⊆ E j , and τ (Q ′ ) ≤ τ (Q), as required.
if e is an arc in Q not in G j−1 , then e is the reverse of an arc of P j , and hence not in P j + Q. So d j−1 (v, t) ≤ τ (Q ′ ). But since G j−1 has no negative cost cycles, τ (Q ′ ) ≤ τ (Q) + τ (P j ).
To show that Let w be the first (i.e., closest to v) vertex present in bothQ and P j (notice that w might be equal to v or t) and let Q be the v-w-path contained inQ. Then Since Q ⊆ E j , we have that: This concludes the proof.
Now we are ready to show that π satisfies conditions (i) and (ii) of Theorem 4.
If ℓ ≤ j, then by Lemma 6 So suppose ℓ > j. By the definition of J(v, θ + ǫ), we know that As a consequence, we have that: Inequality ( * ) follows from the growth assumption on ρ combined with the fact that θ If ℓ ≥ j, then: The second inequality follows again from the growth assumption, this time combined with the inequality d ℓ (v, t) ≥ d j (v, t).
If ℓ < j, by definition of J(v, θ + ǫ) we have that From this, we obtain
If ℓ ≤ j, then So suppose ℓ > j. By the definition of J(w, θ + τ vw ) we know that Since vw ∈ E j and d j (w, t) ≤ d ℓ−1 (w, t), we also have Thus where the second inequality follows from the growth assumption and from (9).
If ℓ ≥ j, since vw ∈ E j and d j (w, t) ≤ d ℓ (w, t), we have that As a consequence, exploiting also the growth assumption, we have If ℓ < j, by definition of J(w, θ + τ vw ) we have that Thus

Optimal tolls
Tolls δ : E × R → R + are per-arc, time-varying and nonnegative. The value δ e (ξ) represents the toll a user is charged upon entering the link at time ξ.
We have the following theorem.
Theorem 10. Let (f, π) be an optimal primal-dual solution to (4) (as constructed in Section 3 and Section 4) and define, for each vw ∈ E, Then f is a dynamic equilibrium under tolls δ.
Of course, to make sense of this theorem we must know what is meant by a dynamic equilibrium under tolls. A precise definition requires introducing the full game-theoretic fluid queueing model (also known as the Vickrey bottleneck model) [26,16]. Tolls and departure time choice can be introduced into the definition of a dynamic equilibrium discussed in these works. Rather than going this route, we will show that the tolls satisfy a strong property that very clearly ensures the equilibrium property.
We show that the following holds. A user starting from some v ∈ V at some time θ ∈ R cannot incur a total cost (including scheduling cost, and tolls and commuting cost from this point forward) less than C − π v (θ). This is even allowing the user to take any link at any time, as if no other users were present in the network. Since the flow represents a solution where all users incur a total cost of precisely C, this must certainly be an equilibrium.
The inequalities are all tight if for all vw ∈ P , θ w = θ v + τ vw and f vw (θ v ) > 0, by the previous observations as well as property (iv). So if the aggregate choices of the users are described by f , all users pay exactly C.
As already discussed, we cannot in general strongly enforce an optimal flow. The following shows that the "lane tolling" approach suffices to do this.
Theorem 11. With f, π and δ as in the previous theorem, any dynamic equilibrium g satisfying g e (θ) ≤ f e (θ) for all e ∈ E, θ ∈ R is g = f .
Essentially, being able to dynamically split and separately toll the capacity of a link allows us to easily rule out all other potential equilibria just by using tolls to artificially constrict the capacities (in addition to choosing tolls that weakly enforce the desired flow, which is still needed). Tolling in this way seems quite distant from what could be imaginable in realistic traffic scenarios. But it does raise the interesting question of whether there is a tolling scheme which can strongly enforce an optimum flow, but which is more restricted (and more plausible) than fully dynamic lane tolling. Another natural question would be to determine if an optimum flow can be strongly enforced using lane tolling only on certain specified edges. We leave these as open questions.

General scheduling costs
We now briefly discuss general scheduling costs, satisfying only the growth assumption as well as minor technical conditions. We will not give full details, but just highlight what changes need to be made in the algorithm and analysis.
First, suppose that ρ was unimodal, but not strongly unimodal. This introduces the complication that we cannot uniquely invert ρ on [0, ∞) and (−∞, 0]; and also that ρ −1 is discontinuous. If we use the prescription of the interval [a j , b j ] given in Section 3, namely the maximal interval for which ρ(ξ + d j−1 (s, t)) ≤ C − αd j−1 (s, t) for all ξ ∈ [a j , b j ], we run into the difficulty that Q is no longer a continuous function of C. Thus we may find a choice C 0 so that the resulting amount of flow is strictly less than Q, but the amount of flow corresponding to C 0 + ǫ is strictly larger than Q, for any positive ǫ.
To remedy this, we can proceed as follows after determining C 0 . Let [a 0 j , b 0 j ] be the minimal interval so that as per the previous definition (12). Then for δ ∈ (0, 1), define a δ j = (1 − δ)a 0 j + δa 1 j , and similarly for b δ j . It is not hard to see that for any choice of δ, using the intervals [a δ j , b δ j ] in the original algorithm provides a flow over time with cost horizon C 0 ; and moreover that the value of the flow depends continuously on δ. The proof of optimality is essentially unaffected. So a further round of bisection or parametric search suffices here.
Next, suppose we drop the requirement that ρ is unimodal (maintaining still the growth assumption). Instead, let us make the mild assumption that for any z ∈ R + , ρ −1 ([0, z]) is a union of finitely many compact intervals. Little changes, except that instead of obtaining a single interval [a j , b j ] for each path P j , we obtain a finite number of intervals. Theorem 1 remains true as stated.