Algorithm 找到最有利的货币兑换顺序

Algorithm 找到最有利的货币兑换顺序,algorithm,shortest-path,directed-acyclic-graphs,Algorithm,Shortest Path,Directed Acyclic Graphs,我正在进行我书中的以下练习: 最短路径算法可以应用于货币交易。让c1,c2,cn可以是多种货币;例如,c1可能是美元,c2磅,c3里拉。对于任意两种货币ci和 cj,有一个汇率ri,j;这意味着您可以购买货币单位为cj的ri,j 交换一个单位的ci。这些汇率满足ri,j·rj,i

我正在进行我书中的以下练习:

最短路径算法可以应用于货币交易。让c1,c2,cn可以是多种货币;例如,c1可能是美元,c2磅,c3里拉。对于任意两种货币ci和 cj,有一个汇率ri,j;这意味着您可以购买货币单位为cj的ri,j 交换一个单位的ci。这些汇率满足ri,j·rj,i<1的条件,因此如果 从货币单位ci开始,将其更改为货币cj,然后再转换回货币 如果是ci,则最终得到的货币ci不到一个单位(差额为交易成本)。 (a) 给出以下问题的有效算法:给定一组汇率ri,j, 和两种货币s和t,找出最有利的货币交换顺序 将货币s转换为货币t。为了实现这一目标,您应该代表货币 通过一个边长度为实数的图来计算


所以我们要做的基本上不是最小化,而是最大化利润。因此,我们需要找到从s到t的最长路径。我们被断言存在从s到t的最短路径

我认为解决这个问题的方法是遵循以下算法:

  • 对图形的所有边求反
  • 对有向无环图运行最短路径算法

  • 我相信这会奏效,但我不确定。在谷歌上,我找到了一些解决方案,其中包括另一个步骤:使用对数将速率的乘法转换为加法。我认为这一步是没有必要的,但我仍然不确定。

    停止尝试使用Google或StackOverflow来寻找解决方案,只是想一想。尽管许多问题可以通过从各种来源收集资源、信息和想法来解决,但有些问题却无法解决。让你的电脑进入睡眠状态。找个安静的地方。想一想,直到你有了主意。在废纸或白板上画一个样本图。试试看。看看它是否有效。如果它不考虑为什么不,试着找到一个新的想法。如果是这样的话,试着想出一个有效的图,但它不适用。当你确信你有一个适用于所有图形的算法时,你就完成了。仅仅让我们告诉你解决方案,你不会学到很多东西。

    这个
    答案可以有效地附加到太多的SO问题上。我完全同意所表达的意见。