I have a graph like this that starts from one top node and has cycles:
I need to write an algorithm to figure if
node1 depends on
node2. The most primitive algorithm I've written simply starts with
node1 and recursively follows all available edges looking for
node2 starting from
node1. It's very inefficient because I traverse the graph over and over again. I'm wondering if there's an algorithm I can look at that caches nodes and dependencies it already walked through so that I don't go through paths I've walked once and can figure if there's a dependency or not from cache?
For example, if I'm given node
D and the question is whether it depends on node
F, I'll walk
D->E->F, and when next time I get the question if node
E depends on
F, I'll get that from cache without walking the graph.
Thanks for any ideas and suggestions!