最近在学离散数学,碰到一个问题,解题时需要求邻接矩阵的幂。这里说明一下,邻接矩阵都是方阵,方阵就是行数和列数相等的矩阵。题目给的方阵大多都是4阶或5阶,然后要根据它的n次幂来解题(n一般在1~5之间)。所以我干脆直接写一段代码来帮我快速做题,由于我的python没有numpy模块,所以我选择用较为暴力的方法来求m阶方阵的n次幂。
以下是我的代码:
n,m=map(int,input().split()) #幂,矩阵阶数
x=[]
y=[]
for i in range(0,m): #输入矩阵
a=list(map(int,input().split()))
x.append(a)
y.append(a)
while n>1:
z=[]
for i in y:
b=[]
for j in range(0,m):
c=0
for k in range(0,m):
c+=i[k]*x[k][j]
b.append(c)
z.append(b)
y.clear()
for i in range(0,m):
y.append(z[i])
n-=1
for i in y:
print(i)
由于实际做题时碰到的矩阵一般不会太复杂,所以程序主要采用了暴力循环的方式,这对于求阶数太大的方阵显然是不合适的。不过,对于大多数情况都是适用的。如果各位有更好的方法,欢迎提出。