动态规划在实际业务中的路径优化应用:从算法到场景

动态规划在实际业务中的路径优化应用:从算法到场景

前言

今天,我们将利用动态规划的思想解决"62. 不同路径 - 力扣(LeetCode)"问题,并探讨这一思路在实际场景中的应用。话不多说,直接进入主题,开始我们的解题之旅吧!

题目描述

⼀个机器⼈位于⼀个 m x n ⽹格的左上⻆ (起始点在下图中标记为 "Start" )。 机器⼈每次只能向下或者向右移动⼀步。机器⼈试图达到⽹格的右下⻆(在下图中标记为 "Finish" )。 问总共有多少条不同的路径?

示例 1: 输⼊:m = 3, n = 7

输出:28

示例 2:

输⼊:m = 2, n = 3

输出:3

解释: 从左上⻆开始,总共有 3 条路径可以到达右下⻆。

  1. 向右 -> 向右 -> 向下
  2. 向右 -> 向下 -> 向右
  3. 向下 -> 向右 -> 向右

示例 3:

输⼊:m = 7, n = 3

输出:28

示例 4:

输⼊:m = 3, n = 3

输出:6

提示:

1 <= m, n <= 100

题⽬数据保证答案⼩于等于 2 * 10^9

思路分析

  1. 确定 dp 数组及其下标的含义:dp(存放每格有多少个到达方法的数组),dp[i][j](到达第 i 行第 j 列有多少种方法)
  2. 递归公式:dp[i][j]=dp[i-1][j]+dp[i][j-1]
  3. 初始化 :dp[0][j]=1,dp[i][0]=1(到第 1 行的所有格子,只有一种方法,就是从最左边过去,同理,到第 1 列的所有格子,也只有)一种方法,即从最上面下去
  4. 遍历顺序:i=0,j=0=>i=m-1,j=n-1 5.** 打印 dp 数组**

伪代码

scss 复制代码
function main(m,n){
    //创建二维dp数组
    var dp=Array.from({ length: m }, () => new Array(n).fill(0));

    //初始化 dp[0][j],dp[j][0]为1
    for(let i=0;i<m;i++)dp[i][0]=1;
    for(let j=0;j<n;j++)dp[0][j]=1;

    //遍历
    for(let i=1;i<m;i++){
        for(let j=1;j<n;j++){
            dp[i][j]=dp[i-1][j]+dp[i][j-1]
        }
    }

    return dp[m-1][n-1]
}

应用场景

不同路径这种思路,在真实场景的应用中,非常广泛。例如:产品组合优化,游戏中的路径选择

产品组合优化

场景描述

投资者通常面对多种资产(如股票、债券、基金等),需要合理分配资金,以在规定的风险水平下实现收益最大化。选择合适的投资路径(即投资分配策略)是一个复杂的问题,因为市场存在多种不确定性。

应用

动态规划可以用来计算在不同市场条件下,投资组合的多种可能配置路径。每种路径对应不同的资产分配方案,考虑到历史数据、风险预期、相关性等因素,评估每条路径的预期收益和风险值。算法通过递归计算,找出最优的投资路径组合。

优势

帮助投资者在复杂的市场环境中做出最优决策,提高投资回报,同时有效控制风险。

回合制游戏中的最优行动路径

场景描述

在回合制策略游戏中(如《火焰纹章》或《XCOM》系列),角色在每回合中有一定的行动步数,选择正确的移动路径决定了角色是否能攻击到敌人、是否暴露在敌人射程内等。

应用

利用动态规划,计算角色的行动步数和移动路径,使得角色在最少的步数内达到有利位置,最大化攻击机会并最小化被攻击风险。

优势

提升游戏的战略深度,玩家可以通过精细的路径规划获得战斗优势。

总结

今天我们一起学习了如何解决最短路径问题,并探讨了它在实际业务场景中的应用。以上就是今天的全部内容了,如有任何错误或不足,欢迎大家留言指正,非常感谢大家的关注与支持!

相关推荐
猿大师办公助手7 分钟前
如何在Chrome最新浏览器中调用ActiveX控件?
前端·chrome
V_fanglue37059 分钟前
qmt量化交易策略小白学习笔记第67期【qmt编程之获取ETF申赎清单】
大数据·前端·数据库·笔记·python·学习·区块链
林啾啾37 分钟前
vue3实现自定义主题色切换功能
前端·vue.js
墨·殇1 小时前
vue2实现提取字符串数字并修改数字样式(正则表达式)
前端·javascript·vue.js
软糖工程0011 小时前
正则表达式【详细解读】
大数据·前端·爬虫·python·学习·正则表达式·数据分析
DngYT1 小时前
vue如何挂载路由
前端·javascript·vue.js
呵呵哒( ̄▽ ̄)"2 小时前
vue.js 展示树状结构数据,动态生成 HTML 内容
开发语言·前端·javascript·vue.js
安冬的码畜日常2 小时前
【CSS in Depth 2 精译_035】5.5 Grid 网格布局中的子网格布局(全新内容)
前端·css·css3·网格布局·css布局·子网格·subgrid
JuneTT2 小时前
uniapp 常用高度状态栏,导航栏,tab栏,底部安全高度
前端·javascript·uni-app
i80132 小时前
delphi制作漂亮的农历窗体(IntraWeb+Layui的完美结合)
前端·javascript·layui