【算法设计与分析】动态规划设计思想介绍

本文介绍动态规划算法的核心概念,包括最优子结构性质和重叠子问题性质。详细讲解了动态规划的设计步骤,并列举了多个经典应用场景,如矩阵连乘、最长公共子序列等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态规划

Dynamic Programming


1.学习要点:

动态规划算法的基本要素

(1)最优子结构性质
(2)重叠子问题性质

设计动态规划算法的步骤。

(1)找出最优解的性质,并刻划其结构特征。
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造最优解。

2.经典应用范例

(1)矩阵连乘问题;
(2)最长公共子序列;
(3)最大子段和
(4)凸多边形最优三角剖分;
(5)多边形游戏;
(6)图像压缩;
(7)电路布线;
(8)流水作业调度;
(9)背包问题;
(10)最优二叉搜索树。

3.算法总体思想

①动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题

在这里插入图片描述

②但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。

在这里插入图片描述

③如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。
在这里插入图片描述

4.动态规划基本步骤

找出最优解的性质,并刻划其结构特征。

递归地定义最优值。

以自底向上的方式计算出最优值。

根据计算最优值时得到的信息,构造最优解。

步骤(1)~(3)是动态规划算法的基本步骤。在只需要求岀最优值的情形,步骤(4)可以省略,步骤(3)中记录的信息也较少;若需要求出问题的一个最优解,则必须执行步骤(4),步骤(3)中记录的信息必须足够多以便构造最优解。

5.动态规划问题的特征

动态规划算法的有效性依赖于问题本身所具有的两个重要性质:最优子结构性质和子问题重叠性质。

(1) 最优子结构:当问题的最优解包含其子问题的最优解时,称该问题具有最优子结构性质。

(2) 重叠子问题:在用递归算法自顶向下解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只解一次,而后将其解保存在一个表格中,在以后尽可能多地利用这些子问题的解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值