📜  置换群和置换的乘法(1)

📅  最后修改于: 2023-12-03 14:57:04.247000             🧑  作者: Mango

置换群和置换的乘法

在抽象代数中,置换群是指一组可以进行置换操作(交换对象的位置)的元素所构成的群结构。每一个群元素都是一种置换操作,我们称其为置换。

置换

一个置换是一种将集合中元素的位置相互交换的操作。一般地,我们可以用一个括号表示置换,括号中的数字表示原来在那个位置上的元素应该移动到的位置。例如,置换(1 2 3)表示将原来在位置1上的元素移动到位置2上,将原来在位置2上的元素移动到位置3上,将原来在位置3上的元素移动到位置1上。

但是,我们还需要考虑一种特殊的置换,它并不改变集合中的元素的位置。这个置换称为“恒等置换”,通常用字母e表示。

置换群的定义

置换群是一个群,它的群操作是置换的乘法。我们称这个群为“对称群”,记作Sym(X),其中X是集合的任意子集。

对于任意的两个置换g和h,它们的乘积gh表示先进行置换h,再进行置换g。

置换群的例子

举例来说,考虑下面这个集合{1,2,3,4}。

平凡置换:(1)(2)(3)(4) 置换1:(1 2)(3)(4) 置换2:(1 3)(2)(4) 置换3:(1 4)(2 3) 置换4:(1 2 3)(4) 置换5:(1 3 2)(4) 置换6:(1 4 3 2)

这个集合中的置换所构成的置换群为Sym({1,2,3,4}),可以进行以下操作:

置换乘法: (1 2)(3)(4) * (1 3)(2)(4) = (1 2 3)(4) (1 3)(2)(4) * (1 4)(2 3) = (1 2)(3 4)

注意,置换乘法是不可交换的。

程序实现

为了实现置换群的乘法操作,在编写程序时,我们可以用一个二维数组来表示一个置换。第一维表示每个元素在原来的位置上应该移动到的新位置,第二维表示操作的元素。

例如,对于置换(1 2)(3)(4),它可以表示为:

[
  [1, 2, 3, 4],
  [2, 1, 3, 4]
]

置换的乘法操作可以通过矩阵乘法来实现,代码如下:

def multiply(p1, p2):
    m = len(p1)
    n = len(p1[0])
    q = [[0] * n for _ in range(m)]
    for i in range(m):
        for j in range(n):
            q[i][j] = p1[i][p2[0][j]-1]
    return q

使用示例:

p1 = [
       [1, 2, 3, 4],
       [2, 1, 3, 4]
     ]
p2 = [
       [1, 2, 3, 4],
       [3, 2, 1, 4]
     ]
q = multiply(p1, p2)
print(q)

# Output:
# [
#  [1, 2, 3, 4],
#  [2, 3, 1, 4]
# ]

在上面的代码中,我们使用了一个辅助数组q来储存结果。在计算数组元素的时候,我们将第一个置换的结果作为输入,将第二个置换中的元素作为列索引,得到最终结果。

结论

通过上述的例子和代码实现,我们可以看出置换群的实现方法比较简单。通过在程序中定义置换,并使用矩阵乘法进行操作,我们可以轻松地实现各种置换群的乘法。这对于计算机科学和其他应用领域来说都是十分重要的。