Steinhaus-Johnson-TrotterやHeapなどの置換を生成するアルゴリズムについて読んでいます。これには、Sedgewick の論文も含まれます。しかし、すべての要素が異なる場合、これらはすべて機能するようです。N!
値を共有できる要素があり、観測的に繰り返される徹底的な順列の部分を除外したい場合はどうなりますか?
辞書式アプローチについて聞いたことがあります。それらに関するC++ライブラリには2つの関数さえあります。しかし、データが順序付けされていない場合はどうでしょう。つまり、順序付けの述語ではなく、同等の述語しかありません。
Sedgewick が調べたアルゴリズムは、(もちろん、最初の順列を除いて) 同等の順列をスキップするように適応できるでしょうか?
既存のクエリ「<a href="https://stackoverflow.com/q/30963085/1010226">distinct permutations of a list with repeats」は近いかもしれませんが、その問題と解決策は R にあります。 、一般的ではありません。