zoukankan      html  css  js  c++  java
  • 最短路

    *Floyd--Warshall

    求任意两点间的最短路算法

    它的核心算法就只有五行

    for(k=1;k<=n;k++)
           for(i=1;i<=n;i++)
              for(j=1;j<=n;j++)
                 if(e[i][j]>e[i][k]+e[k][j]&&e[i][k]<inf&&e[k][j]<inf)
                    e[i][j]=e[i][k]+e[k][j];

    该算法for循环较多,时间复杂度为0(N^3),数据稍大则会超时,有局限性。

    *Dijkstra--单源最短路

    指定一个点到其余各顶点的最短路径。

        for(i=1;i<=n-1;i++)
        {
            min=inf;
            for(j=1;j<=n;j++)
            {
                if(book[j]==0&&dis[j]<min)
                {
                    min=dis[j];
                    u=j;
                }
            }
            book[u]=1;
            for(v=1;v<=n;v++)
            {
                if(e[u][v]<inf)
                {
                    if(dis[v]>dis[u]+e[u][v])
                       dis[v]=dis[u]+e[u][v];
                }
            }
        }

    该算法时间复杂度为O(N^2),

    *Bellman-Ford----解决负边权

    核心代码

    	for(k=1;k<=n-1;k++)
    		for(i=1;i<=n;i++)
    		{
    			if(dis[v[i]]>dis[u[i]]+w[i])
    			{
    				dis[v[i]]=dis[u[i]]+w[i];
    			}
    		}
    

      与Dijkstra思想有相同之处。

     菜鸟先写个大概吧

  • 相关阅读:
    vue-amap地图组件的使用
    数据分析
    爬虫之scrapy框架
    爬虫之selenium
    记录一下最近的pwn
    内核提权姿势笔记
    CVE-2016-5343分析
    CVE-2015-8660分析
    Docker远程访问get(root)shell姿势
    Linux内核ROP学习
  • 原文地址:https://www.cnblogs.com/ylrwj/p/10645191.html
Copyright © 2011-2022 走看看