an adaptive large neighborhood search heuristic for the pickup and delivery problem with time windows .
Introduction to Algorithms, Second Edition