#algorithm #logic
#алгоритм #Логические
Вопрос:
мне нужно сделать валютный конвертор.
Предположим, у вас есть список объектов с денежной валютой и его значением в другом. например:
From To Value
USD-CAN 0,1
CAN-USD 0,4
USD-AUD 0.5
AUD-USD 0,6
AUD-EUR 1
EUR-AUD 3
И вам нужно преобразовать список значений из валюты деньги в евро, например
1,22 USD
1,4 CAN
5 AUD
Есть некоторые значения, которые он конвертирует напрямую (AUD-EUR), а другие нет (USD-EUR, CAN-EUR).
Ведьма, это лучший способ или алгоритм, чтобы сделать это так ..?
Ответ №1:
Постройте ориентированный граф, где узлы являются валютами, а ребра — прямыми преобразованиями. Найдите кратчайший путь (ы) от исходной валюты к целевой валюте.
Вы можете установить веса ребер как log (коэффициент конверсии), чтобы найти наилучший путь конвертации (используя log для добавления весов вместо их умножения).
Вы даже можете попытаться обнаружить арбитраж с 2 пунктами, арбитраж с 3 пунктами (посмотрите здесь, например) или арбитраж с n пунктами (посмотрите здесь).
Комментарии:
1. Хороший ответ. Спасибо, что указали на треугольный арбитраж. Я знал об этой концепции, но не знал для нее технического термина.