zoukankan      html  css  js  c++  java
  • [临时]单源最短路径(Dijkstra算法)

      因为没有原创内容,相当于看书笔记,因此本打算发在QQZone,但因为QQ空间日志忽然服务器繁忙,大骂腾讯无奈还是把此日志临时发布在自己的博客上。

      参考资料:《计算机算法设计与分析》(第三版)。
      条件:
      (1)带权有向图 G = (V, E); 任意边的权 >= 0;

      算法:
      贪心法。体现在从源节点开始,每次从集合S外“选一个最近的节点”添加到S中,然后对dist数组做更新。

         

      参数说明:

      T:模板参数,权值类型。(计量长度的数据类型)

      int n; 图的节点数;  

      int v; 出发节点(源节点)的索引。

      T dist[];  dist[i]表示当前条件下 v 到 i 节点之间的最短距离。求解过程中这个数组随着集合S的扩充而动态变化。

      int prev[]; prev[i]表示从 v 到 i 节点之间的最短距离路径上的前一个节点。可以通过这个数组反塑获取到完整路径。

      T *c; 图的矩阵表示。c[i][j]表示边(i,j)的权。当无通路时为一个大数。 

     =========================  

          代码:

    ========================= 

     Code_Dijkstra

    =========================
          输出:
    =========================
    sizeof(bool) = 1 bytes.
    dist: 0,10,50,30,60,
    prev: 0,0,3,0,2,
    0->4 Path: 0 - 3 - 2 - 4 

  • 相关阅读:
    【java】一维数组循环位移方阵
    【java】for循环输出数字金字塔
    C++编程tips
    C++中cin.get 和cin.peek 及其相关的用法
    ubuntu增加字符设备驱动程序/ 操作系统课程设计
    C++ Primer 学习笔记/ 处理类型
    C++学习,顶层const
    C++学习笔记/const和指针
    ubuntu16.04增加系统调用(拷贝)
    Java学习笔记#数组 循环遍历
  • 原文地址:https://www.cnblogs.com/hoodlum1980/p/1588334.html
Copyright © 2011-2022 走看看