算法设计与分析第三章作业

2301_80143653 2024-11-03 23:35:34

1. 请写出作业“算法第三章3”中题目“7-4 最低通行费”的动态规划方程

( 1 )状态表示:使用一个二维数组dp [ i ] [ j ]来表示从左上角( 0,0 )到达网格中( i,j )位置的最小费用。

( 2 )状态方程:易知每次只需往下或往右走通行费最少,故易得dp [ i ][ j ] = min ( dp [ i-1 ] [ j ] , dp [ i ] [ j-1 ] ) + cost [ i ] [ j ] ,其中 cost [ i ] [ j ] 是[ i , j ]位置的费用。

( 3 )边界条件:起点dp [ 0 ] [ 0 ]的费用为 cost[ 0 ] [ 0 ];

                        第一行和第一列需要根据前一个位置的累计通行费加此处通行费来初始化,比如第一行: dp [ 0 ][ j ] = dp [ 0 ] [ j-1 ]  + cost [ 0 ] [ j ] ,j>=1;

                        其余位置根据状态方程来填充。

( 4 )时间、空间复杂度分析:时间复杂度:由于每个网格点都需要计算一次,且每个点需要从其上方、左方获取值,所以时间复杂度为O ( N ^ 2 )

                                              空间复杂度:需要一个NxN的二维数组来存储到达每个点的最小费用,所以空间复杂度为O ( N ^ 2 )。

2. 结合本章的学习,总结你对动态规划法的体会和思考

动态规划问题一般有最优子结构,这让我们可以通过把整个问题分解成多个子问题、解决子问题、找到子问题的最优解,得到整个问题的最优解。

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

434

社区成员

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

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