Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 完全布尔格*Q\n对应的程序*_Python_Matrix_Subset_Adjacency Matrix_Boolean Algebra - Fatal编程技术网

Python 完全布尔格*Q\n对应的程序*

Python 完全布尔格*Q\n对应的程序*,python,matrix,subset,adjacency-matrix,boolean-algebra,Python,Matrix,Subset,Adjacency Matrix,Boolean Algebra,我是数学系的一年级学生,我还没有上过编程课 我正在做一个项目,为了简化我的计算,最好能实现一个程序来计算一个矩阵,对应于完整的布尔格Q_n,它是一组从1到n的n个整数及其所有可能的子集 例如,当n=4时,矩阵如下: 1;0;0;0;1;1;1;0;0;0;1;1;1;0;1 0;1;0;0;1;0;0;1;1;0;1;1;0;1;1 0;0;1;0;0;1;0;1;0;1;1;0;1;1;1 0;0;0;1;0;0;1;0;1;1;0;1;1;1;1 其中第一列对应于{1,2,3,4}的

我是数学系的一年级学生,我还没有上过编程课

我正在做一个项目,为了简化我的计算,最好能实现一个程序来计算一个矩阵,对应于完整的布尔格Q_n,它是一组从1到n的n个整数及其所有可能的子集

例如,当n=4时,矩阵如下:

1;0;0;0;1;1;1;0;0;0;1;1;1;0;1

0;1;0;0;1;0;0;1;1;0;1;1;0;1;1

0;0;1;0;0;1;0;1;0;1;1;0;1;1;1

0;0;0;1;0;0;1;0;1;1;0;1;1;1;1
其中第一列对应于{1,2,3,4}的子集{1},第二列对应于{1,2,3,4}的子集{2},第5列对应于{1,2,3,4}的子集{1,2},以此类推

我的想法是先创建相应大小的全零矩阵,然后我不知道如何继续。请帮助我获得想法。

本模块使这变得简单。这里有一个方法:

import itertools

def subset_matrix(n):
    A = [[0]*pow(2,n) for _ in range(n)]
    j = 0
    for k in range(n+1):
        for c in itertools.combinations(range(n),k):
            for i in c:
                A[i][j] = 1
            j += 1
    return A

#for example:

A = subset_matrix(4)
for row in A:
    print(row)
输出:

[0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1]
[0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1]
[0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1]
[0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1]
该模块使这变得容易。这里有一个方法:

import itertools

def subset_matrix(n):
    A = [[0]*pow(2,n) for _ in range(n)]
    j = 0
    for k in range(n+1):
        for c in itertools.combinations(range(n),k):
            for i in c:
                A[i][j] = 1
            j += 1
    return A

#for example:

A = subset_matrix(4)
for row in A:
    print(row)
输出:

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

非常感谢你!非常感谢你!