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

R语言通过暴力法生成所有K×N维度0-1矩阵的实现方法

任意K×N维度0-1矩阵暴力枚举实现

核心逻辑

K行N列的0-1矩阵总共有2^(K*N)种可能,每个位置的元素独立取0或1,暴力枚举的本质就是遍历所有元素的取值组合,再按维度拼接成矩阵。

R语言实现(适配你示例中的语法)

generate_all_binary_matrices <- function(K, N) {
  total_count <- 2^(K * N)
  result_list <- vector("list", total_count)
  for (idx in 0:(total_count - 1)) {
    # 提取整数对应的二进制位,取前K*N位即可
    bit_vector <- as.integer(intToBits(idx))[1:(K*N)]
    # 按行填充为K行N列矩阵
    result_list[[idx + 1]] <- matrix(bit_vector, nrow = K, ncol = N, byrow = TRUE)
  }
  return(result_list)
}

测试调用

# 生成2×2的所有0-1矩阵
all_mats <- generate_all_binary_matrices(K = 2, N = 2)
# 遍历打印所有矩阵
for (mat in all_mats) {
  print(mat)
  cat("\n")
}

Python实现

import itertools
import numpy as np

def generate_all_binary_matrices(K: int, N: int):
    all_matrices = []
    # 生成所有长度为K*N的0-1取值组合
    for bit_comb in itertools.product([0, 1], repeat=K*N):
        # 调整维度为K行N列
        mat = np.array(bit_comb).reshape(K, N)
        all_matrices.append(mat)
    return all_matrices

测试调用

all_mats = generate_all_binary_matrices(K=2, N=2)
for mat in all_mats:
    print(mat)
    print("-"*10)

注意事项

暴力枚举的复杂度是指数级的,仅适合K、N较小的场景:当K*N>20时,总矩阵数会超过百万,继续增大会快速耗尽内存和算力,此时需要使用优化的采样或筛选方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:00:00