随笔分类 -  最短路径算法

Floyd算法
摘要:算法简介:Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法。算法过程:1.从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。2.对于每一对顶点 i 和 j,看看是否存在一个顶点 k 使得从 i 到 k 再到 j 比已知的路径更短。如果是更新它。代码说明:dist[i][j] : 记录从顶点i到顶点j的最短路径长度,初始化为INFpath[i][j] : 记录从顶点i到顶点j的最短路径所经过的顶点k,初始化为0时间复杂度:O(n^3);空间复杂度:O(n^2);代码:package Algorithm;import 阅读全文

posted @ 2013-12-20 16:46 SherryIsMe 阅读(283) 评论(0) 推荐(0)

Dijkstra最短路径算法
摘要:引入:Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。代码:package Dijkstra;public class Node { private char id; private boolean isInTree; public Node(char id) { this.setId(id); setInTree(false); } ... 阅读全文

posted @ 2013-12-18 13:22 SherryIsMe 阅读(360) 评论(0) 推荐(0)

导航