我正在使用我书中的以下练习:
最短路径算法可以应用于货币交易。让 c 1 , c 2 , . . . , c n是各种货币;例如,c 1可能是美元、c 2英镑和 c 3里拉。对于任何两种货币 c i和 c j,都有一个汇率 r i,j;这意味着您可以购买 r i,j个单位的货币 c j来换取一个单位的 c i。这些汇率满足 r i,j · r j,i < 1 的条件,所以如果你从货币单位 c i,将其转换为货币 c j,然后再转换回货币 c i,您最终会得到少于一个单位的货币 c i(差额是交易成本)。(a) 为以下问题给出一个有效的算法:给定一组汇率 ri ,j和两种货币 s 和 t,找到将货币 s 转换为货币 t 的最有利的货币兑换序列。为了实现这个目标,您应该用边长为实数的图形来表示货币和汇率。
所以基本上我们想要做的不是最小化,我们需要最大化利润。因此,我们需要找到从 s 到 t 的最长路径。我们被断言存在从 s 到 t 的最短路径。
我想解决这个问题的方法是遵循这个算法:
- 否定图的所有边
- 运行有向无环图的最短路径算法。
我相信这会奏效,但我不确定。在谷歌上,我发现了一些解决方案,其中包括另一个步骤:使用对数将比率的乘法转换为加法。我认为这一步对她来说是不必要的,但我仍然不确定。