【发布时间】:2022-01-19 05:29:21
【问题描述】:
如果给我一个包含货币兑换率的数据结构:
与交换价值的货币关系列表。 (印度卢比 - 美元)
那我怎样才能找到从货币1到货币2的最佳汇率呢?
我的思考过程: 方法一:
如果我获取交换值列表并将其转换为图形 - 邻接表和权重列表(因为这似乎是加权图问题),我可以使用 DFS 查找所有可能的路径,然后保留跟踪生成最高汇率的路径(因此我将乘以路径中的每个转化率并将其存储。每当路径生成更好的转化率时,我会更新此变量,因此我有最大值)
请评论此算法的正确性。我的想法正确吗?这会产生正确的结果吗?
我马上看到的一个问题是,这是非常低效的,因为它需要指数级的时间。
方法 2:我可以直接否定所有转换并使用 Bellman Ford 吗?因为 Bellman Ford 用于在加权图中找到成本最低的路径。
谢谢。任何指导将不胜感激
【问题讨论】:
-
您没有指定是否有 DAG,但如果有,则有针对该特殊情况的有效算法,即线性时间运行的算法。
-
还要小心贝尔曼福特方法。只有可以重用边缘才是正确的,我怀疑考虑到您要解决的问题,您只想遍历边缘一次。在这种情况下,您的问题是 NP 难题:en.wikipedia.org/wiki/Longest_path_problem