Heim >Web-Frontend >js-Tutorial >JavaScript-Programm zur Überprüfung, ob die Matrix symmetrisch ist

JavaScript-Programm zur Überprüfung, ob die Matrix symmetrisch ist

WBOY
WBOYnach vorne
2023-08-27 15:37:08619Durchsuche

检查矩阵是否对称的 JavaScript 程序

Eine symmetrische Matrix ist ein Sonderfall einer Matrix, bei der sowohl die Matrix als auch die Transponierte der Matrix gleich sind. Eine Matrix ist eine Menge von ganzen Zahlen oder Zahlen, die in rechteckiger Form gespeichert sind, was einem zweidimensionalen Array entspricht. Die Transponierte einer Matrix ist auch eine Matrix, die durch Ersetzen aller Zeilen durch Spalten erhalten wird. Wir erhalten eine Matrix und müssen ausdrucken, ob es sich um eine symmetrische Matrix handelt oder nicht.

Eintreten

Mat = [[1, 2, 3],
	   [2, 3, 8],
	   [3, 8, 0]]

Ausgabe

Yes, the given matrix is the symmetric matrix. 

Anleitung

Wie wir alle wissen, ist eine transponierte Matrix eine Matrix, die Spalten durch Zeilen und Zeilen durch Spalten ersetzt. Hier ist also die erste Zeile mit der ersten Spalte identisch, die zweite Zeile mit der Spalte und die dritte Zeile ist dasselbe wie die Spalte.

Eintreten

Mat = [[1, 2, 3],
	   [2, 3, 9],
	   [3, 8, 0]]

Ausgabe

No, the given matrix is not a symmetric matrix. 

Anleitung

In der gegebenen Matrix ist die transponierte Matrix -

Trans: [[1, 2, 3],
	    [2, 3, 8],
	    [3, 9, 0]]

Wir können sehen, dass die zweite Zeile und die dritte Zeile oder die zweite Spalte und die dritte Spalte unterschiedlich sind.

HINWEIS – Wie wir sehen können, kann die Transponierte einer bestimmten Matrix durch Vertauschen von Zeilen und Spalten gebildet werden. Das heißt, wenn die Matrix die Dimensionen N*M hat, dann hat die transponierte Matrix die Dimensionen M*N. Damit eine Matrix symmetrisch ist, muss N gleich M sein, was zu einer quadratischen Matrix führt.

Naive Methode

Bei dieser Methode erhalten wir zunächst die transponierte Matrix, indem wir eine neue Matrix erstellen und die Elemente in Zeilen und Spalten speichern. Dann iterieren wir einfach über beide Matrizen und vergleichen sie. Wenn sie bei keinem Index übereinstimmen, geben wir „false“ zurück, andernfalls geben wir „true“ zurück.

Beispiel

// function to find the transpose of the given matrix
function getTranspose(mat){   
 
   // getting the number of rows present in the given matrix. 
   var n = mat.length; 
   
   // getting the number of columns present in the given matrix. 
   var m = mat.length;   
   
   // creating a new array to store the transpose matrix 
   
   // new array will have m rows and n columns 
   var transP = new Array(m) 
   
   // traversing over the given matrix column-wise 
   for(var i = 0;i < m; i++){
      var cur = new Array(n);
      for(var j = 0; j<n; j++){
         cur[j] = mat[j][i];
      }
      transP[i] = cur;
   }
   
   // returing tranpose of the given matrix 
   return transP;
}

// function to check if the given matrix is symmetric or not
function check(mat){
   var n = mat.length;
   var m = mat[0].length;
   
   // matrix must be a square matrix 
   if(n != m){
      return false;
   }    
   
   // getting tranpose of the given matrix 
   var transP = getTranspose(mat);  
   
   // checking if both matrices are equal
   for(var i = 0; i<n ;i++){
      for(var j = 0; j<n ;j++){
         if(mat[i][j] != transP[i][j]){
            return false;
         }
      }
   }
   return true;
}

// defining the matrix 
var mat = [[1, 2, 3],
           [2, 3, 8],
           [3, 8, 0]]
console.log("The given matrix is: ")
console.log(mat);
if(check(mat)){
   console.log("The given matrix is a symmetric matrix")
}
else{
   console.log("The given matrix is not a symmetric matrix")
}

Zeitliche und räumliche Komplexität

Die zeitliche Komplexität des obigen Codes beträgt O(N*N), wobei N die Größe der gegebenen Matrix ist.

Die räumliche Komplexität des obigen Codes beträgt O(N*N), da wir zusätzlichen Speicherplatz zum Speichern der transponierten Matrixelemente verwenden.

Effiziente Methode

Die transponierte Matrix kann durch Austauschen von Zeilen und Spalten erhalten werden, d. h. jede Spalte entspricht der entsprechenden Zeile. Daher ist der Wert an jedem Index (i,j) gleich dem Wert an (j,i) in der gegebenen Matrix.

Beispiel

// function to check if the given matrix is symmetric or not
function check(mat){
   var n = mat.length;
   var m = mat[0].length;  
   
   // matrix must be a square matrix 
   if(n != m){
      return false;
   }  
   
   // checking if mat[i][j] is equal to mat[j][i] or not
   for(var i = 0; i<n ;i++){
      for(var j = 0; j<i ;j++){
         if(mat[i][j] != mat[j][i]){
            return false;
         }
      }
   }
   return true;
}

// defining the matrix 
var mat = [[1, 2, 3],
           [2, 3, 8],
           [3, 9, 0]]
console.log("The given matrix is: ")
console.log(mat);
if(check(mat)){
   console.log("The given matrix is a symmetric matrix")
}
else{
   console.log("The given matrix is not a symmetric matrix")
}

Zeitliche und räumliche Komplexität

Die zeitliche Komplexität des obigen Codes beträgt O(N*N), wobei N die Größe der gegebenen Matrix ist.

Die Speicherplatzkomplexität des obigen Codes beträgt O(1), da wir keinen zusätzlichen Speicherplatz verwenden.

Fazit

Im obigen Tutorial haben wir einen JavaScript-Code implementiert, um herauszufinden, ob eine bestimmte Matrix eine symmetrische Matrix ist. Eine symmetrische Matrix ist ein Sonderfall einer Matrix, bei der sowohl die Matrix als auch die Transponierte der Matrix gleich sind und die Transponierte der Matrix durch Austauschen der Zeilen und Spalten erhalten werden kann. Eine Matrix muss quadratisch sein, um symmetrisch zu sein. Wir haben zwei Methoden mit der zeitlichen Komplexität von O(N*N), der räumlichen Komplexität von O(N*N) und der räumlichen Komplexität von O(1) implementiert.

Das obige ist der detaillierte Inhalt vonJavaScript-Programm zur Überprüfung, ob die Matrix symmetrisch ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen