首页 > 其他分享 >动态规划总结

动态规划总结

时间:2022-12-07 17:46:56浏览次数:35  
标签:总结 状态 实现 问题 动态 规划 DP

动态规划算法

动态规划算法,就是挖掘问题的条件,找到问题中各个状态的联系,通过列出状态转移方程,实现各个状态的计算。

动态规划解题思路

动态规划解题的核心是找到状态转移方程,如何表示状态,如何求解状态就是DP问题的难点。下面给出动态规划解题的一般思路:

集合的强调

这个思路特地强调了集合这个概念,与传统的DP思路略有不同,一些问题求解时可能不需要强调集合这个概念,就可以顺利得到状态转移方程,但有一些较为复杂的问题如果从集合的角度来思考,就更容易进行状态的划分与计算。

状态划分的技巧

经验上讲,我们通常对达成状态的最后一步进行划分。

DP的难点

上面,我们基于经验总结了DP问题的一般解决思路,但实际上都不会如此顺利,可能存在以下问题:

  • 无法找到合适的状态表示方法
  • 当前状态表示的方法无法进行有效的状态划分,无法计算

所以DP问题非常灵活,不存在模板,只能不断积累经验,碰到以上问题可以尝试着迁移其它问题的状态表示和状态划分方法。

动态规划的类型

动态规划总结起来共以下几种类型:

  • 线性DP
  • 区间DP
  • 计数类DP
  • 数位统计DP
  • 状态压缩DP
  • 树形DP

每类问题的处理存在一些共性,但笼统的总结其特点没有意义,Blog中对这些类型的题目均有记录,时常翻看才能提高对DP的掌握。

动态规划的实现

动态规划算法有两种实现:

  • 循环实现各种状态的计算
  • 记忆化搜索,递归的实现状态的计算

前者实现的速度一般略快于后者,但有时采用后者可以更加清晰简洁的实现算法,应该结合具体问题,选择合适的实现方式。

标签:总结,状态,实现,问题,动态,规划,DP
From: https://www.cnblogs.com/kongaobo/p/16963799.html

相关文章

  • 浅谈电动汽车充电桩建设现状及规划方案
    摘要:为实现对电动汽车充电桩的优化建设,对其建设现状及规划方案展开研究。当前充电桩建设存在建设区域分布不均匀、社会公共停车场充电费用较高和部分充电设施维护不及时等......
  • vue父子组件的传值总结
    情况一:父组件给子组件传值方法,使用props父页面:parent.vue<template><divclass="sidebar_contianer"><sidebar-item:routerData="transmitData"></sideb......
  • Python模块pathlib操作文件和目录操作总结
    前言目前大家常用的对于文件和操作的操作使用 ​​os.path​​ 较多,比如获取当前路径​​os.getcwd()​​,判断文件路径是否存在​​os.path.exists(folder)​​ 等等。......
  • MPLS-VPN虚拟专用网络组网的规划与实现
    信息时代的到来,数据通信技术得以应用于大规模的商业活动。当前主流的数据通信组网方式包括:专线 组网、互联网虚拟专用网络VPN组网等。专线组网主要是通过同步数字传......
  • 动态代理
    概述什么是动态代理使用JDK的反射机制,创建对象的能力,创建的是代理类的对象,不用自己创建类文件,不用写Java文件。动态:在程序执行时,调用JDK提供的方法才能创建代理......
  • 动态SQL遇到的问题
    看图    查不出来任何数据因为判断有问题修改方法如下: ......
  • android nativate 动态注册 静态注册
    说明:在java函数的入口比较容易分析,把activity的生命周期或者关键函数通过放在so层,分析起来就困难多了 1、在MainActivity中packagecom.demo.nativate;import......
  • 项目——基于GPS的种树机器人路径规划实战及详解
    项目——基于GPS的种树机器人路径规划实战及详解​​一、前言​​​​二、设计思路​​​​1、坐标系的转换​​​​2、输入的区域摆法及关系式​​​​3、设计流程图​​​......
  • Java通过JNA方式调用DLL(动态链接库)
    Java通过JNA方式调用DLL(动态链接库)1.JNA简单介绍先说JNI(JavaNativeInterface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进......
  • 打家劫舍(一) 动态规划
        import java.util.*;public class Solution {    /**     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 ......