图的最短路径(dijkstra算法/floyd算法)
来源:互联网 发布:ubuntu15.10安装mysql 编辑:程序博客网 时间:2024/05/22 14:30
//笛基斯特拉 public static int Dijkstra(int[][] matrix,int m, int v0,int v1) { int MAXINT = 9999; int MAXNUM = m+1; int dist[] = new int[MAXNUM]; //距离 int prev[] = new int[MAXNUM]; //前趋节点 boolean S[] = new boolean[MAXNUM]; // 判断是否已存入该点到S集合中 int n = m; //初始化 for (int i = 0; i <= n; ++i) { dist[i] = matrix[v0][i]; S[i] = false; // 初始都未用过该点 if (dist[i] == MAXINT) prev[i] = -1; else prev[i] = v0; } //从第v0点开始 dist[v0] = 0; S[v0] = true; for (int i = 1; i <= n; i++) { int mindist = MAXINT; int u = v0; // 找出当前未使用的点j的dist[j]最小值 for (int j = 0; j <= n; ++j) { if ((!S[j]) && dist[j] < mindist) { u = j; // u保存当前邻接点中距离最小的点的号码 mindist = dist[j]; } S[u] = true; } //更新各节点的距离 for (int j = 0; j <= n; j++) { if ((!S[j]) && matrix[u][j] < MAXINT) { if (dist[u] + matrix[u][j] < dist[j]) { //在通过新加入的u点路径找到离v0点更短的路径 dist[j] = dist[u] + matrix[u][j]; //更新dist prev[j] = u; //记录前驱顶点 } } } } for (int j = 0; j <= n; j++) { System.out.print(dist[j]+","); System.out.print(prev[j]+","); } System.out.println(); return dist[v1]; } //动态规划,floyd算法 public static int dynam(int[][] matrix,int m, int v0,int v1) { int path[][] = new int[m+1][m+1]; int A[][] = new int[m+1][m+1]; int i,j,k; for(i =0;i<=m;i++){ for(j = 0;j<=m;j++){ A[i][j] = matrix[i][j]; path[i][j] = i; } } for(k=0;k<=m;k++){ for(i=0;i<=m;i++){ for(j=0;j<=m;j++){ if(A[i][j]>A[i][k]+A[k][j]){ A[i][j] = A[i][k]+A[k][j]; path[i][j] = k; } } } } return A[v0][v1]; }
0 0
- 图的最短路径(dijkstra算法/floyd算法)
- 图的最短路径算法(Dijkstra,Floyd)的实现
- C++编程练习(11)----“图的最短路径问题“(Dijkstra算法、Floyd算法)
- 最短路径下的Dijkstra算法和Floyd算法
- 【图】最短路径Dijkstra算法和Floyd算法
- Floyd算法与Dijkstra算法(最短路径)
- Dijkstra/Floyd-Warshall 最短路径算法
- 最短路径之Dijkstra+Floyd算法
- 最短路径之Dijkstra+Floyd算法
- 最短路径---Dijkstra/Floyd算法
- 最短路径的Floyd与Dijkstra算法
- 最短路径:Dijkstra,Bellman,SPFA,Floyd算法的实现
- 最短路径算法(Dijkstra和Floyd)
- 最短路径算法介绍(转载)floyd+dijkstra
- 最短路径算法(Dijkstra、Floyd)总结
- 图之最短路径算法-Dijkstra(迪杰斯特拉)算法和Floyd(弗洛伊德)算法
- 最短路径算法—Dijkstra算法与Floyd算法
- 最短路径算法 Dijkstra算法 Floyd算法 简述
- 计算机图形学专业术语
- Leetcode题解 219. Contains Duplicate II
- Android之自定义view-加载效果
- http抓包(PC\移动)
- 今天总结
- 图的最短路径(dijkstra算法/floyd算法)
- 图解用Scientific Toolworks Understand分析Microsoft DirectX SDK (June 2010)自带D3D示例
- 24点游戏及其算法
- 三次握手和四次挥手
- 简单的猜拳游戏 却有不简单的算法
- Codeforces gym 101061 G【递推公式+逆元】
- Service 通过 BroadcastReceiver与Activity 进行通信
- Mysql中的commit()语句
- java中的回调机制