{1,1,1,2,2,3,3,3} などのアイテムのセットと、{{3},{1,2},{1 などの制限セットがあります。 ,2,3},{1,2,3},{1,2,3},{1,2,3},{2,3},{2,3}. アイテムの順列を探していますが、最初の要素は 3 でなければならず、2 番目の要素は 1 または 2 でなければなりません。
適合するそのような順列の 1 つ: {3,1,1,1,2,2,3}
一般に、この問題のすべての順列をカウントするアルゴリズムはありますか? このタイプの問題に名前はありますか?
説明のために、特定のタイプの「制限セット」についてこの問題を解決する方法を知っています。アイテムのセット: {1,1,2,2,3}、制限 {{1,2}、{1,2,3}、{1,2,3}、{1,2}、{1,2 }}。これは 2!/(2-1)!/1! に等しいです。* 4!/2!/2!. 最初に 3 つを効果的に並べ替えます。これは最も制限が厳しいためです。次に、余裕のある残りのアイテムを並べ替えます。
また...多項式時間。それは可能ですか?
更新: これについては、以下のリンクで詳しく説明します。上記の問題は「完全一致のカウント」と呼ばれ、上記の各順列制限は、占有者に対するスロットのマトリックス上の {0,1} で表されます。