本次笔记内容:
图习题1 核心算法
图习题2 其他推广

文章目录

  • 旅游规划问题
  • 核心算法
  • Dijkstra算法推广问题
    • 要求数最短路径有多少条
    • 要求边数最少的最短路

旅游规划问题

如上图,优先看权重1,如果权重1相同,看权重2。

核心算法

void Dijkstra(Vertex S)
{while (1){V = 未收录顶点中dist最小者;if (这样的V不存在)break;collected[V] = true;for (V的每个邻接点W)if (collected[W] == false)if (dist[V] + E(V, W) < dist[W]){dist[W] = dist[V] + E(V, W);path[W] = V;cost[W] = cost[V] + C(V, W);}else if ((dist[V] + E(V, W) == dist[W]) && (cost[V] + C(V, W) < cost[W])){cost[W] = cost[V] + C(V, W);}}
}

Dijkstra算法推广问题

要求数最短路径有多少条

  • count[s] = 1;
  • 如果找到更短路:count[W]=count[V];
  • 如果找到等长路:count[W]+=count[V](注意,不是count[W]++)。

要求边数最少的最短路

  • count[s] = 0;
  • 如果找到更短路:count[W]=count[V]+1;
  • 如果找到等长路:count[W]=count[V]+1。

【数据结构笔记31】Dijkstra算法例题:旅游规划(双权重),以及其他推广相关推荐

  1. PTA 数据结构与算法 7-9 旅游规划 (25 point(s))

    7-9 旅游规划 (25 point(s)) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径 ...

  2. 数据结构——最短路径之Dijkstra算法(与最小生成树的prime算法很像,建议一起看)

    最短路径之Dijkstra算法 (一)Dijkstra算法 单源最短路径:就是从某一个顶点出发,到图中任意顶点之间的最短路径: [算法概述]:Dijkstra算法适用于解决单源最短路径的问题.即:从源 ...

  3. dijkstra 算法_路径规划算法总结

    Dijkstra算法 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止(BFS.prime ...

  4. Floyd算法、Dijkstra算法例题

    二 1.用Floyd算法求解下图各个顶点的最短距离. 2.对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径. 2.解析 1)用Floyd算法求解各个顶点的最短距离. 第一步:画出初始化距离 ...

  5. 数据结构笔记——最短路径BFS算法

    写在前面:科班出身,应届考研党,愿21考研成功上岸,冲冲冲! 目录 一.最短路径问题 二.BFS求无权图的单源最短路径 三.代码实现 四.总结 一.最短路径问题 单源最短路径--BFS算法.Dijks ...

  6. dijkstra算法为什么不能计算负权重?

      这几天在看迪杰斯特拉算法(dijkstra算法)的时候,了解到这个算法不能够计算负权重,这让我很纳闷???为什么呢???下面我按照我理解的解释一番,若有错误希望阅读者能够评论指出,不胜感激. 我们 ...

  7. 漫画:数据结构之最短路径 Dijkstra 算法的优化 | 技术头条

    作者小灰,本文经授权转载自程序员小灰(ID:chengxuyuanxiaohui). 在<漫画:图的 "最短路径" 问题>一文中小灰介绍了单源最短路径算法 Dijkst ...

  8. 【dijkstra模板】旅游规划 (25 分)

    立志用最少的代码做最高效的表达 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...

  9. 【数据结构笔记03】算法实例:最大子列和

    本次笔记内容: 1.3.1 应用实例_算法1&2 1.3.2 应用实例_算法3 1.3.3 应用实例_算法4 文章目录 最大子列和问题 算法1:把所有子列拿出来比较(暴力法) 算法2:不做重复 ...

最新文章

  1. CSharpGL(1)从最简单的例子开始使用CSharpGL
  2. 快速部署ldap服务
  3. java equals() output_Java中的==和equals
  4. 周期T与频率f数量级对应关系(MHz--μs)
  5. Android Studio创建侧滑菜单使用心得
  6. java diamond 有什么用_Diamond语法何时在Java 8中不起作用?
  7. eoLinker-API_Shop_知识类API调用的代码示例合集:驾考题库、ISBN书号查询等
  8. 华硕笔记本k555拆机图解_华硕K43系列笔记本电脑拆机清灰图文超细版教程
  9. 双轴旋转云台plc控制_Robomaster电控入门(7)双轴云台控制
  10. 全国各省电信、联通、网通、铁通DNS列表
  11. C++学习 十五、类继承(4)基类方法重写,隐藏
  12. swift-集成touch id功能 指纹验证
  13. 日期计算器输入天数计算日期_如何在Windows计算器中执行日期计算
  14. 小程序的横向二级顶部导航条,可以切换、拖动、二级定位在一级的下面,高度怎么办
  15. HMI-47-【多媒体】Title界面实现 2
  16. 费雪分离定理的证明与评价
  17. unix/Linux BSD以及System V---认知
  18. 在origin中画一条Y=x的自定义函数曲线
  19. CSS动画 图片或者文字上下来回循环上下移动
  20. c语言中 n的意义,\n\n在c语言中是什么意思?_后端开发

热门文章

  1. linux命令地址,[命令] Linux IP 命令 IP(管理地址)
  2. oracle影响性能,影响Oracle性能的几个重要参数
  3. 【Kettle】Win7启动Spoon.bat闪退
  4. 【Oracle】SCOPE=MEMORY|SPFILE|BOTH
  5. warning: refname ‘HEAD‘ is ambiguous解决方法
  6. c#解决浏览器跨域问题
  7. 使用弹性布局来解决令人烦恼的垂直居中问题~~
  8. 什么是Makefile.am和Makefile.in?
  9. Git中的“起源”是什么?
  10. Java为什么不允许覆盖静态方法?