首页 > 解决方案 > 是否有算法可以为不必要的不​​同元素生成不同的排列?

问题描述

我一直在阅读像Steinhaus-Johnson-TrotterHeap这样的算法来生成排列,包括 Sedgewick 关于该主题的论文。但是,当所有元素都不同时,这些似乎都有效。如果我有可以共享值的元素,并且我想过滤掉N!观察性重复的详尽排列部分,会发生什么?

我听说过字典法。C++ 库中甚至还有两个与它们相关的函数。但是如果数据是无序的呢?也就是说,我只有一个等价谓词,而不是排序谓词。

Sedgewick 研究的那些算法是否可以适应跳过等效排列(当然,第一个除外)?

有一个现有的查询“<a href="https://stackoverflow.com/q/30963085/1010226">distinct permutations of a list with repeats”可能很接近,但它的问题和解决方案集在 R ,而不是一般的。

标签: algorithmlanguage-agnosticpermutationmultisetheaps-algorithm

解决方案


推荐阅读