用python求矩阵,Python如何定义矩阵

  用python求矩阵,Python如何定义矩阵

  编码前,先简单介绍一些知识点:有向图、邻接矩阵、可达矩阵。

  有向图,邻接矩阵,可达矩阵有向图在现实中经常表示路径从一个地方到另一个地方。这种从起点到终点的路由表示可以用有向图来表示。如下图所示:

  在该图中,它可以被视为从位置F1到F2、F1到F3以及F3到F2的路径。

  这种有向图也代表两个因素的相互影响关系。结合上面的有向图,我们可以理解,因子F1对因子F2、F3有影响,F3对F2也有影响。

  邻接矩阵中的元素表示两个元素之间的关系。在邻接矩阵中,matrix [i,j]表示Fi可以直接到达Fj,或者Fi可以直接影响Fj。

  看上图,F1,F2,F3之间的邻接矩阵是:

  在这个邻接矩阵中,1表示可以直接影响或直接到达,0表示不能影响或到达。

  相邻矩阵的元素按照以下规则进行运算:

  可达性矩阵可达性矩阵中的元素表示是否存在从一个地方到另一个地方的路径,或者一个因素是否具有到另一个地方的影响路径。

  邻接矩阵可以得到可达矩阵,得到的方法有如下规则:

  假设有邻接矩阵A和单位矩阵I(I和A的维数相同),对两者进行(A I)运算。当满足以下关系时:

  则m是可达矩阵。

  在测试部分,其实利用邻接矩阵求可达矩阵的操作就是一个简单的AND-OR运算。网上很多代码都是通过AND-OR运算得到的,但还有另外一种思路,就是在对上述矩阵求和时,先用传统的矩阵运算得到矩阵,在得到新的矩阵时,先对矩阵进行处理。处理逻辑是:如果一个元素的值大于等于1,则该元素为1;如果是0,那就是0,不管它。这是我的代码的想法。

  我们使用了一个带有在线答案的邻接矩阵进行测试。原始矩阵是:

  可以看出,邻接矩阵和单位矩阵都经过了初步处理。

  寻找可达矩阵的简单代码如下:

  #使用numpy包导入numpy作为NP relt _ matrix=NP . matrix([[1,0,1,1,1,0,0],[0,1,0,0,1,1],[0,1,1,0,0,0],[ [0,0,0,0,0,0, 1]])#矩阵new _ new _ matrix=relat _ matrix #在步骤K中更新1 #矩阵old _ matrix=new _ matrix在步骤Km中更新#判断条件m=0#运算步骤kstep=1而m==0:old _ matrix=new _ matrix new _ matrix=old _ matrix * relate _ matrix for I in range(0,len (new _ matrix)): for j in range (0,Len(new_matrix)): #如果元素大于1, 输出为1 if (new _ matrix [i,j]=1): new _ matrix [i,J]=1 step=step 1 print(step) #判断矩阵更新k次和矩阵更新k次是否相等if (old _ matrix==new _ matrix)。 All (): #如果相等,终止循环,设m=1,输出结果m=1 print(new_matrix,step)。输出结果是:

  从上面的运行结果可以看出,运行K=4时得到了期望的可达矩阵,可达矩阵输出到接口,与下图所示的原推理最终结果相同。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: