• 弗洛伊德算法(Floyd )


    package com.rao.graph;
    
    
    /**
     * @author Srao
     * @className Floyd
     * @date 2019/12/11 18:43
     * @package com.rao.graph
     * @Description 弗洛伊德算法
     */
    public class Floyd {
    
        final static int INF = Integer.MAX_VALUE;
    
        /**
         * 弗洛伊德算法
         * @param matrix
         */
        public static void floyd(int[][] matrix){
            //更新循环矩阵的值,matrix.length返回的是行数
            for (int k = 0; k < matrix.length; k++) {
                for (int i = 0; i < matrix.length; i++) {
                    for (int j = 0; j < matrix.length; j++) {
                        if (matrix[i][k] == INF || matrix[k][j] == INF){
                            continue;
                        }
                        matrix[i][j] = Math.min(matrix[i][j], matrix[i][k] + matrix[k][j]);
                    }
                }
            }
    
            //打印floyd最短路径的结果
            System.out.println("最短路径矩阵:");
            for (int i = 0; i < matrix.length; i++) {
                for (int j = 0; j < matrix.length; j++) {
                    System.out.printf("%3d ", matrix[i][j]);
                }
                System.out.println();
            }
        }
    
        public static void main(String[] args) {
            int[][] matrix = {
                    {0, 5, 2, INF, INF, INF, INF},
                    {5, 0, INF, 1, 6, INF, INF},
                    {2, INF, 0, 6, INF, 8, INF},
                    {INF, 1, 6, 0, 1, 2, INF},
                    {INF, 6, INF, 1, 0, INF, 7},
                    {INF, INF, 8, 2, INF, 0, 3},
                    {INF, INF, INF, INF, 7, 3, 0}
            };
    
            floyd(matrix);
        }
    }

  • 相关阅读:
    前端性能优化(css动画篇)
    常用的布局及技巧
    一些有用的技能点
    做webApp遇到的一些坑及解决方案
    mysql5.7.30 编译安装
    windows使用Pandoc将Markdown转换为PDF文件
    源码编译安装keepalived
    源码编译php
    源码编译nginx
    源码编译PHP提示zip错误
  • 原文地址:https://www.cnblogs.com/rao11/p/12024503.html
Copyright © 2020-2023  润新知