A* and breadth-first search both do. Depth-first search and best-first search don't find a path.
Number of nodes selected to get an answer:
Yes, backward search is more efficient, and there are fewer choices at each stage. For example, A* search has the following number of nodes selected for the backward search.
The problem with this graph is that the forward search is so much worse than the backward search. A very limited forward search expands more nodes than we need to find the backward path. So a bi-directional search wouldn't help.
One could imagine a limited A* search from mi, that quickly determines that the path length is at least 24.9 (when hi is selected). Therefore the distance from mi to bg must be at least 24.9-6.4=18.5. We could use this updated heuristic information to not expand bg, but this doesn't really save us, particularly with multiple path pruning.
You can get full marks for this part by writing anything sensible.
dist(cp) = 0 dist(fv) = 8.5 dist(tw) = 21.7 dist(gb) = 31.3 dist(mv) = 34.8 dist(bg) = 36.0 dist(mi) = 53.1 dist(hi) = 62.6 dist(fg) = 63.8 dist(uv) = 71.4 dist(rs) = 92.7 dist(ab) = 101.5 dist(re) = 113.6