算法设计与分析:动态规划 - 矩阵链式相乘问题

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

最优化问题

什么是最优化问题?考虑一个问题,包含一个目标函数,其输入是可行解(可行解由问题的约束规定),输出是可行解的质量刻画(可行解是否足够好),一般求最小或最大。

如一个简单的高中数学问题,已知 x 1 + x 2 + x 3 = 10 , x 1 , x 2 , x 3 ∈ N + , 求 g ( x 1 , x 2 , x 3 ) = x 1 x 2 x 3 的 m a x x_1+x_2+x_3=10,x_1,x_2,x_3\in N^+,求g(x_1,x_2,x_3)=x_1x_2x_3的max x1+x2+x3=10,x1,x2,x3N+,g(x1,x2,x3)=x1x2x3max,在这个问题中目标函数是 g g g,约束条件是为正整数与和为10,所有满足约束条件的 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3都是可行解,但使得 g g g最大的可行解为最优解,最优化问题就是找这种最优解。

动态规划则十分适合用于处理这类问题

分治与动态规划

基于以前的分治思想,如果将分治应用于最优化问题,与原始相比,有以下两点不同:

  • 将原问题分解为相似子问题
    在不知道如何分解才能获得最优的情况下,我们不能像以前一样简单地按下标、值或者区域划分,必须要枚举所有可能的划分方案,通过比较获得最优
  • 用子问题的解组成原问题的解
    不像以往直接将子问题的可行解组合,这里需要通过子问题的最优解组合得到原问题的最优解

假设我们能够做到将子问题的最优解组合成原问题的最优解(最优子结构性质),那么就可以应用分治的思想将一个复杂问题的最优化转换成简单小问题的最优化,实现问题的解决。这种方法就是动态规划。

多步决策过程

动态规划方法适用于可以描述为多步决策过程的最优化问题。多步决策要求完整解能够被一步步构建出来。

这里以著名的背包问题为例,给你一个容量为C的背包,现在有一些财宝可供你带走,这些财宝的价值 v v v和对应占用空间 c c c由一个集合给出 { ( v 1 , c 2 ) , ( v 2 , c 2 ) , . . . , ( v n , c n ) } \{(v_1,c_2),(v_2,c_2),...,(v_n,c_n)\} { (v1,c2),(v2,c2),...,(vn,cn)},问你该如何选择,才能让获得的价值最大?

我们将每一次选择的过程看作一次决策,一共可以进行k次决策(直到背包容量无法再放下新的财宝)。这就是一个典型的多步决策过程。我们用矩阵链式相乘问题来引入动态规划的应用。

矩阵链式相乘问题

问题描述与分析

  • 给定n个矩阵,求 A 1 A 2 . . . A n A_1A_2...A_n A1A2...An,其中 A i A_i Ai的规模是 p i − 1 p_{i-1} pi1行, p i p_i pi
    考虑最简单的做法,就是矩阵从左到右一个个乘过去。但实际上矩阵的乘法满足结合律,我们可以先乘前面的相邻矩阵,也可以先乘后面的相邻矩阵。下面是一个计算例子:
    A 1 = [ 1 2 ] A 2 = [ 1 2 3 1 2 3 ] A 3 = [ 1 2 3 4 1 2 3 4 1 2 3 4 ] A_1 =\left [ \begin{matrix} 1 & 2 \end{matrix} \right ] A_2 = \left [ \begin{matrix} 1 & 2 & 3 \\ 1 & 2 & 3 \\ \end{matrix} \right ] A_3 = \left [ \begin{matrix} 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4\\ 1 & 2 & 3 & 4 \end{matrix} \right ] \\ A1=[12]A2=[112233]A3=111222333444
    计算 A 1 A 2 A 3 A_1A_2A_3 A1A2

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值