There are many, Dijkstra is one of the slower ones but always finds the shortest route. A* is quite fast and usually gives an optimal solution, but not always the best. There is an implementation of both on vbforums. Dijkstra's one is in the vb.net codebank, and A* one is in the game programming codebank.