曾经下围棋乐此不疲,虽说棋力总也不涨,最近听朋友的建议学学算法,找来一本初级的《DSAA》,按照书上的讲解或伪代码写了一些case,意外地觉得和下围棋的乐趣有些类似。
这里用 Dijkstra 算法求有向赋权图中任一节点到其他所有节点的最小路径,
该实现的大致思路:
1)将图装入一个邻接表,设所有顶点为未知,起点距离为0,其他顶点距离(起点)为无穷大
2)选择距离最小的未知顶点,进行处理:
设该顶点为已知
依次计算起点经由该顶点到其各邻接点的距离,如小于邻接点原记录的距离,则调整距离并记下路径
3)反复执行第二步,直到所有顶点已知
4)根据记录递归输出最小路径
伪代码见原书,我的case运行结果如下: