Python 完全布尔格*Q\n对应的程序*
我是数学系的一年级学生,我还没有上过编程课 我正在做一个项目,为了简化我的计算,最好能实现一个程序来计算一个矩阵,对应于完整的布尔格Q_n,它是一组从1到n的n个整数及其所有可能的子集 例如,当n=4时,矩阵如下: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}的
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]
非常感谢你!非常感谢你!