zoukankan      html  css  js  c++  java
  • Floyd算法 笔记 C/C++

    个人笔记,仅供复习

    1.适用范围:求每一对顶点之前的最短路径(适用稠密图)

    2.算法思想:在一般情况下,若(vi,…,vk )和( vk,…,vj )分别是从 vi 到 vk从 vk 到 vj 中间顶点的序号不大于k的最短路径,则将( vi,…, vk ,… , vj )和已经得到的从vi到vj中间顶点的序号不大于k-1的最短路径相比较,其长度较短者便是从vi到vj的中间顶点的序号不大于k的最短路径。这样,在经过n次比较后,最后求得的必是从vi到vj的最短路径。按此方法,可以同时求得各对顶点间的最短路径。

    3.具体步奏:其中D(k)[i][j],表示只经过顶点编号小于k的顶点i与j的最短路径。

    4.代码参考:

    void Floyd()
    { 
    	for ( i = 0; i < N; i++ )
    		for( j = 0; j < N; j++ ) {
    			D[i][j] = G[i][j];
    			path[i][j] = -1;
    		}
    		for( k = 0; k < N; k++ )
    			for( i = 0; i < N; i++ )
    				for( j = 0; j < N; j++ )
    				if( D[i][k] + D[k][j] < D[i][j] ) {
    					D[i][j] = D[i][k] + D[k][j];
    					path[i][j] = k;
    				}
    }

  • 相关阅读:
    mysql把查询结果集插入到表理
    js遍历json数据
    php事务回滚
    win10定时执行php脚本
    php输出json的内容
    图像的几个基本概念
    linux系统编程之I/O内核数据结构
    linux系统编程之错误处理
    深拷贝和浅拷贝
    mysql用户的创建
  • 原文地址:https://www.cnblogs.com/long98/p/10352228.html
Copyright © 2011-2022 走看看