我有以下问题。我需要计算一个集合的排列;但是,该集合可能包含两个相同的元素,因此会导致重复排列。例如:
给定 set [ 0 0 1 2 ]
,排列包括以下可能性:
1 2 0 0
1 2 0 0
但是,我想避免像这样的相同排列。在 MATLAB 中,我可以简单地做到这一点:
unique(perms([ 0 0 1 2 ]), 'rows')
但这里的问题是效率 - 我在一个巨大的for
循环中重复这样做,并且所需的排序unique
太慢了。所以我的问题是:我可以直接计算这种性质的独特排列,而不必事后遍历结果吗?我在 MATLAB 中工作,但只是一个通用的解决方案可能会有所帮助,尽管可以在 MATLAB 中矢量化的东西可能是理想的!
据我所知,现有问题并没有完全涵盖这个问题,但如果之前已经回答过这个问题,我们深表歉意。