floyd算法,用Java编辑实现warshall算法_warshall算法 java实现

 2023-09-25 阅读 24 评论 0

摘要:Floyd-Warshall算法是解决任意两点间的最短路径的一种算法,可以正確处理有向图或负权的最短路径问题。当然这个问题也可以对每个顶点使用单源最短路径算法来求解,但Floyd-Warshall算法的形式更为简单。在此算法中采用图的邻接矩阵方式计算和理解起来会很简单。F

Floyd-Warshall算法是解决任意两点间的最短路径的一种算法,可以正確处理有向图或负权的最短路径问题。当然这个问题也可以对每个顶点使用单源最短路径算法来求解,但Floyd-Warshall算法的形式更为简单。在此算法中采用图的邻接矩阵方式计算和理解起来会很简单。

Floyd-Warshall算法的原理是动态规划:

设D i,j,k为从i到j的只以(1..k)集合中的节点为中间節点的最短路径的长度。

1.若最短路径经过点k,则D i,j,k = D i,k,k ? 1 + D k,j,k ? 1;

2.若最短路径不经过点k,则D i,j,k = D i,j,k ? 1。

floyd算法。因此,D i,j,k = min(D i,k,k ? 1 + D k,j,k ? 1,D i,j,k ? 1)。

java的实现如下(以有向图为例,图结构采用邻接矩阵):

还是先定义顶点和边:

public class Edge {

int weight;

Vertex start;

canny算法、Vertex end;

public Edge(Vertex a, Vertex b, int w) {

start = a;

end = b;

weight = w;

}

prim算法。}

public class Vertex {

String key;

public Vertex(String k) {

key = k;

Floyd_Warshall.i++;

java数据结构和算法,Floyd_Warshall.vertexList.add(this);

}

}

然后是Floyd_Warshall算法的核心:

import java.util.ArrayList;

import java.util.HashMap;

java排序、import java.util.List;

import java.util.Map;

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/95339.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息