Graphs - Depth First Search
Question: Depth First Search (DFS) is an algorithm for traversing graphs. It starts at a vertex and travels as far as possible through each branch before backtracking. Define a function 'dfs' which takes in a graph and vertex, that traverses the graph in a DFS manner from that vertex and returns the traversal path as a list. If the graph contains cycles, ignore them.
More Information:
https://en.wikipedia.org/wiki/Depth-first_searchExample
q)g:`a`b`c`d`e!(`b`c;`a`d;`a`d;`a;`z)
q)h:`a`b`c`d!(`b`c;`d`c;();())
q)dfs[g;`a]
`a`b`d`c`d
q)dfs[h;`a]
`a`b`d`c`c
q)a:1
q)b::a+1
q)c::b+1
q)v:6
q)z::v
q).z.b
a| b
b| c
v| z
q)dfs[.z.b;`a] // get dependencies for variable 'a'
`a`b`c