dijkstra总结:

     此题属于dijkstra双边权问题,直接使用dijkstra算法找到满足题意条件的边长

 

 1.     对于边权问题的处理方法: 设定w[ k ] = weight[ u ][k] + w[u]; //求出满足题意要求的边权值

 2.    对于点权问题的处理方法:         w[ k ] = weight[k]+ w[ u ]        //求出满足题意要求点权值

 3.     对于求满足题意最短路径(有多条)求总共的条数的问题:   (有更小的边)num_path[ start]= 1    num_path[ k ]  = numpath[ u ]

                                                                                                         当出现相同的边 num[k] = numpath[  k ] +numpath[ u ];    

 4.     对于求满足题意路径中结点个数问题:     node_path[ k ] = node[ u ] + 1

3.     对于满足题意要求路径输出问题:1. 设定数组dispre保存所有满足要求(不仅仅是长度)路径的父节点,通过disdfs()输出路径

                                                            2.第二种方法:使用dfs算法遍历,设定vector<>path[ maxsize ](二维向量)存储最短路径 长度(注意只满足长度这个条件),在dfs中就处理题中其他的条件,输出满足题意要求的最短路径。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dijkstra网络拓扑是一种用于计算网络中最短路径的算法。它采用的是贪心算法的思想,即每次选择当前最优的路径来更新最短路径。 该算法需要一个起点和一个终点,然后计算出其他所有节点到达终点的最短路径。它通过维护一个距离列表来记录起点到各个节点的最短距离,并在计算过程中逐步更新距离列表。 具体步骤如下: 1. 初始化距离列表,将起点到各个节点的距离都设置为无穷大,起点的距离设置为0。 2. 选择一个当前节点作为起点,将其距离设置为已知最短距离。 3. 对于当前节点的每个邻居节点,计算经过当前节点到达该邻居节点的距离。 4. 如果经过当前节点到达某个邻居节点的距离比已知最短距离要小,则更新该邻居节点的距离。 5. 选择一个未标记的距离最小的节点作为下一个当前节点,返回第3步继续计算。 6. 重复执行第3步到第5步,直到所有节点都被标记为已知最短路径。 7. 最后得到的距离列表就是起点到各个节点的最短路径。 该算法的时间复杂度为O(V^2),其中V为节点的数量。这是因为在每次选择当前节点时,需要遍历所有节点来寻找距离最小的节点。如果使用优先队列来优化算法,可以将时间复杂度降低到O(ElogV),其中E为边的数量。 总结起来,Dijkstra网络拓扑算法是一种有效的算法,可以用来计算网络中的最短路径。它的实现相对简单,但在大规模网络中可能存在一定的计算复杂度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值