python矩阵乘法运算

python矩阵乘法运算假设存在一个 N 个节点的无向图 我们用表示从点 u 到点 v 有连边 否则

一、矩阵乘法

矩阵乘法为 A@Bnp.dot(A,B) ,若为对应元素相乘则用 A*Bnp.multiply(A,B)

1. A@B 和 np.dot(A,B)

A = np.array([ [1,2], [3,4] ]) B = np.array([ [1,2], [3,4] ]) C1 = A @ B C2 = np.dot(A,B) print(C1) print('---------') print(C2) 

输出为

[[ 7 10] [15 22]] --------- [[ 7 10] [15 22]] 

2. A*B 或 np.multiply(A,B)

A = np.array([ [1,2], [3,4] ]) B = np.array([ [1,2], [3,4] ]) C3 = A*B C4 = np.multiply(A,B) print(C3) print('---------') print(C4) 

输出为

[[ 1 4] [ 9 16]] --------- [[ 1 4] [ 9 16]] 

二、邻接矩阵的相乘的意义

1.定义

假设存在一个N个节点的无向图。我们用 G[u][v] = G[v][u] = 1 表示从点 u 到点 v 有连边,否则 G[u][v] = G[v][u] = 0

2.问题

如果用这个图的邻接矩阵进行自乘会得到什么呢?

3.理解

模拟矩阵的运算有 G 2 [ u ] [ v ] = ∑ i = 1 n G [ u ] [ G^{2}[u][v] = {\textstyle \sum_{i=1}^{n}} G[u][ G2[u][v]=i=1nG[u][i ] ∗ G [ ]* G[ ]G[i ] [ v ] ][v] ][v]。也就是说 G 2 [ u ] [ v ] G^{2}[u][v] G2[u][v]图上点 u 到点 v 恰好经过两条边的路径的条数的矩阵。

类似的, G 3 [ u ] [ v ] G^{3}[u][v] G3[u][v] 表示什么意思呢?
G 3 G^{3} G3 的计算过程 G 3 [ u ] [ v ] = ∑ i = 1 n G [ u ] [ G^{3}[u][v] = {\textstyle \sum_{i=1}^{n}} G[u][ G3[u][v]=i=1nG[u][i ] ∗ G [ ]* G[ ]G[i ] [ ][ ][j ] ∗ G [ ]*G[ ]G[j ] [ v ] ][v] ][v] 。同理可知其表示为 图上点 u 到点 v 恰好经过三条边的路径的条数 的矩阵。或者我们也可以将其看作 G 3 = G 2 ∗ G G^{3}=G^{2}*G G3=G2G,其本质是相同的。

由上述不难发现该性质对于一般的正整数 k 都是成立的。即 G K [ u ] [ v ] G^{K}[u][v] GK[u][v] 表示图上 u 到 v 恰好经过k条边的路径条数的矩阵。也就是说如果需要在某个图上求 u 到 v 恰好经过 K 条边的路径的条数,我们完全可以使用矩阵快速幂来优化这个计算过程。

4.代码实现

import torch # 构建邻接矩阵 a = [ [0,1,1,1], [1,0,0,1], [1,0,0,1], [1,1,1,0] ] A = torch.tensor(a) A = torch.mm(A,A) print(A) 

输出结果如下

tensor([[3, 1, 1, 2], [1, 2, 2, 1], [1, 2, 2, 1], [2, 1, 1, 3]]) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204472.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:13
下一篇 2026年3月19日 下午8:13


相关推荐

  • Trae 发布了最新的智能体模式,AI 代码编辑器中的智能体模式到底是什么?

    Trae 发布了最新的智能体模式,AI 代码编辑器中的智能体模式到底是什么?

    2026年3月15日
    2
  • uni开发app用什么调试方便_配置台式机后调试过程

    uni开发app用什么调试方便_配置台式机后调试过程uni-app项目配置平台配置HBuider建议下载下载好之后点击工具–>设置–>运行配置这个路径就是我们微信开发者工作的目录一般不需要我们自己填,只有运行不起来微信开发者工具时使用配置好这些就可以点击运行了(包括下面这个微信的端口号开启)微信小程序打开微信小程序点击设置->安全设置->保证服务器端口是开启的app真机、模拟器连接安卓设备—>首先确保我们电脑和手机通过数据线连接起来

    2025年9月19日
    6
  • 2022年Redis最新面试题第6篇 – Redis淘汰策略「建议收藏」

    2022年Redis最新面试题第6篇 – Redis淘汰策略「建议收藏」Redis过期键的删除策略?出现概率:★★★★Redis过期键的删除策略是:定期删除+惰性删除。1)、关于定期删除,Redis默认会每隔100ms就随机选取一些已经过期了的key,检查其是否过期,如果已经过期就删除。不过假设Redis里放了100w个key,而且都设置了过期时间,你每隔几百毫秒,就检查100w个key,那Redis基本上就卡死了,cpu负载也会很高的,基本都消耗在检查过期key上了。注意,这里可不是每隔100ms就遍历所有的设置过期时间的key,那样就是一场性能上的灾难。实际情况是每

    2022年10月21日
    5
  • 学会使用getopt函数[通俗易懂]

    学会使用getopt函数[通俗易懂]简介getopt函数是命令行参数解析函数,在平时阅读源码的时候经常遇到,很有必要对其总结一下,做个记录!命令行参数各组成部分的名称先来了解下命令行参数各组成部分的名称。直接上图:非常清楚,命令行参数由Commandname,Option,Optionargument以及Operands组成。Commandname不用多说,就是程序的名称。操作对象Operands又…

    2022年6月9日
    50
  • mycat读写分离原理_mycat主从复制

    mycat读写分离原理_mycat主从复制前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程首先搭建mysql主从环境,及mycat安装配置mycat的schema.xml文件<?xmlversion=”1.0″?><!DOCTYPEmycat:schemaSYSTEM”schema.dtd”><mycat:schemaxmlns:mycat=”http://io.mycat/”><schemaname=”hbk”ch

    2022年10月13日
    4
  • python 字典操作提取key,value

    python 字典操作提取key,valuepython 字典操作提取 key valuediction key value1 为字典增加一项 2 访问字典中的值 3 删除字典中的一项 4 遍历字典 5 字典遍历的 key value6 字典的标准操作符 7 判断一个键是否在字典中 8 python 中其他的一些字典方法 9 将两个字典合并 a a 1

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号