我有以下问题。我需要计算一个集合的排列;然而,该组可能包含两个相同的元素,因此会导致重复的排列。例如:有效地找到独特的排列
鉴于集[ 0 0 1 2 ]
,所述排列包括这些可能性:
1 2 0 0
1 2 0 0
然而,我想避免相同的排列如这些。在MATLAB中我可以简单地这样做:
unique(perms([ 0 0 1 2 ]), 'rows')
但这里的问题是效率 - 我在一个巨大的for
循环反复这样做的,由unique
所需的排序太慢。所以我的问题是:我可以直接计算这种性质的独特排列直接而不必循环之后的结果?我在MATLAB工作,但只是一个通用的解决方案可能会有所帮助,虽然可以在MATLAB中进行矢量化的东西可能是理想的!
据我可以看到现有的问题并没有涵盖这个问题,但道歉,如果这已被回答之前。
你真的想解决什么问题?为什么你有一个循环,你需要找到高速不同阵列的排列? – nibot
好点,也许我应该是更具体的,虽然它有点混乱。我正在寻找图像之间相应对象集的方法,尽管对象有一个与它们相关的类。我从集合A中抽出5个对象,并找到将它们对应到集合B中的对象的所有方法。我通过查找每个类中的排列来解决类限制。这就是为什么有零:它们表示一个对象不与另一个对齐,这就是为什么我不想重复这样的排列。 – jazzbassrob