You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Julia中列出固定n的对称群S(n)共轭类的技术实现:如何以循环表示法输出置换

要在Julia里生成对称群S(n)的所有共轭类,关键要记住对称群的共轭类和n的整数分拆是一一对应的——每个共轭类对应一种循环类型,而循环类型就是n的一个整数分拆(把n拆成若干正整数之和,对应循环的长度)。我们只需要为每种分拆生成一个对应循环类型的置换代表,再转换成你要的循环表示法就行。下面是具体实现:

1. 准备依赖包

首先需要用到Combinatorics包来生成整数分拆,先安装并导入:

using Pkg; Pkg.add("Combinatorics")
using Combinatorics

2. 实现循环表示法转换函数

Julia默认生成的置换是数组形式(比如[2,3,1]对应(1→2→3→1)),我们需要写一个函数把这种数组转换成你要的循环表示字符串:

function cycle_notation(perm::Vector{Int})
    visited = falses(length(perm))
    cycles = []
    for i in 1:length(perm)
        if !visited[i]
            cycle = Int[]
            j = i
            while !visited[j]
                visited[j] = true
                push!(cycle, j)
                j = perm[j]
            end
            push!(cycles, cycle)
        end
    end
    # 格式化每个循环:长度为1的循环保留(1)格式,多个循环用空格分隔
    join([length(c) == 1 ? "($(c[1]))" : "($(join(c, ",")))" for c in cycles], " ")
end

3. 根据分拆构造对应循环类型的置换

每个整数分拆对应一种循环类型,我们构造一个具有该循环类型的置换代表:

function perm_from_partition(partition::Vector{Int})
    perm = zeros(Int, sum(partition))
    current = 1
    for len in partition
        # 构造长度为len的循环:current → current+1 → ... → current+len-1 → current
        for i in 0:len-2
            perm[current + i] = current + i + 1
        end
        perm[current + len - 1] = current
        current += len
    end
    perm
end

4. 生成所有共轭类代表

把上面的函数结合起来,就能生成S(n)的所有共轭类代表列表:

function symmetric_group_conjugacy_classes(n::Int)
    # 生成n的所有整数分拆(降序排列)
    all_partitions = collect(partitions(n))
    # 为每个分拆生成置换并转成循环表示
    [cycle_notation(perm_from_partition(p)) for p in all_partitions]
end

测试示例

比如n=3时,调用函数:

symmetric_group_conjugacy_classes(3)

会输出:

3-element Vector{String}:
 "(1,2,3)"
 "(1,2) (3)"
 "(1) (2) (3)"

完全符合你想要的格式!

补充说明

  • 共轭类的本质:对称群里两个元素共轭当且仅当它们有相同的循环类型,所以每个分拆对应唯一的共轭类,我们生成的每个字符串就是对应共轭类的一个代表元。
  • 如果需要列出共轭类的所有元素(而不只是代表),可以基于每个循环类型生成所有同类型的置换,但通常共轭类只需要代表元就能区分,这也是你问题里要求的。

内容的提问来源于stack exchange,提问作者Tio Miserias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 06:27:34