SQL Recursion: Common Table Expressions
Download source: node.sql
Although I'm not really too interested in web languages, occassionally I come across interesting problems.
The following problem is how to gather a list of connected nodes and add their edge weights. For instance:
if a -> b and b -> c, then a -> c
OR
a -> b and b -> c and a -> c then an edge exists directly from a to c
If each edge has a weight associated with it, we can then sum up the weight and say that for node A to travel to node C,
it's the cost of a -> b + b -> c (provided there's no edge between a -> c). This type of problem can be solved
recursively using common table expressions.
In this example I look for all the nodes which "Node B" connects to; duplicate destinations mean different paths were found. So for instance B -> O appears twice because:
B -> O (1500)
AND
B -> J -> O (300 + 200 = 500)
Here are my results using Rextester, you can use my example by clicking the source code link above.