View on GitHub

cp-library

対称群の部分群の簡単化

C++ 用ライブラリ一覧に戻る

ソースコード

nachia/permutation/simplify-permitation-subgroup.hpp

主な機能

対称群 $S _ n$ の元の集合 $A$ が与えられたとき、それが生成する部分群 $G=\langle A\rangle$ について、別の集合 $B$ の要素を持つ 2 次元配列 B (ただしその要素は順列であるので、実際は 3 次元配列)を求める。ただし、以下の条件を満たすようにする。

関数 SimplifyPermutationSubgroup

// res.size() = n
// res[a][*].size() = (force_size_n ? n : (a+1))
// res[a][*][a] distinct
std::vector<std::vector<std::vector<int>>> SimplifyPermutationSubgroup(
    int n,
    std::vector<std::vector<int>> perm,
    bool force_size_n = true
);

対称群の元を置換で表し、それを順列で表して処理する。仮に各順列を逆順列で置き換えても問題は変わらないため、どちらで捉えてもよい。

force_size_n が:

参考


TOP PAGE