矩阵链应用程序中的所有可能分组

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

我研究了矩阵链乘法,其中给定一系列矩阵,目标是找到最有效的乘法矩阵方法。问题实际上不是执行乘法,而只是决定所涉及的矩阵乘法的顺序。

所以说比如说。给定2个矩阵A和B,我可以有一个可能的矩阵组合,即(AB),当我的矩阵是3时:A, B, C,我可以有两种可能的组合:(AB)CA (BC)。我希望实现一个代码,因为矩阵的数量将在Python中输出所有可能的矩阵组合。

下面的代码不正确,因为给定n = 3个矩阵,它输出5个组合,实际上它应该只有2个。下面的代码是打印平衡括号的所有组合。

 def printParenthesis(str, n): 
     if(n > 0): 
         _printParenthesis(str, 0,  
                      n, 0, 0,0); 
     return; 

 def _printParenthesis(str, pos, n,  
                  open, close, count): 

     if(close == n): 
         for i in str: 
             print(i, end = ""); 
         print(); 
         return; 
     else: 
         if(open > close): 
             str[pos] = '}'; 
             _printParenthesis(str, pos + 1, n,  
                          open, close + 1, count); 
         if(open < n): 
             str[pos] = '{' + chr(65+count); 
            _printParenthesis(str, pos + 1, n,  
                          open + 1, close, count+1); 

# Driver Code 
n = 3;  //Number of matrices
str = [""] * 2 * n; 
printParenthesis(str, n); 

我如何修改上面的代码以适应我的问题?请帮忙 。

python matrix matrix-multiplication
1个回答
1
投票

看下面的链接,我无法评论这个低点,所以请承担https://www.google.co.in/amp/s/www.geeksforgeeks.org/matrix-chain-multiplication-dp-8/amp/

© www.soinside.com 2019 - 2024. All rights reserved.