图论 五 最短路径 最长路径

 

    花几个算法的简易图:

   一、 dijkstra算法:

     

       dijkstra算法需要三个数据结构,a:一个存储已选节点,b:一个存储未选节点,c:一个存储需要不断更新的已经遍历的路径

       算法流程:循环一下算法知道B为空:

       1.选取一个节点为开始节点,遍历开始节点的连通的未访问节点

       2.更新C,取C中总权重最小值的结束节点作为路径下一个循环的开始节点

 

   二、 warshall算法:

         

  warshall算法:需要邻接矩阵存储图,以便获得出边入边。

 算法三个循环for  所有节点

                       for   节点出边

                          for 节点入边

                               如果出边+入边<两端节点:两端节点=出边+入边

就是将每个节点贡献给自己的入边节点,最后整个图就连在一起啦,可喜可贺,可喜可贺

 

三、开始结束边算法  

获得两点之间最大路径,最短路径,可以求出startnode到endnode的所有路径,然后找出来

 

    算法很简单,就是遍历所有节点,然后递归后继,直到递归到看到环了,或是递归到头了,就生成开始节点到结束节点到边拉,可喜可贺,可喜可贺

 

 

   复杂度上,当然是dijkstra好啦

   在编码上,邻接矩阵比较好用,不用将大的要死的图存在一起,纯属个人见解

 

 

 

你可能感兴趣的:(数据结构)