Finding routes for the car is pretty easy: you keep a weighted schedule of all roads, and you could use the Jikstra Algorithm. The bus route is less obvious.
This may be less obvious, but the reality is that it's just another dimension of the car’s problem with the addition of endless costing.
For example, you mark tires whose time has passed as having infinite value - then they are not included in the calculation.
You can then decide how to evaluate each aspect.
Transit time can be weighted by 1. Waiting time can be weighted by 1. Transfers can become weighted by 0.5 (since I would rather go back there and get an additional transfer)
Then you calculate all the routes on the graph using any conventional cost algorithm with the addition of infinite cost:
Each time you move around the edge, you must track the "current" time (add transition time), and if you reach the vector, you must assign an infinite value to any tires that are up to your current time. The current time increases by time waiting on this vector until the next bus remains, then you can move around the other edge and find new costs.
In other words, there is a new “current time” restriction, which is the start time of the first bus, summed up with all transit and waiting times for buses and stops.
This complicates the algorithm only a little, but the algorithm is still the same. You can see that most of the algorithms can be applied to this, for some it may take several passes, and some of them will not work, because you cannot add time -> infinite cost calculation inline. But most should work fine.
You can simplify this by simply assuming that the buses are on schedule and there is ALWAYS a different bus, but it increases the waiting time. Make the algorithm only by summing the transit costs, then go through the tree again and add the expected expenses depending on when the next bus arrives. Sometimes this leads to less effective versions, but the overall schedule of even a large city is actually quite small, so this is not a problem. In most cases, one or two routes will be the obvious winners.
Google has this, but also includes additional edges for moving from one bus stop to another so that you can find a slightly better route if you are willing to walk in cities with large bus systems.
-Adam