As has been pointed out by Robert Baskin, your ``restricted'' permutations comprise the bulk of all permutations; i.e. the restriction isn't as restrictive as one might have expected.
So constructing ***all*** restricted permutations is probably not very useful. However if you simply wish to ***generate*** restricted permutations at random, then your problem is (I think) solvable as follows: ===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+=== restr.perm <- function () { S <- 4:12 G <- NULL A <- list(1:3,4:6,7:9,10:12) for(k in 1:4) { for(i in A[[k]]) { tmp <- union(i,S) tmp <- setdiff(tmp,G) x <- if(length(tmp)==1) tmp else sample(tmp,1) G <- c(G,x) S <- setdiff(S,G) } S <- union(S,A[[k]]) R <- if(k < 4) A[[k+1]] else NULL R <- union(R,G) S <- setdiff(S,R) } G } ===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+=== Sample output: > set.seed(42) > restr.perm() [1] 12 11 5 2 10 9 4 8 3 7 1 6 > restr.perm() [1] 10 12 5 9 3 2 7 1 4 8 11 6 which look O.K. according to my understanding of your criterion for ``acceptable'' permutations. cheers, Rolf Turner [EMAIL PROTECTED] Jordi Altirriba wrote: > Dear R users, > I'm a beginner user of R and I've a problem with permutations that I > don't know how to solve. I've 12 elements in blocks of 3 elements and > I want only to make permutations inter-blocks (no intra-blocks) > (sorry if the terminology is not accurate), something similar to: > > 1 2 3 | 4 5 6 | 7 8 9 | 10 11 12 ----------1st permutation > > 1 3 2 | 4 5 6 | 7 8 9 | 10 11 12 NO > - - > 3 2 1 | 4 5 6 | 7 8 9 | 10 11 12 NO > - - - > 1 2 4 | 3 5 6 | 7 8 9 | 10 11 12 YES-----2nd permutation > - - > 4 5 6 | 1 2 3 | 7 8 9 | 10 11 12 YES-----3rd permutation > - - - - - - > 4 5 6 | 2 1 3 | 7 8 9 | 10 11 12 NO > - - > .... > > Thanks for your time, > > Jordi Altirriba > Ph D student > > Hospital Clinic – Barcelona - Spain > > > MSN Motor. http://motor.msn.es/researchcentre/ > > ______________________________________________ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > > From [EMAIL PROTECTED] Tue Jul 13 17:19:55 2004 > From: "Baskin, Robert" <[EMAIL PROTECTED]> > To: =?iso-8859-1?Q?=27Jordi_Altirriba_Guti=E9rrez=27?= <[EMAIL PROTECTED]>, > [EMAIL PROTECTED] > Subject: RE: [R] Permutations > Date: Tue, 13 Jul 2004 16:12:46 -0400 > MIME-Version: 1.0 > X-OriginalArrivalTime: 13 Jul 2004 20:14:08.0328 (UTC) > FILETIME=[F4123480:01C46915] > Received-SPF: none (hypatia: domain of [EMAIL PROTECTED] does not designate > permitted sender hosts) > Received-SPF: none (hypatia: domain of [EMAIL PROTECTED] does not designate > permitted sender hosts) > X-Virus-Scanned: by amavisd-new at stat.math.ethz.ch > Content-Transfer-Encoding: 8bit > X-MIME-Autoconverted: from quoted-printable to 8bit by hypatia.math.ethz.ch id > i6DKABdp031609 > Cc: > X-BeenThere: [EMAIL PROTECTED] > X-Mailman-Version: 2.1.5 > List-Id: "Main R Mailing List: Primary help" <r-help.stat.math.ethz.ch> > List-Unsubscribe: <https://www.stat.math.ethz.ch/mailman/listinfo/r-help>, > <mailto:[EMAIL PROTECTED]> > List-Archive: <https://www.stat.math.ethz.ch/pipermail/r-help> > List-Post: <mailto:[EMAIL PROTECTED]> > List-Help: <mailto:[EMAIL PROTECTED]> > List-Subscribe: <https://www.stat.math.ethz.ch/mailman/listinfo/r-help>, > <mailto:[EMAIL PROTECTED]> > X-Spam-Math-Flag: NO > X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on erdos.math.unb.ca > X-Spam-Math-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham > version=2.63 > > I may be confused, but I think what you described will produce greater than > 472 million permutations. I think your second permutation <1 2 4 | 3 5 6 | > 7 8 9 | 10 11 12 YES-----2nd permutation> shows that you want more than > just a permutation of entire blocks. > > There are a total of 12! (12 factorial) permutations of 1:12 ignoring your > blocking restriction. > > There are 3! * 9! Permutations in which the first block has an intrablock > permutation and the rest of the 9 symbols can do anything. Since there are > 4 blocks then there are fewer than 4 * 3! * 9! permutations with intra-block > transfers (this 4*3!*9! double counts some intrablock permutations - you > need to take out of the 9! the count of intra-block only permutations among > the remaining 9 symbols: 3!*3!*3!). > > This gives more than > 12! - 4*3!*9! + 1 = 9!*[12*11*10 - 4*3*2*1] + 1 = 12*9![110 - 2] + 1 ~ 472 > million permutations. > > How could you possibly deal with all of these permutations? If you can deal > with this much junk then maybe you can generate all 12! Permutations and > take out the ones you don't want. > > Sorry if I got it totally wrong > bob > > > > -----Original Message----- > From: Jordi Altirriba Gutiérrez [mailto:[EMAIL PROTECTED] > Sent: Tuesday, July 13, 2004 3:07 PM > To: [EMAIL PROTECTED] > Subject: [R] Permutations > > > Dear R users, > I'm a beginner user of R and I've a problem with permutations that I don't > know how to solve. I've 12 elements in blocks of 3 elements and I want only > to make permutations inter-blocks (no intra-blocks) (sorry if the > terminology is not accurate), something similar to: > > 1 2 3 | 4 5 6 | 7 8 9 | 10 11 12 ----------1st permutation > > 1 3 2 | 4 5 6 | 7 8 9 | 10 11 12 NO > - - > 3 2 1 | 4 5 6 | 7 8 9 | 10 11 12 NO > - - - > 1 2 4 | 3 5 6 | 7 8 9 | 10 11 12 YES-----2nd permutation > - - > 4 5 6 | 1 2 3 | 7 8 9 | 10 11 12 YES-----3rd permutation > - - - - - - > 4 5 6 | 2 1 3 | 7 8 9 | 10 11 12 NO > - - > .... > > Thanks for your time, > > Jordi Altirriba > Ph D student > > Hospital Clinic - Barcelona - Spain > > > MSN Motor. http://motor.msn.es/researchcentre/ ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html