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

    最短路

      一、单源最短路

          1、边为正值

              ①朴素dijkstra :适用于稠密图,eg(1<N<500,1<M<1e5)                                                     邻接表存图

              ②堆优化dijkstra :适用于稀疏图,点数与边数差不多,eg(1<N,M<1e5)

          2、边可能有负值

              ①bellman_ford :有边数限制的图                                                                                              存图方式随意      可用结构体链表

              ②spfa:应用广泛,可判负环。

      二、多源最短路

          floyd:三重循环,本身是个动态规划算法,在代码实现的时候省去了一维状态。

          原状态是:f[i, j, k]表示从i走到j的路径上除了i, j以外不包含点k的所有路径的最短距离。那么f[i, j, k] = min(f[i, j, k - 1), f[i, k, k - 1] + f[k, j, k - 1]。

          因此在计算第k层的f[i, j]的时候必须先将第k - 1层的所有状态计算出来,所以需要把k放在最外层。

  • 相关阅读:
    composer使用git作为仓储
    monolog记录日志
    lumen laravel response对象返回数据
    lumen中间件 Middleware
    AcWing 901. 滑雪
    leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
    acwing 902. 最短编辑距离
    ACWING 844. 走迷宫
    leetcode 5199. 交换字符串中的元素
    AcWing 836. 合并集合
  • 原文地址:https://www.cnblogs.com/poo7/p/12245835.html
Copyright © 2011-2022 走看看