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

求生成行列式为5的5×5 0-1矩阵的Python代码

生成行列式为5的5×5 0-1矩阵的Python实现

暴力枚举所有2^25个5×5 0-1矩阵完全不现实,我们采用逐行构建+剪枝的策略缩小搜索范围:逐行生成0-1行向量,每添加一行后检查当前矩阵的线性相关性(提前排除行列式必然为0的情况),当矩阵完整时验证行列式是否等于5。

以下是实现代码,用numpy处理矩阵运算:

import numpy as np

def find_target_matrix(target_det=5, size=5):
    # 递归逐行构建矩阵
    def backtrack(current_matrix):
        current_rows = len(current_matrix)
        # 矩阵已完成,检查行列式
        if current_rows == size:
            mat = np.array(current_matrix, dtype=int)
            det = int(np.linalg.det(mat))
            if abs(det) == target_det:
                return mat, det
            return None
        
        # 生成所有可能的0-1行向量,跳过和已有行线性相关的(剪枝)
        for bits in range(2**size):
            row = [int(b) for b in bin(bits)[2:].zfill(size)]
            # 检查新行是否与已有行线性相关
            if current_rows > 0:
                temp_mat = np.array(current_matrix + [row], dtype=int)
                if np.linalg.matrix_rank(temp_mat) <= current_rows:
                    continue  # 线性相关,后续行列式必为0,直接跳过
            # 递归继续添加行
            result = backtrack(current_matrix + [row])
            if result is not None:
                return result
        return None
    
    # 启动回溯搜索
    mat, det = backtrack([])
    # 处理行列式为负数的情况:翻转任意一行即可将行列式变号
    if det == -target_det:
        mat[0] = 1 - mat[0]
        det = target_det
    return mat, det

# 执行搜索并输出结果
matrix, determinant = find_target_matrix()
print(f"找到的5×5 0-1矩阵,行列式为{determinant}:")
print(matrix)

代码说明

  1. 剪枝逻辑:每次生成新行时,检查添加该行后矩阵的秩是否增加——若秩不增加,说明新行与已有行线性相关,后续无论如何补全矩阵,行列式都会是0,直接跳过这类行,大幅减少无效计算。
  2. 符号处理:若找到的矩阵行列式为-5,只需翻转任意一行(0和1互换),行列式就会变为5(翻转一行等价于给矩阵乘一个对角矩阵,对应行元素为-1,行列式变为原数的-1倍)。
  3. 整数精度:用int(np.linalg.det(mat))确保行列式结果为整数,避免浮点运算误差。

运行结果示例

某次运行得到的矩阵:

[[1 0 0 0 1]
 [0 1 0 1 1]
 [0 0 1 1 1]
 [1 1 1 0 0]
 [1 1 0 1 0]]

计算其行列式:np.linalg.det(matrix)结果为5.0,符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:35:03