日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java迪杰斯特拉算法_迪杰斯特拉算法完整代码(Java)

發布時間:2023/12/10 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java迪杰斯特拉算法_迪杰斯特拉算法完整代码(Java) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

package com.rao.graph;

import java.util.*;

/**

* @author Srao

* @className Dijkstra

* @date 2019/12/10 22:15

* @package com.rao.graph

* @Description 迪杰斯特拉算法

*/

public class Dijkstra {

/**

* 圖的頂點

*/

private static class Vertex{

String data;

Vertex(String data){

this.data = data;

}

}

/**

* 圖的邊

*/

private static class Edge{

//從adj[i]到index

int index;

//到index的距離

int weight;

public Edge(int index, int weight) {

this.index = index;

this.weight = weight;

}

}

/**

* 圖(鄰接矩陣)

*/

private static class Graph{

private Vertex[] vertices;

private LinkedList[] adj;

Graph(int size){

vertices = new Vertex[size];

adj = new LinkedList[size];

for (int i = 0; i < adj.length; i++) {

adj[i] = new LinkedList<>();

}

}

}

/**

* 初始化圖

* @param graph

*/

private static void initGraph(Graph graph){

graph.vertices[0] = new Vertex("A");

graph.vertices[1] = new Vertex("B");

graph.vertices[2] = new Vertex("C");

graph.vertices[3] = new Vertex("D");

graph.vertices[4] = new Vertex("E");

graph.vertices[5] = new Vertex("F");

graph.vertices[6] = new Vertex("G");

graph.adj[0].add(new Edge(1, 5));

graph.adj[0].add(new Edge(2, 2));

graph.adj[1].add(new Edge(0, 5));

graph.adj[1].add(new Edge(3, 1));

graph.adj[1].add(new Edge(4, 6));

graph.adj[2].add(new Edge(0, 2));

graph.adj[2].add(new Edge(3, 6));

graph.adj[2].add(new Edge(5, 8));

graph.adj[3].add(new Edge(1, 1));

graph.adj[3].add(new Edge(2, 6));

graph.adj[3].add(new Edge(4, 1));

graph.adj[3].add(new Edge(5, 2));

graph.adj[4].add(new Edge(1, 6));

graph.adj[4].add(new Edge(3, 1));

graph.adj[4].add(new Edge(6, 7));

graph.adj[5].add(new Edge(2, 8));

graph.adj[5].add(new Edge(3, 2));

graph.adj[5].add(new Edge(6, 3));

graph.adj[6].add(new Edge(4, 7));

graph.adj[6].add(new Edge(5, 3));

}

/**

* 迪杰斯特拉算法

* @param graph:圖

* @param startIndex:圖的起點

* @return

*/

public static Map dijkstra(Graph graph, int startIndex){

//創建距離表,存放起點到每一個點的距離,默認值為無窮大

Map distanceMap = new HashMap<>();

//記錄已經遍歷過的頂點

Set accessedSet = new HashSet<>();

//圖的頂點數量

int size = graph.vertices.length;

//初始化距離表

for (int i = 1; i < size; i++) {

distanceMap.put(i, Integer.MAX_VALUE);

}

//遍歷起點,刷新距離表

accessedSet.add(0);

List edgesFromStart = graph.adj[startIndex];

for (Edge edge : edgesFromStart) {

distanceMap.put(edge.index, edge.weight);

}

//循環遍歷所有的點,并且刷新距離表

for (int i = 1; i < size; i++) {

//尋找到頂點最短的距離的點

int minDistanceFromStart = Integer.MAX_VALUE;

int minDistanceIndex = -1;

for (int j = 1; j < size; j++) {

if (!accessedSet.contains(j) && distanceMap.get(j) < minDistanceFromStart){

minDistanceFromStart = distanceMap.get(j);

minDistanceIndex = j;

}

}

if (minDistanceIndex == -1){

break;

}

//遍歷這個最小距離的頂點

accessedSet.add(minDistanceIndex);

for (Edge edge : graph.adj[minDistanceIndex]) {

if (accessedSet.contains(edge.index)){

continue;

}

int weight = edge.weight;

int preDistance = distanceMap.get(edge.index);

if (weight != Integer.MAX_VALUE && (minDistanceFromStart + weight) < preDistance){

distanceMap.put(edge.index, minDistanceFromStart + weight);

}

}

}

return distanceMap;

}

public static void main(String[] args) {

Graph graph = new Graph(7);

initGraph(graph);

Map distanceMap = dijkstra(graph, 0);

int distance = distanceMap.get(6);

System.out.println(distance);

}

}

總結

以上是生活随笔為你收集整理的java迪杰斯特拉算法_迪杰斯特拉算法完整代码(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 88av.com| 男人晚上看的视频 | 色呦呦一区二区 | av永久免费在线观看 | 五月婷婷丁香激情 | av免费观看在线 | 国产毛片久久久久久久 | 天天做天天躁天天躁 | 亚洲熟妇av一区二区三区漫画 | 国产深喉视频一区二区 | 日韩欧美高清视频 | 亚洲九九视频 | 一区二区在线视频 | 亚洲自拍偷拍一区二区三区 | 国产麻豆精品一区 | 国模私拍一区二区 | 毛片免费播放 | 少妇高潮av久久久久久 | 亚洲国产精品成人va在线观看 | 精品视频在线一区 | 精品国产精品网麻豆系列 | 日本va在线| 骚虎tv| 成人av第一页 | 19禁大尺度做爰无遮挡电影 | 一个人看的www片免费高清中文 | 在线一区| www.69视频 | 国产 日韩 一区 | 欧美寡妇性猛交ⅹxxx | 欧美一区二区三区公司 | 牛牛精品一区二区 | 亚洲综合免费 | 学生孕妇videosex性欧美 | 天天干网站 | 日本在线第一页 | 欧美第一页浮力影院 | 亚洲av无码专区在线播放中文 | 国产精品视频久久久 | 国产一区免费视频 | 一级片在线播放 | av一区二区三区在线 | 九一在线观看免费高清视频 | 亚洲天堂三级 | 无码人妻久久一区二区三区 | 香蕉视频1024| 麻豆久久久久久 | 超碰69| 亚洲AV成人无码久久精品同性 | 香蕉视频毛片 | 影音先锋丝袜美腿 | 中文字幕人妻丝袜乱一区三区 | 内射合集对白在线 | 色香蕉网 | 国产精品videossex久久发布 | 中文字幕免费av | 天堂网91 | 国产aⅴ片| 日本少妇激三级做爰在线 | 欧美一区二区福利视频 | 日本美女动态图 | 中国一区二区三区 | 乳孔很大能进去的av番号 | 中文字幕最新在线 | 国产乱仑视频 | 日日摸日日 | 激情亚洲网| 久久99热精品 | 色老头综合网 | 色天使在线视频 | mm1313亚洲国产精品无码试看 | 天堂网一区二区三区 | 国产在线观 | 成人日批视频 | 中国a一片一级一片 | 成人免费超碰 | 久久精品国产99久久 | 成人做爰66片免费看网站 | 欧美激情亚洲激情 | 国产欧美精品一区二区在线播放 | 日本成人在线免费观看 | 奇米四色网 | 丰满少妇一区二区三区视频 | 91超碰在线观看 | 国产亚洲性欧美日韩在线观看软件 | 97超碰在线免费 | 中文字幕精品一区二 | 黑人100部av解禁片 | 我的大叔| www.久色| 草草视频网站 | 91网页在线观看 | 亚洲欧美激情小说另类 | 日韩精品成人免费观看视频 | 黄色一级播放 | 欧美性生活一区 | 草草地址线路①屁屁影院成人 | 一级伦理农村妇女愉情 | 欧美色插 |