单源节点最短路径蛮力法和Dijkstra算法性能对比

一、单源节点问题的对比

        在本文中,考虑单源点最短路径问题,对于一个加权连通图的一个称为起点的给定定点,求出它到所有其他定点之间的一系列最短路径。需要说明的是,这里所关心的不是从一个起点出发访问所有其他定点的单条最短路径,这种问题的难度更大。单起点最短路径问题要求的是一组路径,每条路径都从起点出发通向图中的一个不同顶点,其中某些路径可能具有公共边。在求带权连通图中最短路径问题有两个著名的算法,Dijkstra算法和Floyd算法,其中Dijkstra算法是解决单源节点间最短路径问题,本文中采用的就是这种算法,而Floyd算法是求解图中每对节点间的最短路径问题。本文中考虑的两种算法如下:

1)基于全排列的蛮力搜索算法,对连通图中除首节点和尾节点外,其他节点进行全排列,对其中每一个排列构成的路径首先进行合法性检测,然后通过笔记记录,找到最短路径。

2)Dijkstra算法,该算法的基本思想是按照路径长度的增长来通过迭代,依次求得v0节点到其他节点的路径长度,当经过n次迭代后,即可求出v0到其他n-1个节点之间的最短路径长度。首先将节点分为两个集合S1和S2,其中S1初始只包含v0节点,S2初始为其他节点,然后算法按照以下规则来迭代:

①从集合S2中选择一个节点vi使其到v0节点之间的距离最短,并把vi加入到S1集合中;

②用vi作为中间节点来过渡,判断是否能通过vi节点作为中间节点,使得从v0到S2集合中其他的节点路径更短,如果通过vi作为中间节点的过渡得到的距离更短,即更新v0到S2中节点之间的距离权值;

③重复①~②的迭代过程,知道S2集

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值