算法—动态规划学习笔记(1)入门

这篇博客介绍了动态规划的基本概念,将其比喻为高中数学难题,强调其在求解最优化问题中的应用。通过讲解Coin-row Problem,阐述了动态规划的阶段划分、状态转移方程和求解步骤,并通过实例解析了状态转移的过程,为读者提供了动态规划的入门级理解。
摘要由CSDN通过智能技术生成

算法—动态规划学习笔记(1)入门

说实在的,搞算法以来,动态规划给我的感觉就像是高中数学倒数第三和第二道压轴题——老师讲了n多遍,你也知道要考啥(圆锥曲线和导数),基本原理也都懂。但是一到考试,只要稍稍变形,就不会了(说的就是本蒟蒻了,高考数学123,两道压轴题基本是空白)。

动态规划到底是什么

先来看一下百度百科的定义:

动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。

也就是说,从本质上说,动态规划是一种数学统筹方法。不过由于易于用程序实现,且经常与其他算法问题相结合,因此也作为计算机算法分析与设计的一个主要内容。

那么,为什么叫动态规划呢?

规划的话,好理解,即对一个问题求最优解;那么动态呢?意思是这个问题中会有很多个转态,其中一个状态下便是整个问题的最优解。

动态规划的求解步骤

总得来说,动态规划分为三个步骤(当然也有人说四个步骤,且每个步骤说法都不一定一致):
1)阶段划分;

2)找出状态转移方程;

3)求解最优解。

是不是感觉说了通废话?确实如此,毕竟还没写代码不是吗?现在就以一个经典、简单的dp问题来入门:

问题(1)Coin-row Problem

There is a row of n coins whose values are some positive integers c₁, c₂,…,cn, not necessarily distinct. The goal is to pick up the maximum amount of money subject to the constraint that no two coins adjacent in the initial row can be picked up.

描述:有n个硬币&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值