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

如何生成元素为-1、0、1的3×3矩阵所有变体?Combinatorics.jl仅支持组合

生成所有元素为-1、0、1的3×3矩阵(Julia实现)

不需要依赖combinatorics.jl,直接用Julia Base库的Iterators.product就能生成所有符合要求的矩阵,核心思路是生成9个位置(3×3矩阵的元素数)的笛卡尔积,再将每个元组重塑为矩阵:

代码实现

# 定义元素可选值
values = [-1, 0, 1]
# 生成所有9元素的笛卡尔积(对应3×3矩阵的每个位置)
all_element_combinations = Iterators.product(fill(values, 9)...)
# 将每个元组转换为3×3矩阵,收集为数组
all_matrices = [reshape(collect(t), 3, 3) for t in all_element_combinations]

运行后all_matrices会包含全部3^9=19683个矩阵,其中就包含示例中的[[0,-1,-1],[-1,1,0],[0,0,1]]。

内存优化(针对后续筛选)

如果后续要做大量筛选,建议用生成器表达式替代数组推导,避免一次性加载所有矩阵:

# 示例:筛选迹为0的矩阵(仅按需生成符合条件的矩阵)
filtered = (reshape(collect(t), 3, 3) for t in all_element_combinations if sum(diag(reshape(collect(t), 3, 3))) == 0)

这样可以逐个生成符合条件的矩阵,减少内存占用。

为什么不用combinatorics.jl?

combinatorics.jl的combinations方法针对的是无重复元素的组合场景,而我们需要的是每个位置独立选择-1/0/1的可重复有序排列,本质是笛卡尔积,用Base库的Iterators.product完全可以满足需求,无需额外依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:42:39