当前位置:   article > 正文

算法设计与分析:贪心算法(2)- 最短路问题(DP到贪心的优化)_从dp到贪心

从dp到贪心

本文参考UCAS卜东波老师算法设计与分析课程撰写

前言

在前文:算法设计与分析:贪心算法 - 排课问题(DP与贪心的区别与应用)中,我们初步地了解了贪心算法与动态规划的区别,贪心解决了一个问题的简化版本,不必再大张旗鼓地使用动态规划。本文接着借由最短路径问题来讲述贪心算法的应用。

最短路径问题

问题描述与分析

  • 给定一个图 G = ⟨ V , E ⟩ G=\lang V,E\rang G=V,E,对于图中每条边 e = ⟨ i , j ⟩ e=\lang i,j\rang e=i,j都有一个距离 d i , j d_{i,j} di,j。一个起始点s与一个终点t,问从s到t的最短路径是多少?
    首先寻路问题显然是一个多步决策问题,先考虑用动态规划的方式解决,如果我们直接用 O P T ( i , j ) OPT(i,j) OPT(i,j)表示点i到点j的最短路径,这个要求太过严苛,因为转移方程无法与明确的 d ( u , v ) d(u,v) d(u,v)做关联。因此我们引入一个新的变量k,使得 O P T ( i , j ) OPT(i,j) OPT(i,j)变成 O P T ( i , j , k ) OPT(i,j,k) OPT(i,j,k)(从i到j经过最多k条边的最短路径),又由于起始点固定,我们只用考虑到达点即可,最终定义 O P T ( v , k ) OPT(v,k) OPT(v,k):从s到点v最多经过k条边的最短路径。由此我们可以得到状态转移方程如下:
    O P T ( v , k ) = min ⁡ { O P T ( v , k − 1 ) min ⁡ ⟨ u , v ⟩ ∈ E { O P T ( u , k − 1 ) + d u , v } OPT(v,k) = \min \begin {cases} OPT(v,k-1) \\ \min_{\lang u,v\rang \in E}\{OPT(u,k-1)+d_{u,v}\} \end{cases} OPT(v,k)=min{ OPT(v,k1)minu,vE{ OPT(u,k1)+du,v}</

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/981167
推荐阅读
相关标签
  

闽ICP备14008679号