COMBINATORICAL PROBLEM
- To: mathgroup at smc.vnet.net
- Subject: [mg51141] COMBINATORICAL PROBLEM
- From: dumstuck at gmx.ch (dumstuck at gmx.ch)
- Date: Wed, 6 Oct 2004 04:34:15 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
The two recursice codes below do exactly what I need. The first builds a tree linking the branches with elements called "f", whereas the second links the branches with elements called "h". BuildTree[N_, d_] := Which[ N > 2 d, {f, {BuildTree[N/2, d], BuildTree[N/2, d]}}, N == 2 d, {f, {d*Delta;, d*Delta;}}]; tree = BuildTree[32, 1] // TableForm BuildTree[N_, d_] := Which[ N > 2 d, {h, {BuildTree[N, 2d], BuildTree[2 d, d]}}, N == 2 d, {f, {d*Delta;, d*Delta;}}]; BuildTree[32, 1] // TableForm What I'm desparately trying to do, without success, is to generate all the possibile trees by alternating, using either "h" or "f". The first idea is to simply provide the line "N>2d" with the list containing the two possibiles: BuildTree[N_, d_] := Which[ N > 2 d, {{h, {BuildTree[N, 2d],BuildTree[2 d, d]}}, {f, {BuildTree[N/2, d], BuildTree[N/2, d]}}}, N == 2 d, {f, {d*Delta;, d*Delta;}}]; BuildTree[32, 1] // TableForm This provides of course all the possibilities but not in a structure readable by humains like the two former. I'm therefore looking for a way of either building the tree differently or a extracting the solutions from the results of this last function.