问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

迪杰斯特拉算法的本质是贪心还是动态规划?

发布网友 发布时间:2022-04-28 21:24

我来回答

3个回答

热心网友 时间:2022-04-12 01:05

贪心是一种特殊的动态规划,动态规划的本质是独立的子问题,而贪心则是每次可以找到最优的独立子问题。
贪心和动归不是互斥的,而是包含的,贪心更快,但约束更强,适应范围更小。
动归和bfs的关系也是一样的。

展开一点讲,在求解最优化问题时,有多个解。而求解的过程类似一个树,我们称之为求解树。

一般的求解树真的是一棵树,所以我们只能用bfs来搜索,顶多剪枝。

有些特殊的求解树,中间很多结点是重合的,结点个数比所有搜索分支的个数少很多个数量级。这类问题较特殊,我们可以保存中间的搜索过程。而记忆化搜索和动态规划本质上就是一个东西,快就快在可以不用重复计算很多中间结果(所谓的最优子问题)。

还有一些特殊的求解树,更特殊,它们不止有很多重复结点,而且每次选择分支的时候,我们可以证明只要选择一个分支,这个分支的解就一定比其他选择更优。这类问题就是贪心了,

所以bfs,dp,贪心三个方法都是解决最优化问题的方法,根据问题的不同,约束越大的问题可以用越快的方法,越慢的方法可以解决的问题越普适。

动态规划的状态转移函数,可以抽象成这样一种函数:

f(x)=g(f(x1), f(x2), f(x3), ... f(xn))

其中f就是我们说的独立问题,每个f都有一个唯一值,也就是没有后效性。

贪心也是这个函数,但可以证明:

f(xi) >= f(x1|x2|...|xn)

那么我们就不用再去计算除了f(xi)以外的任何子状态了,所以就更快

而标准的bfs,虽然也有

f(x)=g(f(x1), f(x2), f(x3), ... f(xn))

但是因为对于任意的f(x),它的子问题f(xi)的输入状态xi都不同(换一种思路也可以说f(xi)在不同的路径下值都不同,本质上是我们怎么定义xi,到底是狭义的参数还是广义的状态),所以无法使用内存去换取时间,就只能去遍历所有状态了。

热心网友 时间:2022-04-12 02:23

一般意义上的贪心算法在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。
Dijkstra算法显然是从整体最优考虑,求出的最短路径,一定是整体最优解,这是和一般意义上的贪心算法相悖的地方。而且Dijkstra算法符合动态规划的这一特性:待求解的问题分解为若干个子问题,前一子问题的解,为后一子问题的求解提供了有用的信息。在我看来,Dijkstra算法更接近动态规划。
从维基百科也可以看到这样的说明:
From a dynamic programming point of view, Dijkstra's algorithm is a successive approximation scheme that solves the dynamic programming functional equation for the shortest path problem by the Reaching method.

热心网友 时间:2022-04-12 03:58

我认为 Dijkstra算法 的本质是 广度优先搜索,
而此处的广度是定义在路程的cost之上的。
(就好比从圆心处向外扩散一个圆环,首次碰到的就是最近)

动态规划泛指,重叠子问题与原问题的推算关系(学名:动态转移方程),
贪心是极端情况的动态规划,子问题独一选择性。

Dijkstra算法的分解思路是
到达某节点的cost最小路径 --(从这里面选)--> { 到达其相邻节点的cost最小路径 }
独一选择性:
只挑选: Min {到达其相邻节点的最短路径}

结论:的确是贪心策略 

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
计算∫L√x^2+y^2ds,其中L为xoy平面上的圆周x^2+y^2=2x ∮√x^2+y^2ds(其中L为圆周x^2+y^2=ax)的值是多少? 高等数学,第一类曲线积分:计算√x^2 +y^2ds,其中L为圆周x2 +y2 =4x? 设L是圆周x^2+y^2=1在第一象限的部分,则曲线积分∫Lxy^2ds=? 计算∫根号下x^2+y^2ds,其中L为x=根号下a^2-y^2,y=x,y=0围成的闭... ∫l3xdx+2ydy= ,其中l为x²+y²=1的封闭曲 绝代双骄2江湖凶险 为什么我下的新绝代双骄前传不能玩? 大侠帮我过过新绝代双骄2的任务。 我的人类来源哪里?? 如果是猿猴,那猿猴来源哪里?? 遥远的向日癸地初三孩子可以看吗 OSPF的算法是什么 三票篇观察生长的向日癸日记400字 迪杰斯特拉算法怎么算? 梦见向日癸和玉米啥寓意 迪杰斯特拉算法的算法思想 看完向日癸后的读后感850字作文 向日癸像什么 国旗是向日癸是什么 种向日癸的季节时间方法 我前几天做梦,梦到海啸,我不知道怎么躲到了一辆车里,在车里,我被淹死了。请高人给解解梦。谢谢 向日癸能向光生长,说明生物具有的生命现象是 周公解梦2020年11月18号梦见车被水淹了又开出来了? 向日癸代表什么 梦见发大水车子在水中前进,请高手帮忙解梦 抖音呢称能用向日癸吗 大脚插件怎么调动头像图标,还有怪物的血条,字在后面怎么调 请问向日癸的花语是什么? 向日癸表示什么意思 向日癸为什么总向着太阳? 迪杰斯特拉算法的原理 大学作业帮 一般线性规划 求详细解答步骤 迪杰斯特拉算法 迪杰斯特拉算法的算法实现 迪杰斯特拉算法的设计技术是?(选择答案) 迪杰斯特拉算法求得最短路径唯一么? 迪杰斯特拉算法和普利姆算法的区别 迪杰斯特拉算法的本质是贪心还是动态规划 C语言:迪杰斯特拉算法怎么看? 迪杰斯特拉算法为什么不能有负权边 迪杰斯特拉算法 应用 数据结构中迪杰斯特拉算法求最短路径 迪杰斯特拉算法和a*算法区别 迪杰斯特拉算法不懂啊 长沙县医保报销比例? 长沙本地户口农医保报销比例和双峰农医保 长沙县农村医保报销 《光遇》传递能量任务怎么完成? 光遇集结季第一个任务怎么做 《光遇》小王子任务六在哪?