私は以下の問題があります。私はセットの順列を計算する必要があります。しかしながら、セットは同じである2つの要素を含むことができ、したがって繰り返しの順列を引き起こす。たとえば:一意の置換を効率的に見つける
1 2 0 0
1 2 0 0
しかし、私はこのような同一の順列を避けたい:セット[ 0 0 1 2 ]
考える
unique(perms([ 0 0 1 2 ]), 'rows')
をしかし、ここでの問題は効率である - 私は巨大なfor
ループで繰り返し、これをやっているとunique
で必要なソートは遅すぎる:MATLABで私は単にこれを行うことができます。だから私の質問です:私はこの性質のユニークな順列を計算することができます後で結果をループすることなく?私はMATLABで作業していますが、MATLABでベクトル化できるものはおそらく理想的ですが、一般的な解決策はおそらく役に立つでしょう。
私が知る限り、既存の質問はこの問題を正確にはカバーしていませんが、これが以前に回答されていれば謝ります。
あなたは本当に解決しようとしている問題は何ですか?なぜあなたは高速で異なる配列の順列を見つける必要があるループを持っていますか? – nibot
良い点、おそらく私はより具体的であったはずですが、ちょっと面倒です。私は、オブジェクトがそれらに関連付けられたクラスを持っていますが、イメージ間のオブジェクトの対応するセットの方法を探しています。私は集合Aから一度に5つのオブジェクトを取り出し、集合Bのオブジェクトに対応するすべての方法を見つけます。各クラス内で順列を見つけることによってクラスの制約に取り組みます。これは、ゼロがある理由です。それらは、ペアになっていないオブジェクトを表しています。そのため、このような順列を繰り返すことは望ましくありません。 – jazzbassrob