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

个人建什么网站比较好淘宝店有给网站做优化am

个人建什么网站比较好,淘宝店有给网站做优化am,西安优秀的集团门户网站建设,域名审核怎么做返利网站最短路径算法总结 以下是常见的最短路径算法及其时间复杂度和核心思路的整理: 1. Dijkstra(朴素版) 时间复杂度: O ( n 2 ) O(n^2) O(n2) 适用场景:稠密图(边数 m m m 接近 n 2 n^2 n2)&…

最短路径算法总结

以下是常见的最短路径算法及其时间复杂度和核心思路的整理:


1. Dijkstra(朴素版)

时间复杂度 O ( n 2 ) O(n^2) O(n2)
适用场景:稠密图(边数 m m m 接近 n 2 n^2 n2),且无负权边

算法步骤

  1. 初始化距离数组 dist[]dist[1] = 0,其余为 +∞

  2. 循环 n n n 次,每次确定一个未访问的最近节点 t

    • 找到当前未在集合 S S S 中且 dist 最小的点 t

    • t 加入集合 $S`(已确定最短路径)。

    • t 更新其他点的距离:

      for (int j = 1; j <= n; j++)dist[j] = min(dist[j], dist[t] + g[t][j]);
      

2. Dijkstra(堆优化版)

时间复杂度 O ( m log ⁡ m ) O(m \log m) O(mlogm)
适用场景:稀疏图(边数 m ≪ n 2 m \ll n^2 mn2),且无负权边

算法步骤

  1. 使用优先队列(小根堆)存储 {距离, 节点}

  2. 每次取出堆顶节点 t,若已访问则跳过,否则标记为已访问。

  3. 遍历 t 的所有邻接边,松弛更新距离并加入堆:

    priority_queue<PII, vector<PII>, greater<PII>> heap;
    heap.push({0, 1});
    while (!heap.empty()) {auto [d, t] = heap.top(); heap.pop();if (st[t]) continue;st[t] = true;for (auto [j, w] : adj[t]) {if (dist[j] > dist[t] + w) {dist[j] = dist[t] + w;heap.push({dist[j], j});}}
    }
    

3. Bellman-Ford

时间复杂度 O ( n m ) O(nm) O(nm)
适用场景:允许负权边,并可检测负权回路(最多松弛 n − 1 n-1 n1 次)。

算法步骤

  1. 初始化 dist[]dist[1] = 0,其余为 +∞

  2. 松弛所有边 k k k 次(若求不超过 k k k 条边的最短路):

    for (int i = 0; i < k; i++) {memcpy(backup, dist, sizeof dist); // 备份防止串联for (int j = 0; j < m; j++) {int a = edges[j].a, b = edges[j].b, w = edges[j].w;dist[b] = min(dist[b], backup[a] + w);}
    }
    

4. SPFA(队列优化的 Bellman-Ford)

时间复杂度:平均 O ( n ) O(n) O(n),最坏 O ( n m ) O(nm) O(nm)
适用场景:负权边但无负权回路,稀疏图效率较高。

算法步骤

  1. 使用队列存储待松弛的节点。

  2. 每次取出队首节点 t,遍历其邻接边并松弛:

    queue<int> q;
    q.push(1);
    st[1] = true; // 标记是否在队列中
    while (!q.empty()) {int t = q.front(); q.pop();st[t] = false;for (auto [j, w] : adj[t]) {if (dist[j] > dist[t] + w) {dist[j] = dist[t] + w;if (!st[j]) q.push(j), st[j] = true;}}
    }
    

5. Floyd(动态规划)

时间复杂度 O ( n 3 ) O(n^3) O(n3)
适用场景:多源最短路,允许负权边(不能有负权回路)。

算法步骤

  1. 初始化邻接矩阵 d[i][j](存储边权,对角线为 0 0 0)。

  2. 三重循环枚举中间点 k k k,更新所有点对的最短距离:

    for (int k = 1; k <= n; k++)for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
    

对比总结

算法时间复杂度负权边负权回路检测适用场景
Dijkstra-朴素 O ( n 2 ) O(n^2) O(n2)稠密图
Dijkstra-堆 O ( m log ⁡ m ) O(m \log m) O(mlogm)稀疏图
Bellman-Ford O ( n m ) O(nm) O(nm)✔️✔️限制边数最短路
SPFA O ( n ) ∼ O ( n m ) O(n) \sim O(nm) O(n)O(nm)✔️✔️稀疏图或负权边
Floyd O ( n 3 ) O(n^3) O(n3)✔️多源最短路

  • 负权回路检测:Bellman-Ford 和 SPFA 在松弛 n n n 次后若仍能更新 dist,则存在负权回路。
  • Dijkstra 的局限性:无法处理负权边,因贪心策略可能导致错误结果。

文章转载自:

http://D4l3DNPK.Lzqtn.cn
http://bQ3T3onQ.Lzqtn.cn
http://H9FunbYg.Lzqtn.cn
http://8NoKDUnY.Lzqtn.cn
http://eT5IsN8A.Lzqtn.cn
http://Jmj1QJWx.Lzqtn.cn
http://vtLD5j3u.Lzqtn.cn
http://bRDXIOqU.Lzqtn.cn
http://0qPOxz7k.Lzqtn.cn
http://QK1AIJyh.Lzqtn.cn
http://6ny9WLfl.Lzqtn.cn
http://9Cvkxshr.Lzqtn.cn
http://yCqN2IXE.Lzqtn.cn
http://W1yuGavN.Lzqtn.cn
http://qyfkXQX1.Lzqtn.cn
http://xKk1VCtX.Lzqtn.cn
http://Xg8q9UmF.Lzqtn.cn
http://4u107Azo.Lzqtn.cn
http://n0Jf4gXc.Lzqtn.cn
http://P40Q2MHW.Lzqtn.cn
http://GLxoErTY.Lzqtn.cn
http://QSpPujCa.Lzqtn.cn
http://jfRufN7i.Lzqtn.cn
http://mxlrArHh.Lzqtn.cn
http://6a2HK7RC.Lzqtn.cn
http://Di7H4u12.Lzqtn.cn
http://AAhdwlFo.Lzqtn.cn
http://z3OUvU7L.Lzqtn.cn
http://bwRqADQb.Lzqtn.cn
http://3BTXcVGq.Lzqtn.cn
http://www.dtcms.com/wzjs/708489.html

相关文章:

  • 深圳建设官方网站网站开发服务属于什么行业
  • 六盘水遵义网站建设怎么做美橙网站备案照片背景
  • 建设公司网站模板下载wordpress 输出array
  • 怎样做视频电影网站北京南站在几环
  • 现在流行用什么做网站网站关键字多少个
  • 建站网址导航无锡网站建设 微信
  • 那家公司网站做的好怎么做网站规划书
  • 专业的网站开发建设公司深圳网站建设注意事项
  • 朝阳制作网站郑州响应式网站设计
  • 电子政务与网站建设意义莱芜金点子最新招聘信息电子版
  • 简述建设一个网站的具体过程wordpress添加端口访问不了
  • 域外网站是权威的网络营销
  • 通城做网站的软件公司网站
  • 视频网站的防盗链是怎么做的专业的网站设计制作
  • wordpress文章数据太多seo是什么时候开始的
  • 郑州做网站zzmshl做衣服的教程网站有哪些
  • 什么是网站的入口平台门户网站建设方案
  • 3322网建站海外网络搭建
  • 三五互联网站建设怎么样网页设计实训步骤
  • 网站建设与seo奇胜网络 邯郸网站建设
  • 服务器可以自己的网站吗企业网站建设需要准备资料
  • 专业网站建设公司需要做好哪些方面的工作站长之家seo查询官方网站
  • 江苏徐州网站建设济南的网站建设
  • 网站程序设计软件响应式网页设计方法
  • 大连网站前端制作公司做新闻微网站
  • 无锡门户网站制作电话集团公司管理系统
  • 兰州网站制作怎么样做资源网站需要什么软件
  • 公司网站做的太难看网站推广怎么做 知乎
  • 北京房地产网站建设wordpress调用分类文章排序
  • 信息公司网站建设方案+游戏教育网站制作哪个好