动态编程中矩阵乘法的最终乘积?

问题描述 投票:0回答:1

我正在使用动态编程来找到矩阵相乘的最佳顺序。计算正确的顺序后,如何计算这些矩阵的最终乘积?例如,我的意思是我有这些矩阵:

m = [40,20,30,10,30]

最佳的乘法顺序是:

((A1(A2A3))A4)

如何使用该最佳括号来计算((A1(A2A3))A4)的最终乘积?(假设我的值为A1-An)

python-3.x algorithm dynamic-programming matrix-multiplication
1个回答
0
投票

[假设您有一个包含矩阵的字典,例如matrices = {'A1': ..., 'A2': ...},并且它们是Numpy数组,您可以修改字符串以使其包含__matmul__运算符@,然后使用eval计算结果:

import re
import numpy as np

matrices = {f'A{i}': np.random.randint(0, 10, size=(2, 2)) for i in range(1, 5)}

equation = '((A1(A2A3))A4)'
equation = re.sub('(?<=[0-9)])(?=[(A])', '@', equation)
result = eval(equation, {}, matrices)
© www.soinside.com 2019 - 2024. All rights reserved.