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 

  • 相关阅读:
    什么是 CLR
    常用的数据结构以及算法
    Array和ArrayList的异同点
    什么是CMS?
    .NET Framework3.0答疑
    C#中的委托
    C#速成之三(Quick C#)
    C#速成之五(Quick C#)
    C#速成之四(Quick C#)
    类,对象,封装,接口,多态,继承
  • 原文地址:https://www.cnblogs.com/hoodlum1980/p/1588334.html
Copyright © 2011-2022 走看看