zoukankan      html  css  js  c++  java
  • 最短路的一点心得

    差不多最短路的题目做的差不多了

    主要三种算法:

    1、FLOYD:个人比较喜欢使用,不但可以快速计算计算多源最短路,也可以判断图的连通性。时间复杂度是(顶点^3)

    2、DIJK:从点的角度计算单源最短路比较方便吧,可以用邻接表优化(没用过,呵呵)。时间复杂度(顶点^2(朴素),顶点*log(顶点))

    3、SPFA+静态邻接表+队列储存:是从边的角度计算单源最短路,比较牛逼的算法,因为时间复杂度比较小(边*k),其中K是常数,

    注意用前两种算法时,因为这两种算法是从顶点思考,所以要小心重边的情况(有时题目没说明但自己要小心),每次读取边取小即可,用SPFA就没关系了

    网上说K~2,不过实际使用时K估计接近10,因为每个顶点差不多连10条左右的边。

    题型:

    1、直接求单源起点最短路

    2、求单源起点最短路+单源终点最短路,可以通过map矩阵转置,两次dijk算法求出

    3、顶点有权值的单源起点最短路:先求各点到起点的最短路,再分别与各点权值相乘的总和

    4、顶点有权值的单源起点最短路变型:求法同上

    5、顶点有权值的多源起点最短路:数据小的话用FLOYD实现,大的话一般要用SPFA再枚举起点求的

    6、有多个连通图的图之间点的最短路径问题:先用FLOYD求出图的连通性,再枚举图各个连通图之间的点的最短路

    ……

    差不多了,接着是最小生成树的学习

  • 相关阅读:
    德信创业系2014版
    [学习笔记]矩形面积并
    第六章 深入分析ClassLoader工作机制
    第五章 深入class文件结构
    设计模式
    第四章 Javac编译原理
    第三章 深入分析Java Web中的中文编码问题
    第2章 深入分析java I/O的工作机制(下)
    linnx常用命令学习
    jenkins学习(1)
  • 原文地址:https://www.cnblogs.com/huhuuu/p/1956332.html
Copyright © 2011-2022 走看看