Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >算法导论系列:贪心算法(2)

算法导论系列:贪心算法(2)

原创
作者头像
云时之间
发布于 2018-09-26 14:52:04
发布于 2018-09-26 14:52:04
8900
举报
文章被收录于专栏:云时之间云时之间

这篇文章我们将来一起看看贪心算法一个具体例子, Dijkstra算法

Dijkstra算法最著名的应用是解决单元最短路径,这是一类贪心算法,他先是求出长度最短的一条路径,然后参照这一条最短路径去求出长度次短的路径,知道求出从起点到各个定点的最短路径.

这个算法不仅仅是贪心算法,其实也是一种特殊的动态规划,动态规划的本质是独立的子问题,而贪心每次可以求得最优的独立子问题,这两者有一些交集,但是收到很多约束,会影响适应的范围.

举例:今天你去一个景点去玩,景点地图如下,假如你从1号点出发,那到达其他各个节点的最短路径是什么?

现在我们假设景点地图如上所示,从起点到下一个点都会有具有方向路径和相应的权重,我们可以使用矩阵进行表示,如下图所示:

下图是算法的过程(用电子屏幕写字果然很不舒服):

最终的路径为:

代码如下:

运行结果:

1:输入样例

2:输出结果

下一篇文章我们将一起学习下哈夫曼编码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
贪心算法实战陷阱,看似简单却坑杀无数开发者的4类问题(附避坑指南)
当问题不满足这些性质时,贪心算法就可能成为性能陷阱甚至正确性陷阱。本文深入分析四类典型陷阱问题,提供避坑指南和实战解决方案。
大熊计算机
2025/07/15
680
贪心算法实战陷阱,看似简单却坑杀无数开发者的4类问题(附避坑指南)
算法导论系列:贪心算法(1)
周末开始着手算法这一系列文章,说起写这一系列的初衷是发现网上很多的同学们在学习算法这个时候,会遇到很多困难,而学校书中讲的道理尽管很对,但是总是太过于晦涩,正确的知识总是晦涩,这点没错,但让晦涩的知识
云时之间
2018/10/09
8750
算法导论系列:贪心算法(1)
dijkstra算法详解—简单易懂[通俗易懂]
在最短路径的问题中,局部最优解即当前的最短路径或者说是在当前的已知条件下起点到其余各点的最短距离。关键就在于已知条件,这也是Dijkstra算法最精妙的地方。我们来解释一下。
全栈程序员站长
2022/11/01
3.3K0
dijkstra算法详解—简单易懂[通俗易懂]
贪心算法如何贪心
贪心算法(又称贪婪算法)是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。
每天学Java
2020/06/01
1.2K0
图计算中的最短路径算法是什么?请解释其作用和常用算法。
在图计算中,最短路径算法用于寻找两个顶点之间的最短路径。最短路径算法的作用是确定从一个顶点到另一个顶点的最短路径,通常用于计算网络中的最佳路径、路由规划、物流运输等问题。
GeekLiHua
2025/01/21
1790
产品能力|算法学习笔记-贪心算法基础
趣味算法(第二版)读书笔记: day1: 序章|学习的方法和目标. day2:算法之美|打开算法之门与算法复杂性 day3.算法之美|指数型函数对算法的影响实际应用 day4.数学之美|斐波那契数列与黄金分割 day5.算法基础|贪心算法基础 day6.算法基础||哈夫曼树 day7.算法基础||堆栈和队列 day8.算法基础||动态规划 day9.算法基础|分治策略 后续补充完善
破晓之翼
2022/11/18
4550
产品能力|算法学习笔记-贪心算法基础
最短路算法实现与分析:Dijkstra算法,Floyed,Bellman-Ford, SPFA算法;
最短路算法:最短路径算法是图论研究中,一个经典算法问题;旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。
西湖醋鱼
2020/12/30
1.6K0
最短路算法实现与分析:Dijkstra算法,Floyed,Bellman-Ford, SPFA算法;
Python 算法基础篇之最短路径算法: Dijkstra 算法和 Floyd-Warshall 算法
在计算机科学中,寻找图中最短路径是一个经典问题。 Dijkstra 算法和 Floyd-Warshall 算法是两种常用的最短路径算法。本篇博客将重点介绍这两种算法的原理、应用场景以及使用 Python 实现,并通过实例演示每一行代码的运行过程。
小蓝枣
2023/07/25
2K0
文心一言 VS chatgpt (1)-- 算法导论1.1
在一个商店里,顾客需要购买一些商品。他们需要按照价格从低到高排序,以便更容易地找到他们想要的商品。
福大大架构师每日一题
2023/06/08
4070
文心一言 VS chatgpt (1)-- 算法导论1.1
转:一个极简的Dijkstra算法示例
Dijkstra算法是一种用于计算一个起点到其他所有点的最短路径的算法。它是贪心算法的一种,基于贪心策略,用来找单源最短路径问题。该算法常用于路由算法和作为其他图算法的一个子模块。 Dijkstra算法的时间复杂度为O(E + VlogV)。
啵啵鳐
2023/06/15
2400
拜托,别再问我贪心算法了!
上篇一文学会动态规划解题技巧 被不少号转载了,其中发现有一位读者提了一个疑惑,在求三角形最短路径和时,能否用贪心算法求解。所以本文打算对贪心算法进行简单地介绍,介绍完之后我们再来看看是否这道三角形最短路径问题能用贪心算法来求解。
kunge
2020/02/27
1.2K0
让计算机教授找回被劫车辆的贪心算法,究竟多实用?
去年的圣诞节假期里,在美国圣母大学计算机系任职终身副教授,博士生导师,兼任电子系终身副教授史弋宇,经历了一场好莱坞式的寻车事件。
HyperAI超神经
2019/12/02
7480
让计算机教授找回被劫车辆的贪心算法,究竟多实用?
A*搜索算法--游戏寻路
这是一个非常典型的搜索问题。起点是当下位置,终点是鼠标点击位置。找一条路径。路径要绕过地图中所有障碍,并且走的路不能太绕。最短路径显然是最聪明的走法,是最优解。
Michael阿明
2021/02/20
2K0
A*搜索算法--游戏寻路
五类常见算法小记 (递归与分治,动态规划,贪心,回溯,分支界限法)
直接或间接地调用自身的算法称为递归算法。 递归是算法设计与分析中经常使用的一种技术,描写叙述简单且易于理解。
全栈程序员站长
2022/07/20
6280
迪杰斯特拉(Dijkstra)算法(C/C++)
迪杰斯特拉(Dijkstra)算法是一种用于在加权图中找到单个源点到所有其他顶点的最短路径的算法。它是由荷兰计算机科学家艾兹格·迪科斯彻(Edsger Dijkstra)在1956年提出的。Dijkstra算法适用于处理带有非负权重的图。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。适用的是单源路径最短路问题,对于多源则采用弗洛伊德(Floyd)算法。
摆烂小白敲代码
2024/09/23
7640
迪杰斯特拉(Dijkstra)算法(C/C++)
贪心算法举例分析
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
张凝可
2019/08/21
6580
关于最短路径算法的理解
“最短路径算法:Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法等。​从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径。”
全栈程序员站长
2022/09/02
1.2K0
算法的奥秘:常见的六种算法(算法导论笔记2)
排序算法是一类用于对一组数据元素进行排序的算法。根据不同的排序方式和时间复杂度,有多种排序算法。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。
用户10781703
2023/11/23
3200
算法的奥秘:常见的六种算法(算法导论笔记2)
八十二、Python | Leetcode贪心算法系列
作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件。导致翘课严重,专业排名中下。.在大学60%的时间,都在CSDN。决定今天比昨天要更加努力。前面文章,点击下面链接
润森
2020/07/10
1K0
动态规划问题总结
动态规划算法通常基于一个递推公式及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。使用动态规划来解题只需要多项式时间复杂度,因此它比回溯法、暴力法等要快许多。 首先,我们要找到某个状态的最优解,然后在它的帮助下,找到下一个状态的最优解。
Coggle数据科学
2019/09/12
1.2K0
动态规划问题总结
推荐阅读
相关推荐
贪心算法实战陷阱,看似简单却坑杀无数开发者的4类问题(附避坑指南)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档