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

Again, How to speed up this calculation? and more

  • To: mathgroup at smc.vnet.net
  • Subject: [mg37246] Again, How to speed up this calculation? and more
  • From: Cheng Liu <cliu at lanl.gov>
  • Date: Fri, 18 Oct 2002 05:17:22 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Dear group,

         Thank you all for the responses.  I might not make my question 
very clear.  Suppose that I have a list of points {p1,p2, ..., pn}, I try 
to find all possible pairs of them.  The pairs may include {pi,pi}, but 
{pi,pj} and {pj,pi} are considered the same and only one is counted.

         That said.  After some try and error, I came to the following way:

         h=4;w=5;
         points=Flatten[Outer[List,Range[w],Range[h]],1];
         pairs=Flatten[Map[Outer[List,{#},Drop[points,Position[points,#][[1,1]]-1],1][[1]]&,points],1];

The speed of the above calculation is reasonably fast.  But I run into the 
memory problem.  For example, for h=64 and w=64, the length of the list 
pairs will be w*h (w*h+1)/2 = 8,390,656.  In my case, The numbers for h and 
w will be a lot larger than 64.  How can I get around this memory problem 
or that's the dead end for my calculation (I do have 1 GB physical mem in 
my machine)?  Thanks a lot.

Cheng

At 12:26 PM 10/16/2002, you wrote:
>Dear group,
>
>          I have the following question regarding a lengthy calculation
>using Mathematica:
>
>For given w points in x direction and h points in y direction, I can
>construct all the points using
>
>          h=10; w=8;
>          points=Flatten[Transpose[Outer[List,Range[w],Range[h]]],1]
>
>Next, I need to find all the possible pairs of point including points
>themselves, i.e., pair AA.  I can use
>
>          pairs=Outer[List,points,points,1]
>
>Then, I have to clear those pairs that repeat themselves, i.e., pair AB and
>pair BA.  Also, when w and h are of the order of 1000s, the computation
>takes a very long time.  Is there a better way of doing the second part of
>the computation?  Thanks in advance.
>
>Sincerely
>
>Cheng
>
>
>====================================================
>Cheng Liu, Ph.D.
>MST-8, Structure/Property Relations
>Materials Science and Technology Division
>Los Alamos National Laboratory
>Los Alamos, New Mexico 87545
>
>Phone: 505-665-6892 (office), 505-667-9950 (lab)
>Fax:   505-667-8021
>email: cliu at lanl.gov
>====================================================

====================================================
Cheng Liu, Ph.D.
MST-8, Structure/Property Relations
Materials Science and Technology Division
Los Alamos National Laboratory
Los Alamos, New Mexico 87545

Phone: 505-665-6892 (office), 505-667-9950 (lab)
Fax:   505-667-8021
email: cliu at lanl.gov
====================================================



  • Prev by Date: RE: grouping and averaging {x,y} pairs of data
  • Next by Date: RE: List processing
  • Previous by thread: Re: List processing (2)
  • Next by thread: Re: Again, How to speed up this calculation? and more