Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: generation of random multiset permutation with restrictions
Replies: 17   Last Post: Jan 30, 2013 6:41 AM

 Messages: [ Previous | Next ]
 Michal Kvasnicka Posts: 62 Registered: 5/7/10
Re: generation of random multiset permutation with restrictions
Posted: Aug 21, 2012 7:32 AM

"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <k0vppj\$9u1\$1@newscl01ah.mathworks.com>...
> "Michal Kvasnicka" wrote in message <k0vp6r\$83h\$1@newscl01ah.mathworks.com>...
> > "Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <k0visb\$hog\$1@newscl01ah.mathworks.com>...
> > > This should work for standard array p:
> > >
> > > OK = @(p) isequal(sort(a),sort(p)) && all(arrayfun(@(x,s) ismember(x,s{1}),p,s));
> > >
> > > % Bruno

> >
> > Your solution is very elegant and effective. Thanks again!
> >
> > Is there any reason to completely eliminate cells (e.g. s = {[3],[1,2],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[2,3],[2,3]};) from the numerical intensive computation and work only with standard arrays? OK function (and previous method for generation of random multiset permutation with restrictions) will be called very often (about 10^3-10^6 times), so I am looking for fastest method as possible.

>
> If your set is not too large you might use logical array to store a set, e.g.
> {3} is coded as [0 0 1]';
> {1 2} is coded as [1 1 0]';
>
> And s as
> [0 0 1; 1 1 0; 1 1 1; 1 1 1; 1 1 1; 0 1 1; 0 1 1]' ;
>
> Bruno

OK ... this looks very interesting.

How do I change the following lines of code to work with logical restriction array
s = [0 0 1; 1 1 0; 1 1 1; 1 1 1; 1 1 1; 1 1 1; 0 1 1; 0 1 1]' ?

D = cellfun(@(x) min(abs(bsxfun(@minus,x(:),p)),[],1), s, 'unif', 0);
D = cat(1,D{:});

and

OK = @(p) isequal(sort(a),sort(p)) && all(arrayfun(@(x,s) ismember(x,s{1}),p,s));

And how to convert these two restrictions representations between each other?

Date Subject Author
8/9/12 Michal Kvasnicka
8/10/12 Bruno Luong
8/10/12 Michal Kvasnicka
8/21/12 Michal Kvasnicka
8/21/12 Bruno Luong
8/21/12 Michal Kvasnicka
8/21/12 Bruno Luong
8/21/12 Michal Kvasnicka
8/21/12 Bruno Luong
8/21/12 Michal Kvasnicka
8/21/12 Bruno Luong
8/23/12 Michal Kvasnicka
1/29/13 Michal Kvasnicka
1/30/13 Michal Kvasnicka
1/30/13 Bruno Luong
1/30/13 Michal Kvasnicka
1/30/13 Bruno Luong
1/30/13 Michal Kvasnicka