【问题标题】:Dynamic Programming - Finding Maximum Profit动态规划 - 寻找最大利润
【发布时间】:2013-07-10 18:21:10
【问题描述】:

我是动态编程的新手。所以,我想找到最大的利润。我不认为我在做什么是正确的。我不明白 k 转换的用途。在给定的示例中,有 3 种货币,因此有 3 次转换。有人可以给我更多关于如何解决这个问题的想法吗?

【问题讨论】:

    标签: matrix dynamic-programming


    【解决方案1】:

    首先,让我们考虑一下有多少种货币交易。如果您有三种货币(我们称它们为英镑、法郎和马克),您就有六种可能的类型货币交易:英镑兑马克、马克兑英镑、英镑兑法郎、法郎兑英镑、法郎兑英镑马克和马克到法郎。

    但是就你的问题而言,当他们说你有 k 种货币交易时,他们的意思是你可以从某种货币开始并进行一系列 k 种货币交易。你的工作是找出哪 k 笔交易会带来最大的利润。因此,例如,如果您有三种货币,但 k=1,并且您被告知以英镑开头,那么您的任务很简单:决定是英镑兑法郎更好,还是英镑兑马克更好。如果 k=2,你有更多的选择,等等。

    将其视为加权有向图可能会有所帮助,其中货币是节点,弧线由汇率加权。然后,您可以从节点 i 开始寻找长度为 k 的图形中最有利可图的路径来思考问题。

    以这种方式思考它也会向您展示您表达中的问题,它应该看起来像沿着图表的路径,而不是您所拥有的。您可能还考虑使用对数的某些属性,将其从乘法问题转变为加法问题。

    最后,图结构上的动态编程通常涉及从长度为 n 的解构建长度为 n+1 的解,因此您可能应该首先考虑可能的最小问题,以及它与第二小的问题的关系问题等。

    【讨论】:

    • 最赚钱的解决方案是图中最长的路径还是最短的路径?
    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2012-12-19
    • 2021-12-23
    相关资源
    最近更新 更多