问题的描述是这样的。我有1
到k
个不同的变量(例如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
的顶点。关键在于,即使数组表示法便于以编程方式存储排列(vj
与vector<vector<int>> arr
对应于置换为变量arr[j][i]
i
的位置的值,需要能够快速确定哪个元素在哪个循环中。与上面的示例一样,j
和f2, f3, f4,
都在一个周期内。
为此,我想将它们存储在C ++中循环符号的表示中。我想不出一个好方法(f5
是我所有的,因为我实际上并不想存储变量的名称,只是区分它们)来表示这一点。计算这个或快速存储它的快速方法会很有帮助。
我知道这不是最明确的解释,所以请随时要求澄清。