摘要:
学过数据结构的人都应该知道Dijkstra算法,这是最为经典的带权图寻路算法。其主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。而之后要介绍的A*算法也是在此基础上的一个启发式的改良,能够有效的减少计算遍历节点的个数。各种数据结构书和网上都有对Dijkstra算法的讲解与代码实现,不过少有详细对比二者程序结构区别的文章,而且部分文章的实现虽然简练但不宜理解,因此本文采用从一个较为形象的思路去理解算法,实现代码不求简练和高效,但求通俗易懂,并且利用了面向对象的思路去实现这一算法和A*算法。文章写的比较长,希望能覆盖到所有在实现该算法过程中可能产生疑惑的点,但愿对想了解或者回顾这个算法的人有所帮助。img src="http://images.cnblogs.com/cnblogs_com/chnhideyoshi/561079/o_QQ%e6%88%aa%e5%9b%be20140316214407.jpg" class="desc_img" style="width:120px;height 阅读全文