最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的弗洛伊德(Floyd)算法

 更新時間:2024年01月15日 11:15:40   作者:Mu_Mu是一只小白  
這篇文章主要介紹了Java中的弗洛伊德(Floyd)算法,Floyd算法又稱為插點(diǎn)法,是一種利用動態(tài)規(guī)劃的思想尋找給定的加權(quán)圖中多源點(diǎn)之間最短路徑的算法,與Dijkstra算法類似,需要的朋友可以參考下

弗洛伊德Floyd算法

Floyd算法又稱為插點(diǎn)法,是一種利用動態(tài)規(guī)劃的思想尋找給定的加權(quán)圖中多源點(diǎn)之間最短路徑的算法,與Dijkstra算法類似。

該算法名稱以創(chuàng)始人之一、1978年圖靈獎獲得者、斯坦福大學(xué)計算機(jī)科學(xué)系教授羅伯特·弗洛伊德命名。

Dijkstra算法是求一個出發(fā)節(jié)點(diǎn)到其他各節(jié)點(diǎn)的最短距離,而Floyd算法是求每個節(jié)點(diǎn)到其他個節(jié)點(diǎn)的最短距離

在這里插入圖片描述

完整java代碼:

package com.yg.algorithm;/*
@author  Mu_Mu
@date    2020/3/23  9:56
*/
public class FloydAlgorithm {
    private static final int MAX=10000;
    public static void main(String[] args) {
        char[] vertexs = {'A', 'B', 'C', 'D', 'E'};
        int[][] matrix = {{0, MAX, MAX, 5, 2}, {MAX, 0, 8, MAX, 3}
                , {MAX, 8, 0, MAX, 4}, {5, MAX, MAX, 0, 9},{2,3,4,9,0}};
        FGraph fGraph = new FGraph(vertexs, matrix);
        fGraph.floyd();
        fGraph.show();
    }
}
class FGraph {
    private char[]vertexs;//存放頂點(diǎn)
    private int [][]dis;//每個頂點(diǎn)之間的距離
    private int[][]pre;//存放前驅(qū)頂點(diǎn)
    public FGraph(char[] vertexs, int[][] dis) {
        this.vertexs = vertexs;
        this.dis = dis;
        pre=new int [vertexs.length][vertexs.length];
        //初始化前驅(qū)頂點(diǎn)
        for (int i = 0; i < vertexs.length; i++) {
            for (int j = 0; j < vertexs.length; j++) {
                pre[i][j]=i;
            }
        }
    }
    //弗洛伊德算法
    public void floyd() {
        int len=0;
        //i,遍歷中間頂點(diǎn),3層循環(huán)的意義就是j通過i到k
        for (int i = 0; i < vertexs.length; i++) {
            //j代表出發(fā)節(jié)點(diǎn)
            for (int j = 0; j < vertexs.length; j++) {
                //k代表終點(diǎn)頂點(diǎn)
                for (int k = 0; k < vertexs.length; k++) {
                    //記錄j通過i到k的距離
                    len=dis[j][i]+dis[i][k];
                    //比較j通過i到k的距離是否小于j直接到k的距離
                    if (len < dis[j][k]) {
                        dis[j][k]=len;
                        pre[j][k]=pre[i][k];
                    }
                }
            }
        }
    }
    //打印圖
    public void show() {
        for (int i = 0; i < vertexs.length; i++) {
            //打印前驅(qū)頂點(diǎn)
            for (int j = 0; j < vertexs.length; j++) {
                System.out.print(vertexs[pre[i][j]]+"  ");
            }
            System.out.println();
           //打印頂點(diǎn)之間的距離
                for (int k = 0; k < vertexs.length; k++) {
                    System.out.print(vertexs[i]+"到"+vertexs[k]+"的距離為:"+dis[i][k]+"  ");
                }
            System.out.println();
        }
        }
    }

到此這篇關(guān)于Java中的弗洛伊德(Floyd)算法的文章就介紹到這了,更多相關(guān)弗洛伊德Floyd算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis-plus聚合查詢、表關(guān)聯(lián)、條件更新實踐

    MyBatis-plus聚合查詢、表關(guān)聯(lián)、條件更新實踐

    文章描述了一個圖書館系統(tǒng)的操作流程,首先查詢預(yù)約數(shù)量,其次關(guān)聯(lián)查詢可預(yù)約書籍并發(fā)出通知,最后更新書刊狀態(tài)為下架,輸出每步操作的SQL日志
    2026-05-05
  • Java中關(guān)于isEmpty方法、null以及““的區(qū)別

    Java中關(guān)于isEmpty方法、null以及““的區(qū)別

    這篇文章主要介紹了Java中關(guān)于isEmpty方法、null以及““的區(qū)別,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • restTemplate實現(xiàn)跨服務(wù)API調(diào)用方式

    restTemplate實現(xiàn)跨服務(wù)API調(diào)用方式

    這篇文章主要介紹了restTemplate實現(xiàn)跨服務(wù)API調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。
    2023-07-07
  • 如何解決Spring MVC中響應(yīng)亂碼問題

    如何解決Spring MVC中響應(yīng)亂碼問題

    這篇文章主要介紹了如何解決Spring MVC中響應(yīng)亂碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • MyBatis類型轉(zhuǎn)換模塊的實現(xiàn)

    MyBatis類型轉(zhuǎn)換模塊的實現(xiàn)

    MyBatis是一個持久層框架ORM框架,實現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)和Java對象中的屬性的雙向映射,那么不可避免的就會碰到類型轉(zhuǎn)換的問題,本文主要介紹了MyBatis類型轉(zhuǎn)換模塊的實現(xiàn),感興趣的可以了解一下
    2023-09-09
  • 解析java中volatile關(guān)鍵字

    解析java中volatile關(guān)鍵字

    這篇文章主要為大家解析了java中volatile關(guān)鍵字,經(jīng)常有人把volatile關(guān)鍵字和synchronized或者lock混淆,本文就為大家好好區(qū)分,感興趣的小伙伴們可以參考一下
    2016-01-01
  • java字符串如何只保留數(shù)字、字母、中文

    java字符串如何只保留數(shù)字、字母、中文

    這篇文章主要介紹了java字符串如何只保留數(shù)字、字母、中文問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 使用MyBatis從hive中讀取數(shù)據(jù)

    使用MyBatis從hive中讀取數(shù)據(jù)

    Hive是一個基于Hadoop的數(shù)據(jù)倉庫工具,它可以方便地對大規(guī)模數(shù)據(jù)進(jìn)行查詢和分析,本文主要介紹了使用MyBatis從hive中讀取數(shù)據(jù),具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • java 垃圾回收機(jī)制以及經(jīng)典垃圾回收器詳解

    java 垃圾回收機(jī)制以及經(jīng)典垃圾回收器詳解

    這篇文章主要介紹了java 垃圾回收機(jī)制以及經(jīng)典垃圾回收器詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • EJB基礎(chǔ)知識(入門必看)

    EJB基礎(chǔ)知識(入門必看)

    下面小編就為大家?guī)硪黄狤JB基礎(chǔ)知識(入門必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

湘乡市| 山东省| 海南省| 伊通| 天津市| 五台县| 潜山县| 东乌珠穆沁旗| 青浦区| 芮城县| 玉山县| 高淳县| 安康市| 宜州市| 团风县| 长宁区| 镇康县| 凤凰县| 淳安县| 泾川县| 连平县| 兴国县| 成安县| 南丰县| 肃宁县| 闽清县| 玉溪市| 晋州市| 凤阳县| 横山县| 梨树县| 陕西省| 苍南县| 沂南县| 犍为县| 石嘴山市| 孟津县| 南江县| 鄂温| 随州市| 梁平县|