私には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で実行したいのですが、通常のアルゴリズムでも問題ありません
私には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で実行したいのですが、通常のアルゴリズムでも問題ありません
簡単な解決策は、合計をシミュレートすることです!
値のインデックスに対応するインデックス 0 0 0 のリストから始めます。これにより、例では値 6 4 1 が得られます。次に 1 を追加します。インデックスは 001 になり、642 などになります。
004 でオーバーフローするため、インデックスは 010 になり、6 5 1 になります。
それを続けて、訪れた可能性のカウンターを保持してください。1 * 2 * 4 の可能性があるため、いつ完了したかを簡単に知ることができます。
セットのデカルト積を探していると思います:
これは役立つはずです:
cartprod(N1,N2,N3, ...)
http://www.mathworks.com/matlabcentral/fileexchange/5475-cartprod-cartesian-product-of-multiple-sets
ここにもう一つあります
set = {n1, n2, n3, ...}
allcomb(set{:})