关于Dijastra算法,零零散散地研究了差不多两天了,基本上弄懂了它的思路和写程序的思路。算法思路不是很难(没理解时还是觉得有点晦涩),代码的实现过程,需要反复推敲和琢磨。目前先写个初级版本(现在暂时只理解到这个程度)
算法的思想和方法,各路牛人已经写过很多,小菜鸟就不赘述了,对我自己而言,我觉得下面的思路有助于我的理解,写上来:
首先上一个无向图,以及对应的Dijastra算法过程(来源http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html我在理解时,也参考了这篇文章)
大致思路,首先选取源结点A,将除源节点以外的其他结点分到U集合中,然后从A开始,遍历与它直接相邻的结点,选取路径AC最短,故C结点做为下一次的起始点。上面的表,对于这个过程描述得很清楚。看完这个,算法的思想大致就理解了。但是对于代码,还是有一定距离的。下面是我手写的,对于这个算法,代码大致的思路