Graph search algorithm for finding cycle with largest end result Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Does Dijkstra's algorithm work when I multiply weights of successive nodes?In search of a symmetric homogeneous graph with a pivotal originfinding graph that not have euler cycleWhat is the maximum number of cycles there can be in a graph with $x$ edgesOptimization Algorithm for Combining Nodes on a GraphFinding the maximum weighted path in a directed cyclic weighted graph with probabilities on edgesExercises about degrees and lengths of graphsFinding Largest Graph with $n$ Vertices and Diameter $neq$ 1Path Property of Directed Acyclic GraphsWeighted digraph with AND-OR vertices, search algorithm - independent solution from a vertex for which each involved vertex has same sub-solution?
Should I use a zero-interest credit card for a large one-time purchase?
Is the Standard Deduction better than Itemized when both are the same amount?
Why is my conclusion inconsistent with the van't Hoff equation?
51k Euros annually for a family of 4 in Berlin: Is it enough?
Generate an RGB colour grid
How to tell that you are a giant?
Single word antonym of "flightless"
What does an IRS interview request entail when called in to verify expenses for a sole proprietor small business?
Short Story with Cinderella as a Voo-doo Witch
Why are there no cargo aircraft with "flying wing" design?
How can I make names more distinctive without making them longer?
How widely used is the term Treppenwitz? Is it something that most Germans know?
What exactly is a "Meth" in Altered Carbon?
Apollo command module space walk?
Seeking colloquialism for “just because”
2001: A Space Odyssey's use of the song "Daisy Bell" (Bicycle Built for Two); life imitates art or vice-versa?
Is it true that "carbohydrates are of no use for the basal metabolic need"?
What is the meaning of the new sigil in Game of Thrones Season 8 intro?
Abandoning the Ordinary World
How to react to hostile behavior from a senior developer?
Identify plant with long narrow paired leaves and reddish stems
English words in a non-english sci-fi novel
List *all* the tuples!
What does this icon in iOS Stardew Valley mean?
Graph search algorithm for finding cycle with largest end result
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Does Dijkstra's algorithm work when I multiply weights of successive nodes?In search of a symmetric homogeneous graph with a pivotal originfinding graph that not have euler cycleWhat is the maximum number of cycles there can be in a graph with $x$ edgesOptimization Algorithm for Combining Nodes on a GraphFinding the maximum weighted path in a directed cyclic weighted graph with probabilities on edgesExercises about degrees and lengths of graphsFinding Largest Graph with $n$ Vertices and Diameter $neq$ 1Path Property of Directed Acyclic GraphsWeighted digraph with AND-OR vertices, search algorithm - independent solution from a vertex for which each involved vertex has same sub-solution?
$begingroup$
I have a directed graph where the vertices represent Forex currencies, and the edges represent the ratio of the projecting currency to the projected currency. For example:
$$E(USD, EUR) = 0.91$$
$$E(EUR, USD) = 1.13$$
$$E(EUR,YEN) = 126.69$$
$$E(YEN,USD) = 0.0091$$
If I wanted the value of $1.50 USD in EUR, I would calculate $1.50*0.91$, and if I wanted the value of €1.50 EUR in USD, I would calculate $1.50*1.13$.
Since most pairs of vertices will have two edges between them, with one going each way, the graph has cycles. What I want to be able to do is find all cycles in the graph that result in a value larger than the initial state. This process is known as arbitrage.
So, say I have $1 USD. I want to evaluate all possible paths in the graph that would start at $V(USD)$, end at $V(USD)$, and have the end value greater than or equal to the start value. For example:
$$$1 rightarrow €0.91 rightarrow ¥115.2879 rightarrow $1.049$$
This example starts and ends at the same vertex and has an end value of $1.049, which is greater than the starting value of $1. Thus, it is a valid path.
Is there an algorithm that achieves this type of search behavior? I am familiar with basic path search algorithms, but none of the ones I currently have knowledge of allow searching specifically for cycles, and they all prioritize reducing cost rather than increasing it (although I'm sure this can be solved with a few operator swaps).
discrete-mathematics graph-theory directed-graphs
$endgroup$
add a comment |
$begingroup$
I have a directed graph where the vertices represent Forex currencies, and the edges represent the ratio of the projecting currency to the projected currency. For example:
$$E(USD, EUR) = 0.91$$
$$E(EUR, USD) = 1.13$$
$$E(EUR,YEN) = 126.69$$
$$E(YEN,USD) = 0.0091$$
If I wanted the value of $1.50 USD in EUR, I would calculate $1.50*0.91$, and if I wanted the value of €1.50 EUR in USD, I would calculate $1.50*1.13$.
Since most pairs of vertices will have two edges between them, with one going each way, the graph has cycles. What I want to be able to do is find all cycles in the graph that result in a value larger than the initial state. This process is known as arbitrage.
So, say I have $1 USD. I want to evaluate all possible paths in the graph that would start at $V(USD)$, end at $V(USD)$, and have the end value greater than or equal to the start value. For example:
$$$1 rightarrow €0.91 rightarrow ¥115.2879 rightarrow $1.049$$
This example starts and ends at the same vertex and has an end value of $1.049, which is greater than the starting value of $1. Thus, it is a valid path.
Is there an algorithm that achieves this type of search behavior? I am familiar with basic path search algorithms, but none of the ones I currently have knowledge of allow searching specifically for cycles, and they all prioritize reducing cost rather than increasing it (although I'm sure this can be solved with a few operator swaps).
discrete-mathematics graph-theory directed-graphs
$endgroup$
1
$begingroup$
According to this answer the problem is NP-hard. You can easily reduce your problem to the sum-of-weights problem by taking logarithms.
$endgroup$
– saulspatz
Mar 26 at 17:13
add a comment |
$begingroup$
I have a directed graph where the vertices represent Forex currencies, and the edges represent the ratio of the projecting currency to the projected currency. For example:
$$E(USD, EUR) = 0.91$$
$$E(EUR, USD) = 1.13$$
$$E(EUR,YEN) = 126.69$$
$$E(YEN,USD) = 0.0091$$
If I wanted the value of $1.50 USD in EUR, I would calculate $1.50*0.91$, and if I wanted the value of €1.50 EUR in USD, I would calculate $1.50*1.13$.
Since most pairs of vertices will have two edges between them, with one going each way, the graph has cycles. What I want to be able to do is find all cycles in the graph that result in a value larger than the initial state. This process is known as arbitrage.
So, say I have $1 USD. I want to evaluate all possible paths in the graph that would start at $V(USD)$, end at $V(USD)$, and have the end value greater than or equal to the start value. For example:
$$$1 rightarrow €0.91 rightarrow ¥115.2879 rightarrow $1.049$$
This example starts and ends at the same vertex and has an end value of $1.049, which is greater than the starting value of $1. Thus, it is a valid path.
Is there an algorithm that achieves this type of search behavior? I am familiar with basic path search algorithms, but none of the ones I currently have knowledge of allow searching specifically for cycles, and they all prioritize reducing cost rather than increasing it (although I'm sure this can be solved with a few operator swaps).
discrete-mathematics graph-theory directed-graphs
$endgroup$
I have a directed graph where the vertices represent Forex currencies, and the edges represent the ratio of the projecting currency to the projected currency. For example:
$$E(USD, EUR) = 0.91$$
$$E(EUR, USD) = 1.13$$
$$E(EUR,YEN) = 126.69$$
$$E(YEN,USD) = 0.0091$$
If I wanted the value of $1.50 USD in EUR, I would calculate $1.50*0.91$, and if I wanted the value of €1.50 EUR in USD, I would calculate $1.50*1.13$.
Since most pairs of vertices will have two edges between them, with one going each way, the graph has cycles. What I want to be able to do is find all cycles in the graph that result in a value larger than the initial state. This process is known as arbitrage.
So, say I have $1 USD. I want to evaluate all possible paths in the graph that would start at $V(USD)$, end at $V(USD)$, and have the end value greater than or equal to the start value. For example:
$$$1 rightarrow €0.91 rightarrow ¥115.2879 rightarrow $1.049$$
This example starts and ends at the same vertex and has an end value of $1.049, which is greater than the starting value of $1. Thus, it is a valid path.
Is there an algorithm that achieves this type of search behavior? I am familiar with basic path search algorithms, but none of the ones I currently have knowledge of allow searching specifically for cycles, and they all prioritize reducing cost rather than increasing it (although I'm sure this can be solved with a few operator swaps).
discrete-mathematics graph-theory directed-graphs
discrete-mathematics graph-theory directed-graphs
asked Mar 26 at 17:06
HausHaus
1114
1114
1
$begingroup$
According to this answer the problem is NP-hard. You can easily reduce your problem to the sum-of-weights problem by taking logarithms.
$endgroup$
– saulspatz
Mar 26 at 17:13
add a comment |
1
$begingroup$
According to this answer the problem is NP-hard. You can easily reduce your problem to the sum-of-weights problem by taking logarithms.
$endgroup$
– saulspatz
Mar 26 at 17:13
1
1
$begingroup$
According to this answer the problem is NP-hard. You can easily reduce your problem to the sum-of-weights problem by taking logarithms.
$endgroup$
– saulspatz
Mar 26 at 17:13
$begingroup$
According to this answer the problem is NP-hard. You can easily reduce your problem to the sum-of-weights problem by taking logarithms.
$endgroup$
– saulspatz
Mar 26 at 17:13
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "69"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3163481%2fgraph-search-algorithm-for-finding-cycle-with-largest-end-result%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Mathematics Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3163481%2fgraph-search-algorithm-for-finding-cycle-with-largest-end-result%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
$begingroup$
According to this answer the problem is NP-hard. You can easily reduce your problem to the sum-of-weights problem by taking logarithms.
$endgroup$
– saulspatz
Mar 26 at 17:13