Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2002
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Combination/Permutation questions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg37436] Combination/Permutation questions
  • From: michael_chang86 at hotmail.com (Michael Chang)
  • Date: Tue, 29 Oct 2002 00:09:38 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Hi everyone,

I'm running Mathematica 4.1 on Windoze XP, and have some newbie
combination/permutation questions, and am hoping that the collective
wisdom of this newsgroup can help/guide me out!  ;)

First, suppose that I have 4 objects, a, b, c, and d, respectively. 
How can I generate the permutation set when chosing, say, only *2*
elements.

In[1]:=  Permutations[{a,b,c,d}]

gives me the permutation set when choosing *all* 4 objects ... :(

Second, for the same four objects (a,b,c,d), to generate the
*combination* set (with 2 elements), I use:

In[2]:=  Needs["DiscreteMath`Combinatorica`"];
In[3]:=  cset=KSubsets[{a,b,c,d},2]

and this generates the expected 6 combinatorial pairs
({{a,b},{a,c},{a,d},{b,c},{b,d},{c,d}}).

What I'd like to do next is add each combinatorial set, and I am able
to do this correctly via:

In[4]:=  Plus@@Transpose[cset]

to obtain {a+b,a+c,a+d,b+c,b+d,c+d}.

My problem lies in the fact that now, I'd like to be able to allow
*each* (a,b,c,d) element to be either plus, or minus (in reality, I'm
trying to generate combinatorial adds/minuses for *functions*
(a,b,c,d)), and to still generate the 'sum' of the cominatorial set. 
So for instance, in my current example, for the *first* {a,b}
combinatorial pair, I'd like to be able to generate

In[5]:=  Plus@@Transpose[Partition[Flatten[Outer[List,{a,-a},{b,-b}]],2]]

(which generates {a+b,a-b,-a+b,-a-b}) ... only I'd like this to be
somehow done automatically for *each* combinatorial pair (and, for the
more general case when I generate combinatorial sets involving only
'k' elements).  I've struggled with this for a while, and am only able
to generate such a list *manually* for each of my six original
combinatorial pairs ... a tedious, and somewhat tiresome procedure! :(
 Is there a way of 'easily' doing this?!?

With my newly generated list (having 4*6 'elements'), how can I also
go about finding which expressions involve/use only, say, 1 Minus?  Is
there an 'easy' way of doing this too?  (For instance, I'd like to
then 'filter' for (a-b) and (b-a) ...)  (Perhaps the count of 1 Minus
is a little contrived for this example here, but for the more general
case I'll probably be considering, I might need to filter for, say,
(longer) expressions involving 2 Minuses (say).)

My apologies in advance for my rather long email, but as always, any
feedback and help would be most welcome and appreciated!

Thanks,

Michael


  • Prev by Date: Re: Not quite a Swell FLOOP?
  • Next by Date: Re: Not quite a Swell FLOOP?
  • Previous by thread: Re: Using list output (Newbie)
  • Next by thread: Re: Combination/Permutation questions