长生栈 长生栈
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Living Team

编程技术分享
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 编程语言

  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
    • Leetcode-46-全排列
    • Leetcode-78-子集
    • Leetcode-90-子集 II
  • 计算机组成原理

  • 操作系统

  • 计算机网络

  • 数据库

  • 设计模式

  • 基础
  • 数据结构和算法
DC Wang
2022-05-06

动态规划算法原创

# 四大基础算法之动态规划算法

和分治法一样,动态规划是通过组合自问难题的解去解决整个问题的。分治法是指将问题划分成一些独立的子问题,递归地求解各子问题,然后合并各子问题的解而得到原问题的解。与此不同,动态规划适用于子问题不是独立问题的情况,也就是各子问题包含公共的子子问题。在这种情况下,用分治法则会做许多不必要的工作,即重复的求解公共的子子问题。动态规划算法对子子问题只求解一次,并将其结果保存在一张表中。从而避免每次遇见子子问题都要重新计算答案。

动态规划通常用于最优化问题。此类问题可能有很多可行解。每个解有一个值,而我们希望找出具有最优(最大或最小)值的解。称这样的解为该问题的“一个”最优解(而不是“确定的”最优解),因为可能存在多个取最优值的解。

动态规划算法的设计可以分为如下4个步骤:

  1. 描述最优解的结构。
  2. 递归定义最优解的值。
  3. 按自底向上计算最优解的值。
  4. 由计算结果构造一个最优解。

第1~3步构成了问题的动态规划解的基础。第4步在只要求计算最优解的值时可以略去。如果明确要做第4步,则有时需要在第3步的计算中记录一些附加信息,使构造一个最优解变得容易。

编辑 (opens new window)
#算法#动态规划
上次更新: 2022/10/03, 09:24:26
全排列算法实现
Leetcode-46-全排列

← 全排列算法实现 Leetcode-46-全排列→

最近更新
01
Janus-Pro部署和使用
06-07
02
YOLO部署和微调
06-07
03
MobileNet部署和微调
06-07
更多文章>
Theme by Vdoing | Copyright © 2019-2025 DC Wang All right reserved | 辽公网安备 21021102001125号 | 吉ICP备20001966号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式