第三章--动态规划--最低通行费

2301_80232444 2024-11-03 17:18:33

一、动态规划方程

1、状态表示:

  令 dp[i][j] 表示从起点 (1, 1) 到达 (i, j) 的最低路费

2、状态方程:

  dp[i][j]=min(dp[i-1][j],dp[i][j-1])+A[i][j]

其中,A[i][j]代表该点的路费

3、边界条件 :

首先,初始化起点 dp[1][1]=A[1][1] 

第一列(只能从上方到达): dp[i][1]=dp[i−1][1]+A[i][1]

第一行(只能从左方到达): dp[1][j]=dp[1][j−1]+A[1][j]

4、空间、时间复杂度分析:

空间为O(n^2),因为用到一个大小为N*N的二维dp数组

时间为O(n*n),因为要遍历一个N*N的dp数组,且每一步的时间复杂度为O(1)

二、动态规划的思考与体会

动态规划是主要用于解决具有重叠子问题和最优子结构性质的问题。其基本思想是将一个复杂的问题分解成较小的子问题,通过记录子问题的解来避免重复计算,从而提高算法的效率。

1、状态转移方程描述了如何从已知的状态推导出未知状态。通过构造递推关系,可以有效地计算出最终答案。在设计状态转移方程时,需考虑所有可能的选择或路径,以确保没有遗漏。自下而上解决问题。

2、边界条件的初始化是动态规划中的起始点,通常是简单的子问题。清楚边界条件的设置,自下而上去构造dp数组。

...全文
34 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

434

社区成员

发帖
与我相关
我的任务
社区描述
广东外语外贸大学信息科学与技术学院
算法 高校
社区管理员
  • brisksea
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧