动态规划入门

【算法】动态规划:适合新手的动态规划入门常见题目详解 动态规划一、什么是动态规划1.官方定义2.动态规划的特点二、题目练练手1.斐波那契数列 一、什么是动态规划 1.官方定义 动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即... 阅读详情
(1)用 DP 做的题大多数返回值是int/boolean, 求max/min,不能打乱原来输入顺序。
(2)动态规划有两个重要定义,一个叫 "optimal substructure",另一个叫 "overlap subproblem".

各种排序 / Tree 类问题中,都会用到 divide & conquer 的思想,去把问题分成若干个 "disjoint" subproblems,然后递归解决。


"Disjoint" subproblem 在 Tree 类问题上体现的最为明显,左子树是左子树的问题,右子树是右子树的问题。因此 Tree 类问题上,更多的是解决“disjoint subproblem 的整合” 还有 “非连续 subproblem 的处理”。

而动态规划的中心思想是,面对 search tree 里都是 "overlap subproblem",如何根据问题结构制定缓存策略,避免重叠问题重复计算。

(3) 根据CLRS,动态规划分为两种:
  • top-down with memoization (递归记忆化搜索)
    • 等价于带缓存的,搜索树上的 DFS
    • 比较贴近于新问题正常的思考习惯
  • bottom-up (自底向上循环迭代)
    • 以 "reverse topological order" 处理
    • 每个子问题下面依赖的所有子问题都算完了才开始计算当前
    • 一般依赖于子问题之间天然的 "size" 联系
两种解法 big-O 时间复杂度一致,bottom-up 的 constant factor 小一些。

(4) 动态规划的另一个要素是 "optimal substructure":
  • A problem is said to have optimal substructure if an optimal solution can be constructed efficiently from optimal solutions of its subproblems.
  • optimal substructure 指,一个问题的最优解,可以由其子问题的最优解构造出来。


动态规划入门篇 大家好,我是耀星,相信大家在学习算法时会遇到很多的问题,当然我在学习时也会遇到问题, 动态规划与递归的关系 动态规划和递归非常的相似,都是通过组合子问题的解来求解原问题,且一般递归的问题都可以转化为动态规划,咱们举个简单的例子👇斐波那契数列。 第i个斐波那契数列值F[i]=F[i-1]+F[i-2],如果我们想知道F[n],那么我们就必须要知道F[n-1]和F[n-2]的值,如果采用递归的思路,将F[n]拆分成求F[n-1]+F[n-2],将原问题拆分成子问题求解,不同的子问题又有公... 阅读详情

相关推荐

动态规划从入门到精通(一)-入门篇

大三的春招,由于自己的不足,过得十分艰难。在各大公司的笔试题中,动态规划是一个必考点。突然冒出一个想法,写一个“动态规划从入门到精通”系列,与各大网友一起交流学习。 学习动态规划,愚认为,就是解决以下的三个问题: 什么是动态规划?什么时候要用动态规划?怎么使用动态规划? 让我们一个一个来解决! 1、什么是动态规划? 这里参考百度百科,动态规划是求解决策过程最优化的数学方法。把多阶段过程转...

食鱼酱的博客 2万+

动态规划之重叠子问题属性(Overlapping Subproblems Property)

Dynamic Programming is an algorithmic paradigm that solves a given complex problem by breaking it into subproblems and stores the results of subproblems to avoid computing the same results again. Foll

K.Sun 4281

信奥赛CSP小学五年级动态规划入门

小明有一个存钱罐,每天可以存1元或2元,他想知道存满5元有多少种不同的存法。

u011322421的博客 1346

动态规划

动态规划 example1 Fibonacci 1 2 3 4 5 6 7 8 1 1 2 3 5 8 13 21 … 1 n=1,2 fib(n) fib(n) = fib(n-1) + fib(n-2) other // overlap sub-problem fibonacci问题的备忘录模式:保存已经计算出来的答案,无需再重新计算 example2 有八个任务,每个任务只能在指定的时间段做,红色数字代表任务的价值,要求所选的任务时间上不能重叠,求所有任务组合中价值最大的组合 

rabies的博客 287

AHB不对称半桥反激电路设计(三)主要器件参数规格计算

本文介绍了AHB拓扑变压器的设计步骤与核心参数计算,包括主控芯片选择、工作原理分析及参数计算。作者选择DK87XXD集成MOS方案,详细阐述了输入电压范围、反射电压限定、匝比计算、工作频率设定、原副边电流值、电感量计算、磁芯选择、匝数计算、谐振电容设计等关键步骤。通过公式推导与实例计算,展示了150W电源的变压器设计过程,最终确定匝比5.5、原边22匝、副边4匝、电感量200uH等参数。文章还讨论了谐振电容与漏感的关系,为后续调试提供理论基础。该设计方法结合理论分析与工程实践,适用于AHB拓扑电源开发。

【Simon】的博客 3338

PINN——加入物理约束的神经网络

【摘要】 基于物理信息的神经网络(Physics-informed Neural Network, 简称PINN),是一类用于解决有监督学习任务的神经网络,它不仅能够像传统神经网络一样学习到训练数据样本的分布规律,而且能够学习到数学方程描述的物理定律。与纯数据驱动的神经网络学习相比,PINN在训练过程中施加了物理信息约束,因而能用更少的数据样本学习到更具泛化能力的模型。本文主要解析这种神经网络以...

qq_39444290的博客 4585

动态规划(1)总述

1 Dynamic Programming The most widely example we use Dynamic Programming in our life is find the shortest/quickest path between two places.So what is the Dynamic Programming? Dynamic programming

公众号(猴子数据分析) 2978

TypeScript版LangChain环境配置全攻略:从零搭建AI应用开发环境

大语言模型(LLM)作为当前AI应用开发的核心技术,通过API接口为开发者提供了强大的自然语言处理能力。其工作原理基于Transformer架构,通过预训练和微调实现对人类语言的深度理解与生成。在工程实践中,开发者需要将LLM与外部工具、数据源和业务逻辑有效集成,这正是LangChain框架的技术价值所在——它提供了标准化的组件和接口,简化了复杂AI应用的构建流程。应用场景涵盖智能客服、内容生成、数据分析助手等多个领域。本文聚焦于TypeScript/JavaScript生态下的LangChain开发,详细

weixin_29055699的博客 253

两道题学习动态规划

动态规划,是为了解决overlap sub-problem(重叠子问题)。最重要的是状态的定义和状态转移方程的定义,而把状态转移方程确定,一般是最难的一步。 学习动态规划,可以先把递归过程理解清楚,再使用非递归的方法,来求解问题,来避免重复计算。 参考: 正月点灯笼-动态规划 下面是两道例题: 在一个数组arr中,找出一组不相邻的数字,使得最后的和最大。 input arr=1 2 4 1...

weixin_33964094的博客 192

事件相机数据处理实战:从原始事件流到视觉表征的三种核心方法

本文深入探讨了事件相机数据处理的核心环节,即如何将异步、稀疏的原始事件流转换为深度学习模型可处理的视觉表征。文章重点解析了三种核心方法:逐通道累积、体素网格双线性插值和对称累积事件表示,详细阐述了其原理、代码实现、可视化效果及各自的适用场景,为事件相机在目标识别、光流估计等视觉任务中的高效应用提供了实战指南。

read5的博客 439

知识图谱:综述

第一种理解:知识图谱本质上是语义网络。本体论是语义网络中最重要的一个要素。第二种理解:知识图谱也叫做多关系图,由多种类型的节点和多种类型的边组成。课程以第二种理解为主。

u013250861的博客 480

动态规划之最优的子结构属性(Optimal Substructure Property)

原文地址:http://www.geeksforgeeks.org/dynamic-programming-set-2-optimal-substructure-property/ As we discussed in Set 1, following are the two main properties of a problem that suggest that the given

K.Sun 8486

STM32 IIC温湿度传感器(STH45)实验

精度 ΔRH = ±1.0 %RH, ΔT = ±0.1 °C• 平均电流:0.4 μA,空闲电流:80 nA• I2C FM、CRC 校验和、乘法。I2C 地址。• 专利保护选项 [1]、PTFE 膜和可拆卸保护盖• 工作范围:0 …100 %相对湿度,−40…125 摄氏度• 在冷凝环境中功能齐全• 动力加热器,真正的NIST可追溯性• JEDEC JESD47 认证 • 符合 ISO 17025 : 2017 的传感器专用校准证书,3 点温度校准。

baidu_34971492的博客 3075

动态规划「入门」

动态规划入门,介绍基本概念,如何编写好关于动态规划的代码。

shane的日常学习经验 852

Python之abbrobotegm包语法、参数和实际应用案例

`abbrobotegm` 是用于控制 ABB 机器人的 Python 接口包,主要通过 EGM(Externally Guided Motion,外部引导运动)协议与 ABB 机器人控制器进行通信,实现对机器人的实时位置控制、状态监控和运动引导等功能。该包适用于需要将 ABB 机器人与外部系统(如视觉系统、传感器等)集成的场景。

王国平的博客 1255

物联网设备数据是如何流转的:基于EMQX与TDengine的前后端分离项目实践

背景 在我写了TDengine极简实战:从采集到入库,从前端到后端,体验物联网设备数据流转这篇文章后,不少读者朋友评论、私信说可不可以提供代码参考学习下,那必须是可以的。那篇文章主要介绍了数据采集、数据传输、数据转发、数据解析、数据存储、数据查询、数据呈现、数据导出、消息推送的物联网设备数据流程过程,作为体验 TDengine 的极简实战项目,没引入过多的业务设计(复杂功能)以及异步解耦设计(消息中间件)。 在整理代码的过程中,我发现虽然整个项目并不复杂,但是涉及到的技术点较多,有必要对关键的组件进行说明

Heartsuit的博客 9412

动态规划入门题目总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、动态规划是什么?二、解决动态规划问题的主要步骤三、入门题目总结 前言 动态规划是算法中比较难的一类问题,今天在这里整理一下动态规划的入门问题。 一、动态规划是什么? 动态规划往往用来求解最优解。动态规划的问题往往可以分解成多个子问题,先求解子问题,再通过子问题来得到最终问题的答案。乍一看和分治法类似,实际上确实比较类似,但动态规划分解后的子问题之间不是相互独立的,而分治法之间的子问题是相互独立的,如果用分治法去求解动态规.

qq_42148752的博客 373

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

动态规划01 入门知识

参考网址

技术改变世界 139

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C++动态规划入门指南

摘要:动态规划(DP)是一种通过分解重叠子问题来优化计算的算法,具有最优子结构和状态转移方程两个核心特征。其实现包含三个要素:状态定义、状态转移方程和初始条件。文章通过斐波那契数列、爬楼梯和01背包问题等经典案例,展示了DP的实际应用。同时介绍了空间压缩和记忆化搜索等优化技巧,并分析了常见错误。建议从简单问题入手,通过画DP表格和在线练习(如洛谷题库)来提高DP解题能力。

qq_16759367的博客 1237

C++动态规划基础入门

动态规划的本质是把一个复杂的问题分解为多个子问题,保存子问题的解以避免重复计算。通俗地说,就是“记住你已经算过的东西,别重复做傻事”。以上内容适合于初学者和初高中生。

weixin_51623910的博客 870

动态规划——浅谈dp如何入门,以及入门题目(值得收藏,持续更新,已更新01背包)

当然了,这里也有更优化的写法,就是滚动的数组。

cjejwe的博客 2308

LeetCode 动态规划(入门)

Link https://leetcode-cn.com/problems/longest-palindromic-substring/ Description 给定一个字符串sss,找到sss中最长的回文子串。你可以假设sss的最大长度为 1000。 Solution 动态规划入门 Code class Solution { public: string longestPalin...

梧桐 240
上一篇: 回溯和dfs
下一篇: 入门House Robber
michaelbinwang
博客等级 码龄10年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值