Арбитраж - это процесс использования расхождений в валютных ценностях для получения прибыли.
Рассмотрим человека, который начинает с некоторой суммы валюты X, проходит через ряд обменов и, наконец, заканчивается большим количеством Х (чем он первоначально имел).
Учитывая n валют и таблицу (nxn) обменных курсов, придумайте алгоритм, который человек должен использовать, чтобы использовать максимальную прибыль при условии, что он не выполняет один обмен более одного раза.
Я подумал о таком решении:
- Используйте модифицированный алгоритм Dijkstra, чтобы найти путь к самому длинному продукту с одним источником.
- Это дает самый длинный путь продукта от исходной валюты к каждой другой валюте.
- Теперь перебираем каждую валюту и умножаемся на максимальный продукт до сих пор,
w(curr,source)
(вес от края до источника). - Выберите максимум всех таких путей.
Пока это кажется хорошим, я все еще сомневаюсь в правильности этого алгоритма и полноте проблемы (т.е. проблема NP-Complete?), поскольку она несколько напоминает проблему коммивояжера.
Ищите свои комментарии и лучшие решения (если они есть) для этой проблемы.
Спасибо.
EDIT:
Поиск Google по этой теме привел меня к этому здесь, где обнаружено обнаружение арбитража, но обмен для максимального арбитража - нет. Это может служить ссылкой.