高效的Matlab枚举n个可区分球的所有可能分布到k个可区分的盒子中

时间:2017-11-20 21:30:37

标签: matlab combinations permutation enumeration discrete-mathematics

为简单起见,有5个名为B1,B2,B3,B4,B5的球。然后有3个方框,比如b1,b2,b3

例如,有3^5种方式: -

B1,B2|B4|B3,B5

B1,B4|B5|B3,B2

...

我的实施如下: -

function distributions=compute_balls_in_boxes(balls,boxes)

c = dec2base(0:boxes^balls-1,boxes,balls)-'0';
distributions=cell(boxes^balls,1);
for i=1:size(c,1)
    curr=cell(boxes,1);
    for j=1:balls
        curr{c(i,j)+1}=[curr{c(i,j)+1};j];
    end
    distributions{i}=curr;
end

end

python解决方案是available。我正在寻找更高效的matlab方法。有人可以建议更快的matlab实现吗?例如,我在我的解决方案中使用细胞细胞,我认为这是非常低效的。即使dec2base也是一个庞大的功能。

0 个答案:

没有答案