はのは、私は次の論理行列を持っていると仮定してみましょう取得:MATLAB:特定の論理行列のための全ての順列
log = [1 1 0;
0 1 1;
1 0 1;
0 0 1];
列はバスケットのようなものを説明し、単一の行は、特定の属性(例えばによって識別されるいくつかのオブジェクトを記述する異なる色のボール)をあなたはそれらのバスケットに入れることができます。 1
は、(列で説明されたバスケットに)入れることができます。0
を入れることはできません。
各バスケットには、同時に1つのオブジェクトしか入れることができません。 I want to have objects in basket 1 and 3 but none in basket 2, which would be [1 0 1]
:
だから私は次の可能性があります。
- バスケット2:0項目を は、私が言うことを意味し、特定の構成のためのオブジェクトに配置する方法の順列を計算するためにどのように思ったんだけど
- バスケット1:オブジェクト1またはオブジェクト2のいずれかを含むことができます。 3
- バスケット3:オブジェクト2、objのいずれかを含むことができます。 3またはobj。 4
ので、すべてのすべてで、私は完全な順列を持っている(1行は、1つの順列を記述欄にはバスケットを説明し、数はオブジェクト記述):
1 0 2
1 0 3
1 0 4
2 0 2
2 0 3
2 0 4
どのようにこれを行うために任意の数のバスケットやオブジェクトに適応する素敵なアルゴリズムですか?私は、ネストされたと醜いループと考えることができます:( おかげでたくさん!
最終回答の最初の欄に[1 1 1 2 2 2] 'の代わりに[1 1 1 3 3 3]'と表示されますか? – Oli