0

私にはn個のセットがあり、それぞれにn1、n2、n3...nN個の異なるメンバーがあります。それらからn1*n2 * n3 ...*nNの可能な組み合わせを生成するにはどうすればよいですか

例えば

[6] [4 5] [1 2 3 4]
will give
6 4 1 
6 4 2
6 4 3 
6 4 4
6 5 1 
6 5 2
6 5 3
6 5 4

これをmatlabで実行したいのですが、通常のアルゴリズムでも問題ありません

4

2 に答える 2

2

簡単な解決策は、合計をシミュレートすることです!

値のインデックスに対応するインデックス 0 0 0 のリストから始めます。これにより、例では値 6 4 1 が得られます。次に 1 を追加します。インデックスは 001 になり、642 などになります。

004 でオーバーフローするため、インデックスは 010 になり、6 5 1 になります。

それを続けて、訪れた可能性のカウンターを保持してください。1 * 2 * 4 の可能性があるため、いつ完了したかを簡単に知ることができます。

于 2012-05-18T08:02:32.267 に答える
1

セットのデカルト積を探していると思います:

これは役立つはずです:

cartprod(N1,N2,N3, ...) 

http://www.mathworks.com/matlabcentral/fileexchange/5475-cartprod-cartesian-product-of-multiple-sets

ここにもう一つあります

set = {n1, n2, n3, ...}
allcomb(set{:})
于 2012-05-18T07:59:55.007 に答える