我在找到兑换货币问题的良好解决方案时遇到了问题。对于所有情况,我都花了一整天的时间来思考这个问题。
说明:
我们有一些汇率汇率,如......
此费率不是真实的,可能每天更改一次。利率的数量可能与世界上的货币一样大(约150)。
我们被要求将任何货币的金额转换为另一种货币,我们应该给出答案(如果可以的话)给出兑换货币汇率。
最好的情况是,如果您直接交换(显示在列表中),在更糟糕的情况下,您应该以中间交换率跳转很多次。
注意:给定EUR到USD,您可以假设uSD到EUR是相反的。
我希望问题很清楚。
任何想法??
答案 0 :(得分:2)
构造一个加权有向图,每个顶点都标有货币名称。如果您有货币A到B的汇率,请添加一个边(A,B),并将汇率作为权重。
如果你有(A,B)边但没有(B,A)边加上(B,A)边,权重1除以(A,B)权重。
要将货币C转换为D,请应用最短路径算法以查找从C的顶点到D的顶点的最低权重路径。如果没有这样的路径,则无法进行转换。请参阅directed graph with non-negative weights。
=============================================== ========================================
这不一定能找到最佳汇率,因为汇率会倍增。可以通过使用汇率的对数作为边权重,并使用可以处理负边权重的最短路径算法来找到最佳利率。
要找到交换路径最少的交换路径,请将与直接交换匹配的每个边缘赋予权重1.
答案 1 :(得分:1)
我很同意帕特里夏。但这个问题肯定与避免套利有关。因此,它归结为从货币A到货币B的“最短路径”(最低成本)。最短路径算法得到很好的研究和记录。在cormen中查找它们并且可以看到它们。