On the Dial-a-Ride problem – 3
July 31, 2010 Leave a comment
We present here a polynomial-time 2-approximation algorithm given by Charikar and Raghavachari [CR 2001] for the Capacitated Preemptive version of Dial-a-Ride on trees. For ease of visualization, we consider rooted trees, though the algorithm works as such for any tree.
The items are assumed to be located on the leaves of the tree, . Consider a demand pair . We will call the least common ancestor of and (the least-depth vertex in the unique path between and ) as the turning point for that demand pair. Given the demand pairs, all turning points can be easily computed in polynomial time. The algorithm that follows makes use of these pre-computed turning points.
The algorithm modifies the usual depth-first search, and runs two modified traversals in sequence. In the first traversal, called the upsweep, all items are shifted upwards from their sources to their respective turning points. In the second traversal, called the downsweep, the items are shifted downwards to their respective destinations.
Consider any edge .
- In the upsweep phase, the algorithm recursively explores the sub-tree rooted at at the end of which all items that must necessarily pass upwards through are shifted to the lower end point of . The total number of such items is . The items are then shifted upwards across . Clearly, edge is traversed times.
- In the downsweep phase, items that need to pass downwards across are shifted to the upper end point of before the subtree rooted at is recursively explored. Again, it is clear that is traversed times in the downsweep.
- Preemption is used in carrying items across edge in the above description. The vehicle travels back and forth across carrying items to the other end point.
- Clearly, the algorithm runs in polynomial time.
- This is a 2-approximation algorithm. This is obtained directly from the Steiner tree, and the flow lower bounds.
- [CR 2001] M. Charikar, B. Raghavachari: The Finite Capacity Dial-a-Ride Problem, 2001.