当前位置: 首页 > wzjs >正文

宿州网站建设优化企业网站代运营

宿州网站建设优化,企业网站代运营,网站企业地图,网站做目录中上文中我们了解了拓扑排序, 本节我们来学习最短路径的算法. 在图论中, 最短路径问题是指在一个加权图中找到两个节点之间的权重和最小的路径. 最短路径问题是一个基础且重要的主题. 它不仅在理论上具有挑战性, 而且在实际应用中也非常广泛, 比如交通导航, 社交网络分析等. 本…

上文中我们了解了拓扑排序, 本节我们来学习最短路径的算法.

在图论中, 最短路径问题是指在一个加权图中找到两个节点之间的权重和最小的路径.

最短路径问题是一个基础且重要的主题. 它不仅在理论上具有挑战性, 而且在实际应用中也非常广泛, 比如交通导航, 社交网络分析等. 本文将介绍几种解决最短路径问题的经典算法, 并讨论它们的应用场景.

环境要求

本文所用样例在Windows 11以及Ubuntu 24.04上面编译通过.

  1. Windows: 使用[Visual Studio],
  2. Ubuntu: 使用 Clang 18.1.3. (Ubuntu 24.04 系统安装版本)
  3. GCC 无法编译直接本项目代码, 因为本文代码使用了 C++20 Module, 而 GCC 对此支持不完整.

关于 Module 的更多信息, 请参考我之前的博客: CMake 构建 C++20 Module 实例(使用 MSVC)

本项目工程目录: 图论代码


1. Dijkstra 算法

Dijkstra 算法是由荷兰计算机科学家艾兹赫尔·戴克斯特拉(Edsger W. Dijkstra)于 1956 年提出的一种用于解决加权图中单源最短路径问题的算法. 该算法适用于所有边权重为非负数的情况, 能够找到从一个起点到图中所有其他顶点的最短路径.

核心思想

Dijkstra 算法基于贪心策略, 其核心思想是: 每次从未确定的节点集合中选择距离起点最近的节点作为当前处理对象, 并更新通过该节点到达其他节点的距离估计值. 重复此过程直到所有节点都被处理过, 或者找到了目标节点.

算法步骤

以下是 Dijkstra 算法的基本步骤:

  1. 初始化:

    • 将起始节点的距离设为 0, 其余所有节点的距离设为无穷大.
    • 创建一个优先队列(或最小堆), 将所有节点加入其中, 起始节点的优先级最高(即距离最小).
  2. 主循环:

    • 从优先队列中取出距离最小的节点 u.
    • 对于节点 u 的每一个邻居 v:
      • 计算从起始节点经过 u 到达 v 的距离 d = 距离[u] + 权重(u, v).
      • 如果 d 小于当前记录的 v 的距离, 则更新 v 的距离, 并设置 v 的前驱节点为 u.
      • 更新优先队列中的 v 节点信息(如果使用的是优先队列).
  3. 终止条件:

    • 当优先队列为空时, 算法结束.
    • 或者在找到特定的目标节点后提前终止.

示例

假设我们有一个如下所示的简单无向图:

sample

如果我们想找出从 A 到 F 的最短路径, 按照 Dijkstra 算法步骤执行如下:

  1. 初始化: dist[A]=0, dist[B]=dist[C]=dist[D]=dist[E]=dist[F]=dist[G]=dist[H]=dist[M]= ∞ \infty .
    dj0

  2. 主循环:

    • 取出 A, 更新 BD 的距离为 3 和 4. 下一个要弹出的元素是 B.
      dj1
    • 取出 B, 更新 CE 的距离为 6 和 5. 下一个要弹出的元素是 D.
      dj2
    • 取出 D, 更新 GH 的距离为 6 和 7. 下一个要弹出的元素是 E.
      dj3
    • 取出 E, 更新 FM 的距离为 8 和 10. 因为已经到达M, 所以算法结束. 最短距离为 10.
      dj4

时间复杂度

使用优先队列优化的版本时间复杂度为 O ( ( V + E ) log ⁡ ( V ) ) O((V+E)\log(V)) O((V+E)log(V)), 其中 V V V 是顶点数量, E E E 是边的数量.

代码实现

void dijkstra() {auto cmp = [](const auto& lhs, const auto& rhs) {return lhs.second > rhs.second;};std::priority_queue<std::pai

文章转载自:

http://gRPwvE1c.dxrbp.cn
http://Io03gDn1.dxrbp.cn
http://DZmwGBSt.dxrbp.cn
http://dLiNW4bc.dxrbp.cn
http://pqfEpvYH.dxrbp.cn
http://bLwpywTI.dxrbp.cn
http://YRsDYP8s.dxrbp.cn
http://QoiEy5z2.dxrbp.cn
http://ncG1iEsL.dxrbp.cn
http://0wcluZFd.dxrbp.cn
http://izlEycyL.dxrbp.cn
http://wEozNQRO.dxrbp.cn
http://7xzEdgNY.dxrbp.cn
http://2YPEzR3S.dxrbp.cn
http://TGwPm2yP.dxrbp.cn
http://Nb09a85q.dxrbp.cn
http://dZEciLW9.dxrbp.cn
http://sp7kQyzU.dxrbp.cn
http://3BbLxMcB.dxrbp.cn
http://01XJFvkp.dxrbp.cn
http://kZpXff1f.dxrbp.cn
http://yXPfVQsI.dxrbp.cn
http://NizVq4bU.dxrbp.cn
http://KcodBHfT.dxrbp.cn
http://vqL0jOI3.dxrbp.cn
http://eb3dVrxG.dxrbp.cn
http://RtYj9bk5.dxrbp.cn
http://orOb4H1D.dxrbp.cn
http://dUMkKTQD.dxrbp.cn
http://hggQd9RJ.dxrbp.cn
http://www.dtcms.com/wzjs/779005.html

相关文章:

  • 上海网站搜索优化湖南网站设计企业
  • 焦作商城网站建设电商网站适合做响应式布局吗
  • 南平网站开发公司网站建设思路方案
  • 网站建设开发的规划流程网站建设工作总结6
  • wordpress本地网站打开慢seo网站推广怎么做
  • 学习html5的网站网站建设预算计算方法
  • 做购物网站的目的免费网址注册平台
  • 自己搭服务器 做购物网站成本不要域名做网站
  • 网站设计广州量计价格管理培训机构
  • 珠海网站建设费用注册城乡规划师考试时间
  • 采购网站官网用什么网站做框架图
  • 北京商场购物卡优化技术服务
  • 自建网站软件网站建设制作品牌公司
  • 网站推广运作怎么做直播网站功能怎么做
  • 仲恺企业网站建设大专网页设计工资怎么样
  • 如何做好网站seoo2o网站运维建设方案
  • 福田区做网站公司太原网站建设价格低
  • 晋江做网站的公司哪家好wordpress 获取链接地址
  • 南通物流网站建设高权重网站做员会来顶排名
  • 企业网站建设不要空间可以吗什么网站可以做试题
  • 网站开发外包合同河南最新消息
  • 湛江网站建设低价推荐dede5.7网站搬家
  • 搜索引擎网站排名优化方案wordpress教程
  • wild合成版是哪个网站做的开发者选项在哪里打开vivo
  • 信阳网站建设策划方案商城系统小说
  • 东莞市做网站的福州专业网站建设网络公司
  • 网站开发jd如何制作网页设计首页
  • 建筑公司网站起名东莞整站优化公司火速公司
  • 建设网站的基本流程是什么wordpress 账号插件
  • 响应式网站开发钟山县住房和城乡建设局网站