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

如何将Sage的OperationTable转换为FiniteDimensionalAlgebra要求的输入格式

最优转换方法

实现逻辑

OperationTable的table()方法返回的二维数组op_table中,op_table[i][j]正好对应基元素e_i右乘e_j得到的结果对应的基索引,和FiniteDimensionalAlgebra要求的右乘矩阵逻辑完全匹配:

  • 右乘e_j的矩阵共n行n列(n为代数维度,即基元素数量)
  • 矩阵的第i行(对应左乘元素为e_i)仅在op_table[i][j]对应的列位置值为1,其余位置为0

代码实现

易读版本
# 从OperationTable获取乘法索引表
op_table = T.table()
n = len(op_table)
mat_list = []

for j in range(n):
    # 逐个构造右乘e_j的矩阵
    current_rows = []
    for i in range(n):
        row = [0] * n
        row[op_table[i][j]] = 1
        current_rows.append(row)
    mat_list.append(Matrix(QQ, current_rows))

# 生成目标有限维代数
B = FiniteDimensionalAlgebra(QQ, mat_list)
简洁列表推导版本
op_table = T.table()
n = len(op_table)
mat_list = [Matrix(QQ, [[1 if col == op_table[row][j] else 0 for col in range(n)] for row in range(n)]) for j in range(n)]
B = FiniteDimensionalAlgebra(QQ, mat_list)

复杂度说明

该方法时间复杂度为O(n²),是理论最优的转换方案,没有冗余计算,完全匹配Sage内置方法的输入要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:45:08