介绍
如果您已经知道什么是循环组,则可以跳过此部分。
一个组是由一个集合和一个关联的二进制运算定义的$
(也就是说,(a $ b) $ c = a $ (b $ c)
。该组e
中仅存在一个元素,而a $ e = a = e $ a
对于该组中的所有元素a
(恒等)。对于a
该组中的每个元素,都存在一个精确的b
使得a $ b = e = b $ a
(逆)元素对于组中的每个两个元素a, b
,a $ b
都位于组中(闭包)。
我们可以a^n
代替来写a$a$a$...$a
。
通过任何元件产生的循环子a
组中的是<a> = {e, a, a^2, a^3, a^4, ..., a^(n-1)}
,其中n
是子组的顺序(大小)(除非该亚型是无限的)。
如果一个组可以由其元素之一生成,则它是循环的。
挑战
给定有限群的Cayley表(乘积表),确定它是否为循环的。
例
让我们看一下下面的Cayley表:
1 2 3 4 5 6
2 3 1 6 4 5
3 1 2 5 6 4
4 5 6 1 2 3
5 6 4 3 1 2
6 4 5 2 3 1
(这是Dihedral第3组D_3的Cayley表)。
这是1索引的,因此,如果要查找的值5 $ 3
,我们在第三行的第五列中查找(请注意,运算符不一定是可交换的,因此5 $ 3
不一定等于3 $ 5
。我们在此处看到5 $ 3 = 6
(也3 $ 5 = 4
)。
我们可以从<3>
开始以进行查找[3]
,然后在列表唯一的同时,添加最后一个元素与生成器(3)的乘积。我们得到[3, 3 $ 3 = 2, 2 $ 3 = 1, 1 $ 3 = 3]
。我们在这里分组讨论{3, 2, 1}
。
如果进行计算<1>
,<6>
您会发现该组中没有任何元素会生成整个组。因此,该组不是循环的。
测试用例
输入将作为矩阵给出,输出作为真/假决策值。
[[1,2,3,4,5,6],[2,3,1,6,4,5],[3,1,2,5,6,4],[4,5,6,1,2,3],[5,6,4,3,1,2],[6,4,5,2,3,1]] -> False (D_3)
[[1]] -> True ({e})
[[1,2,3,4],[2,3,4,1],[3,4,1,2],[4,1,2,3]] -> True ({1, i, -1, -i})
[[3,2,4,1],[2,4,1,3],[4,1,3,2],[1,3,2,4]] -> True ({-1, i, -i, 1})
[[1,2],[2,1]] -> True ({e, a} with a^-1=a)
[[1,2,3,4,5,6,7,8],[2,3,4,1,6,7,8,5],[3,4,1,2,7,8,5,6],[4,1,2,3,8,5,6,7],[5,8,7,6,1,4,3,2],[6,5,8,7,2,1,4,3],[7,6,5,8,3,2,1,4],[8,7,6,5,4,3,2,1]] -> False (D_4)
[[1,2,3,4,5,6],[2,1,4,3,6,5],[3,4,5,6,1,2],[4,3,6,5,2,1],[5,6,1,2,3,4],[6,5,2,1,4,3]] -> True (product of cyclic subgroups of order 2 and 3, thanks to Zgarb)
[[1,2,3,4],[2,1,4,3],[3,4,1,2],[4,3,1,2]] -> False (Abelian but not cyclic; thanks to xnor)
您将保证输入始终是一个组。
您可以将输入作为0索引值。
[1..n]
处于隐藏状态,这可能掩盖了某些答案中的缺陷。
[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]]
)?