I can’t say exactly how Uber’s algorithm works but I can provide some insight as we have built our own routing algorithm for our software that provides an on demand SAAS engine.
Say you have 100 appointments to do and 10 drivers. You want to know which 10 appointments go to each driver and in what priority.
You will need to build a time/distance matrix to calculate the time to get from each point to the other 99 points. You need to calculate from A to B but also from B to A as the times are not always the same.
Then the system needs to brute force calculate the best combination of appointment assignments to each driver. As the system churns out answers, your system gets more efficient. The amount of time to complete the whole route keeps getting lower.
This is a simple example. Now for Uber, you would need to add additional variables and assign various weights to each variable such as
live traffic at specific times
drop off destination
other less obvious variables
The algorithm is constantly evolving as it should. A 1% improvement in efficiency would add a ton of profit to the bottom line for Uber.
Uber’s algorithm is also doing this in real time. As riders cancel and finish rides, drivers become available. As drivers go online and offline, supply of drivers changes.