[R] Permutations
Marc Schwartz
MSchwartz at MedAnalytics.com
Wed Jul 14 00:04:50 CEST 2004
On Tue, 2004-07-13 at 15:02, Rolf Turner wrote:
> Marc Schwartz wrote (in response to a question from Jordi Altirriba):
snip
> This does not solve the problem that was posed. It only permutes the
> blocks, and does not allow for swapping between blocks. For instance
> it does produce the ``acceptable'' permutation
>
> 1 2 4 | 3 5 6 | 7 8 9 | 10 11 12 YES-----2nd permutation
>
> I would guess that a correct solution is likely to be pretty
> difficult. I mean, one ***could*** just generate all 12!
> permutations of 1 to 12 and filter out the unacceptable ones. But
> this is getting unwieldy (12! is close to half a billion) and is
> inelegant. And the method does not ``generalize'' worth a damn.
Rolf,
You are correct. I missed that (not so subtle) change in the line above.
I mis-read the "inter-blocks (no intra-blocks)" requirement as simply
permuting the blocks, rather than allowing for the swapping of values
between blocks. Time for new bi-focals...
As Robert has also pointed out in his reply, this gets quite unwieldy.
One of the follow up questions might be, is it only allowable that one
value at a time can be swapped between blocks or can multiple values be
swapped between blocks simultaneously?
I am not sure that it makes a substantive impact on the problem or its
solution, however. The question is what is to be done with the resultant
set of permutations?
FWIW, on a 3.2 Ghz P4 with 2Gb of RAM:
> system.time(perms <- permutations(12, 12, 1:12))
Error: cannot allocate vector of size 1403325 Kb
Timing stopped at: 2274.27 54.58 2787.76 0 0
Marc
More information about the R-help
mailing list