django sending email failed

2023-01-21   ES  

Title:Determine n matrix connection multiplication A1A2A3 … ancalculation order, so that the number of “number multiplier” required for the calculation matrix is calculated according to this sequence.

  • This problem meets the conditions of dynamic planning
  • matrix multiplication to satisfy-combined law
  • Two matrix multiplication, to meet the number of columns of the left matrix = the number of rows of the right matrix
  • two matrix multiplication, the calculation amount is: the number of rows on the left matrixmultipliedThe number of columns on the left matrix (ie: the number of rows on the right matrix)The number of columns on the right matrix
  • Question is not actually a multiplication, but justThe order of the matrix multiplication involved in the decision

Bring the matrix multiplication product to {p (i-1), Pi, P (i+1), …, pk, …, pj}:

  • p (i-1) is a matrix AIline number
  • PI is a matrix AIcolumn number, also the matrix a (i+1)line number
  • p (i+1) is the matrix matrix a (i+1)column number
  • is: {p (i-1), Pi, P (i+1)} indicates two matrix AIA (i+1) multiplication

Assuming the last part of the optimal calculation order of the matrix multiplication A [i: j] is interrupted between matrix AK and matrix A (k+1),
K Position is only J-1 possibility
calculation quantity: the optimal calculation amount of: A [i: K] + A [K + 1: J] optimal calculation amount + the calculation amount of the two matrix left by the last multiplication operation (as shown below)

recursive algorithm (memorandum of use: solve the problem of overlapping subtrays, improve algorithm efficiency):

#include <iostream> 

 using namespace std; 
 #Define MaxSize 20 

 void matrixchain (int *p, int n, int m [] [] [maxsize], int s [] [] [maxsize]) {// 
 int i, j, r, k; 
 int T; // t is the middle amount 
 for (i = 1; i <= n; i ++) { 
 m [i] [i] = 0; // Set up a single matrix to 0, because the calculation in the figure above will appear, so it is set to 0 
 For (r = 2; r <= n; r ++) {// r means the number of matrix in the connection matrix 
 For (i = 1; I <= n-r+1; i ++) {// i indicates the first one of the connection matrix 
 j = i + r -1; // j means the last one of the connection matrix 
 m [i] [j] = m [i + 1] [j] + p [i-1] * p [i] * p [j]; // Here I give K to K (refer to the calculated in the figure above) 
 s [i] [j] = i; 
 for (k = i+1; k <j; k ++) { 
 t = m [i] [k] + m [k + 1] [j] + p [i-1] * p [k] * p [j]; // (calculated in the figure above) 
 if (t <m [i] [j]) { 
 m [i] [j] = t; 
 s [i] [j] = k; 
 COUT << Endl << "The best multiplication:" << m [1] [n] << Endl; 

 void traceback (int i, int j, int s [] [] [maxsize]) {// optimal multiplication path path 
 if (i <j-1) {{ 
 Traceback (i, s [i] [j], s); 
 Traceback (s [i] [j]+1, j, s); 
 COUT << "Matrix a" << i << "," << s [i] [j] << "<< s [i] +1 <<", "<< j <", "j <<<< j <" <endl; 

 int main () {) 
 int m [maxsize] [maxsize], // m [i] [j] recorded from I to J required at least the number 
 s [maxsize] [maxsize]; // s [i] [j] corresponding to the disconnection position of m [i] [j] 
 int p [maxsize]; // Store the number of lines of matrix, the number of columns 
 int n; 
 do { 
 COUT << "Please enter the number of matrices connected to the matrix (2 to 20) n ="; 
 cin >> n. 
 } While (n <2 || n> 20); 
 Cout << "Please enter the number of rows of n matrices in turn and the number of columns of the last matrix (input n+1 number):" << endl; 
 for (int i = 0; i <n+1; i ++) { 
 cin >> p [i]; 
 Matrixchain (p, n, m, s); 
 Traceback (1, n, s); 

Reference materials:
China University MOOK algorithm design and analysis 5.3-> 5.5


Related Posts

docker set up registry (built with the new version of Docker-CE)

linux simply read and write a file

IOS development Homekit (2) lu

bzoj1677: [USACO2005 JAN] SumSets

django sending email failed

Random Posts

Computer network (7th edition) -Chapter 5 Transportation Layer -Important Concept

F1 score, Micro F1Score, Macro F1Score

Output month English name (20 points)

nr CSI (3) CQI

mysql cursor use template