当前位置: 首页 > news >正文

第十七次博客打卡

今天学习的内容是动态规划算法。

 动态规划算法(Dynamic Programming,简称 DP)是一种通过将复杂问题分解为更小的子问题来求解的算法思想。它主要用于解决具有重叠子问题和最优子结构特性的问题。

 

 

一、动态规划的基本概念

 

 

1. 最优子结构

 

  一个复杂问题的最优解可以由其子问题的最优解组合而成。换句话说,问题的最优解包含其子问题的最优解。例如,在背包问题中,如果一个物品被选择放入背包,那么剩余容量下的最优解就是子问题的最优解。

 

2. 重叠子问题

 

  在求解过程中,相同的子问题会被多次计算。动态规划通过存储这些子问题的解(通常使用一个表格),避免重复计算,从而提高效率。例如,在计算斐波那契数列时,`F(n) = F(n-1) + F(n-2)`,如果不使用动态规划,会重复计算很多子问题。

 

 

二、动态规划的解题步骤

 

 

1. 定义状态

 

 状态是动态规划的核心,它表示问题的某个阶段的解。状态的定义需要满足两个条件:能够唯一表示问题的子问题,并且能够通过状态之间的关系推导出最终解。

 

2. 状态转移方程

 

 状态转移方程描述了状态之间的关系,即如何从已知的状态推导出新的状态。这是动态规划的关键部分。

 

3. 初始化

 

  确定动态规划的初始化。

经典问题

1.最长递增子序列(LIS)

 

• 给定一个序列,求其最长递增子序列的长度。例如,对于序列`[10, 9, 2, 5, 3, 7, 101, 18]`,最长递增子序列是`[2, 3, 7, 18]`,长度为 4。

 

• 状态定义:`dp[i]`表示以第`i`个元素结尾的最长递增子序列的长度。

 

• 状态转移方程:

\[

dp[i]=\max{0\le j<i\text{且}a_j<a_i}(dp[j]+1)

\]

其中,`a`是输入序列。

 

• 初始化:`dp[i] = 1`(每个元素自身可以构成长度为 1 的递增子序列)。

 

• 计算顺序:从`i = 0`到`n - 1`。

 

动态规划的优化技巧

 

 

1. 空间优化

 

• 在许多情况下,可以将二维动态规划表优化为一维数组。例如,在背包问题中,如果只关心最终结果,可以将`dp[i][j]`优化为`dp[j]`,通过从后向前更新`dp[j]`来避免覆盖问题。

 

2. 二分查找优化

 

• 在某些动态规划问题中,可以结合二分查找来优化状态转移。例如,在最长递增子序列问题中,可以使用二分查找来快速找到合适的插入位置,从而将时间复杂度从\(O(n^2)\)优化到\(O(n\log n)\)。

 

3. 滚动数组

 

• 当状态转移只依赖于前几行时,可以使用滚动数组来减少空间复杂度。例如,在二维动态规划中,如果状态转移只依赖于前一行,可以只使用两个一维数组交替更新。

 

动态规划是一种强大的算法思想,通过合理定义状态和状态转移方程,可以高效地解决许多复杂问题。

相关文章:

  • MySQL 从入门到精通(六):视图全面详解 —— 虚拟表的灵活运用
  • vue开发用户注册功能
  • JVM 数据区域
  • 微服务6大拆分原则
  • Linux 下 Java 部署环境搭建与项目部署详细步骤
  • PyTorch 线性回归模型构建与神经网络基础要点解析
  • 【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路
  • 十六、统一建模语言 UML
  • cdn 是什么?
  • AIGC时代大模型幻觉问题深度治理:技术体系、工程实践与未来演进
  • LSP里氏替换原则
  • 全息美AISEO引领未来智能营销新趋势
  • 关键点检测--使用YOLOv8对Leeds Sports Pose(LSP)关键点检测
  • Kubernetes生产实战(十六):集群安全加固全攻略
  • 协议路由与路由协议
  • 数据库索引详解:原理 · 类型 · 使用 · 优化
  • 流式数据(Streaming Data)和非流式数据(Batch Data)区别、使用场景、优化-来自前端的浅解
  • Python常见面试题
  • AST(抽象语法树)与 HBO(基于历史的优化)详解
  • 单片机-STM32部分:11、ADC
  • 泰特现代美术馆25年:那些瞬间,让艺术面向所有人
  • 长期对组织隐瞒真实年龄,广元市城发集团原董事韩治成被双开
  • 青年与人工智能共未来,上海创新创业青年50人论坛徐汇分论坛举办
  • 马克思主义理论研究教学名师系列访谈|董雅华:让学生感知马克思主义理论存在于社会生活中
  • 河南省平顶山市副市长许红兵主动投案,接受审查调查
  • 趣看 | 五一黄金周:你拍风景,拍风景的人在拍你