如何用C ++表示循环形式表示法中的排列?

时间:2014-03-11 05:46:42

标签: c++ permutation cycle

问题的描述是这样的。我有1k个不同的变量(例如1:多维数据集的面,2:多维数据集的顶点)和1到{{1每个变量的实例(继续上面的示例,n_k,对于多维数据集的每个面,并为多维数据集的每个面添加n_1 = 6。然后有一个置换组,用于定义变量实例的有效排列。作为具体示例,我们对于多维数据集置换组,其中n_2 = 8是六个面(f1, f2, f3, f4, f5, f6是变量1)而f是8个面(v1, v2, v3, v4, v5, v6, v7, v8是变量2)。然后是一些有效排列的例子

v

不要担心找到排列组或如何确定哪个面对应于哪个G = {e, (f1)(f2 f3 f4 f4)(f6)(v1 v2 v3 v4)(v5, v6, v7, v8) ...} 或哪个fi的顶点。关键在于,即使数组表示法便于以编程方式存储排列(vjvector<vector<int>> arr对应于置换为变量arr[j][i] i的位置的值,需要能够快速确定哪个元素在哪个循环中。与上面的示例一样,jf2, f3, f4,都在一个周期内。

为此,我想将它们存储在C ++中循环符号的表示中。我想不出一个好方法(f5是我所有的,因为我实际上并不想存储变量的名称,只是区分它们)来表示这一点。计算这个或快速存储它的快速方法会很有帮助。

我知道这不是最明确的解释,所以请随时要求澄清。

0 个答案:

没有答案