0
|
3406 Views
|
3 Replies
|
2 Total Likes
View groups...
Share
GROUPS:

# How to best graph a tree structure

Posted 9 years ago
 Hello everyone! I've a nested function I'm trying to examine, which may or may not branch at each point. It generates data looking like this: $$\left\{1, \{2\}, \{\{3,4\}\}, \{\{\{5,6\},\{7\}\}\}\right\}$$ So above $2$ has the image $\{3,4\}$ and $3$ in turn splits to $\{5,6\}$. Each element having higher depth than the last. I want to graph these progressions, but I'm struggling to map vertex edges between my nodes automatically. For The above example data the desired result is a list of directed edges pointing each node to its image, like so: $$\left\{1\to 2,2\to 3,2\to 4,3\to 5,3\to 6,4\to 7\right\}$$ My attempts get tied up with successive tables very quickly. So I'm looking for any advice or examples to follow. David
3 Replies
Sort By:
Posted 9 years ago
 Is this what you are looking for? In[1]:= tree = {1, {2}, {{3, 4}}, {{{5, 6}, {7}}}}; flat[v_] := If[ListQ[v], Flatten[v], {v}]; verts = Map[{flat[First[#]], flat[Last[#]]} &, Partition[tree, 2, 1]]; edgelist = Flatten[Map[Outer[DirectedEdge, Sequence @@ #] &, verts]] Out[3]= {1 \[DirectedEdge] 2, 2 \[DirectedEdge] 3, 2 \[DirectedEdge] 4, 3 \[DirectedEdge] 5, 3 \[DirectedEdge] 6, 3 \[DirectedEdge] 7, 4 \[DirectedEdge] 5, 4 \[DirectedEdge] 6, 4 \[DirectedEdge] 7} With a little bit of concentration and time it should be possible to simplify that even more.
Posted 9 years ago
 That's really great Bill! Thank you so much.A few of these functions are a tad unfamiliar to me, so this will hopefully fuel me to get through these sorts of problems alone in future.
Posted 9 years ago
 You should check that output very carefully to make certain it is doing what you want. I'm not convinced I really understand exactly what the function should do with all possible variations of your input.What the function was trying to do was massage the input into a consistent form and then use Outer to generate all the edges from source to destination verticies.