1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | public class Dijkstra { private static int N = 1000 ; private static int [][] Graph = { { 0 , 1 , 5 , N, N, N, N, N, N }, { 1 , 0 , 3 , 7 , 5 , N, N, N, N }, { 5 , 3 , 0 , N, 1 , 7 , N, N, N }, { N, 7 , N, 0 , 2 , N, 3 , N, N }, { N, 5 , 1 , 2 , 0 , 3 , 6 , 9 , N }, { N, N, 7 , N, 3 , 0 , N, 5 , N }, { N, N, N, 3 , 6 , N, 0 , 2 , 7 }, { N, N, N, N, 9 , 5 , 2 , 0 , 4 }, { N, N, N, N, N, N, 7 , 4 , 0 } }; public static void main(String[] args) { dijkstra( 0 , Graph); } /** * Dijkstra最短路径。 * 即图中"节点vs"到其它各个节点的最短路径。 * @param vs 起始节点 * @param Graph 图 */ public static void dijkstra( int vs, int [][] Graph) { int NUM = Graph[ 0 ].length; // 前驱节点数组 int [] prenode = new int [NUM]; // 最短距离数组 int [] mindist = new int [NUM]; // 该节点是否已经找到最短路径 boolean [] find = new boolean [NUM]; int vnear = 0 ; for ( int i = 0 ; i < mindist.length; i++) { prenode[i] = i; mindist[i] = Graph[vs][i]; find[i] = false ; } find[vs] = true ; for ( int v = 1 ; v < Graph.length; v++) { // 每次循环求得距离vs最近的节点vnear和最短距离min int min = N; for ( int j = 0 ; j < Graph.length; j++) { if (!find[j] && mindist[j] < min) { min = mindist[j]; vnear = j; } } find[vnear] = true ; // 根据vnear修正vs到其他所有节点的前驱节点及距离 for ( int k = 0 ; k < Graph.length; k++) { if (!find[k] && (min + Graph[vnear][k]) < mindist[k]) { prenode[k] = vnear; mindist[k] = min + Graph[vnear][k]; } } } for ( int i = 0 ; i < NUM; i++) { System.out.println( "v" + vs + "...v" + prenode[i] + "->v" + i + ", s=" + mindist[i]); } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库