【算法】动态规划——将问题转化为小问题

本文介绍了动态规划的概念及其在背包问题和最长公共子串问题中的应用。通过解决子问题逐步求解大问题,动态规划算法帮助找到最优解。文章详细解析了背包问题的动态规划解决方案,解释了如何填充网格以找到最大价值,并探讨了增加商品、改变排列顺序等情况下解题策略的变化。此外,文章还讨论了最长公共子串的动态规划网格和计算公式,以及动态规划在生物科学、文本比较等多个领域的应用。

目录

1. 背包问题

1.1 简单算法

1.2 动态规划

2. 背包问题FAQ

2.1 再增加一件商品将如何呢?

2.2 行的排列顺序发生变化时结果将如何?

2.3 可以逐行而不是逐列填充网格吗?

2.4 增加一件更小的商品将如何呢?

2.5 可以偷商品的一部分吗?

2.6 旅游行程最优化

2.7 处理相互依赖的情况

2.8 计算最终的解时会涉及两个以上的子背包吗?

2.9 最优解可能导致背包未装满吗?

3. 最长公共子串

3.1 绘制网络

3.2 填充网格

3.3 最长公共子序列

3.4 动态规划的应用

4. 总结


1. 背包问题

假设你是个小偷,背着一个可装4磅重东西的背包。你可以盗窃的商品有如下三件。为了让盗窃的撒谎给你品价值最高,你该选择哪些商品?

1.1 简单算法

最简单的算法如下:尝试各种可能的商品组合,并找出价值最高的组合。

这样可行,但速度非常慢。在有3件商品的情况下,你需要计算8个不同的集合;有4件商品时,你需要计算16个集合。每增加一件商品,需要计算的集合数都将  !这种算法的运行时间为O(2ⁿ),真的是慢如蜗牛。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值