I. Introduction
Ridesharing allows multiple passengers with the similar itineraries and time schedules to share a vehicle, which can significantly alleviate urban traffic congestion, reduce energy consumption, and bring win-win benefits to both passengers and drivers [21]. Due to the wide availability of taxis in a city, taxi ridesharing becomes a promising transportation mode [21], [22], [41], [42]. Different from private vehicles based ridesharing, also known as carpooling [12], [29], where ride requests are static and ridesharing routes could be planned in advance, taxi ridesharing is more complex, because both ride requests and taxis are highly dynamic [21], [22]. On one hand, passengers usually submit their requests immediately once they need a ride with no prior planning. Even worse, some passengers will not explicitly report their requests but hail a taxi at roadside. On the other hand, a taxi randomly delivers passengers in the city with no fixed route. Such dynamics cause the real-time taxi ridesharing especially challenging, where ride requests need to be timely assigned to taxis and meanwhile taxi schedule and route should be wisely updated to guarantee the quality of services [14], [41].