python生成一个8行6列的矩阵_在Python中生成所有6x6(0,1)矩阵的最有效算法,列和行的和小于2?...

我正在研究一个问题,这个问题要求我找到所有6x6(0,1)矩阵和一些给定的属性:行/列之和必须小于2。在

矩阵不是对称的。在

我使用这个代码:import numpy as np

import itertools as it

n=6

li=[]

for i in it.product([0, 1], repeat = n**2):

if (np.reshape(np.array(i), (n, n)).sum(axis=1) < 2).all() and (np.reshape(np.array(i), (n, n)).sum(axis=0)< 2).all() :

if (np.transpose(np.reshape(np.array(i), (n, n))) != np.reshape(np.array(i), (n, n))).any():

li.append(np.reshape(np.array(i), (n, n)))

问题是这种方法必须遍历所有68719476736(0,1)矩阵。在这段代码之后,我仍然需要附加条件。在

有没有更快的算法来找到这个矩阵列表?在

编辑:

我正在研究的问题是找到一个唯一的邻接矩阵(图论),直到一个特定的等价类。例如,在问题的4x4版本中,我希望找到所有(0,1)矩阵,以便:行/列之和小于2

不是对称的,即A^T!=A

也是一个^T!=P^T A P,其中P是二面体群D8(8阶)的矩阵表示,它是S4的子群。在

在最后一步之后,我得到了一定数量的矩阵。如果A通过关系B=P^T A P与B相关,那么它表示相同的矩阵。我只选择了这个等价类的一个代表。在

在4x4问题中,我从65536变为3。在

在对第一个条件(和)进行排序后,我对结果的估计是46080。在6x6问题中,变换组P的阶数为48。在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值