Все возможные группировки в матричном приложении - PullRequest
0 голосов
/ 26 сентября 2018

Я изучил умножение цепочки матриц, в которой при заданной последовательности матриц цель состоит в том, чтобы найти наиболее эффективный способ умножения матриц.Проблема на самом деле не в том, чтобы выполнить умножения, а просто в том, чтобы решить последовательность задействованных умножений матриц.

Так скажем, к примеру.Учитывая 2 матрицы A и B, у меня может быть одна возможная комбинация матриц, которая равна (AB), и когда мои матрицы 3: A, B, C,, я могу иметь две возможные комбинации: (AB)C и A (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); 

Как мне изменить приведенный выше код в соответствии с моей проблемой?Пожалуйста, помогите.

1 Ответ

0 голосов
/ 26 сентября 2018

См. Ссылку ниже, я не могу комментировать эти низкие баллы, поэтому просьба нести https://www.google.co.in/amp/s/www.geeksforgeeks.org/matrix-chain-multiplication-dp-8/amp/

...