Maison  >  Article  >  interface Web  >  Programme JavaScript pour vérifier si la matrice est symétrique

Programme JavaScript pour vérifier si la matrice est symétrique

WBOY
WBOYavant
2023-08-27 15:37:08571parcourir

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

Une matrice symétrique est un cas particulier de matrice où la matrice et la transposée de la matrice sont identiques. Une matrice est un ensemble d'entiers ou de nombres stockés sous une forme rectangulaire, équivalente à un tableau à deux dimensions. La transposition d'une matrice est également une matrice obtenue en remplaçant toutes les lignes par des colonnes. Nous obtiendrons une matrice et devrons imprimer si c'est une matrice symétrique ou non.

Entrez

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

Sortie

Yes, the given matrix is the symmetric matrix. 

Instructions

Comme nous le savons tous, une matrice transposée est une matrice qui remplace les colonnes par des lignes et les lignes par des colonnes, donc ici la première ligne est la même que la première colonne, la deuxième ligne est la même que la colonne, et la troisième la ligne est la même que la colonne.

Entrez

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

Sortie

No, the given matrix is not a symmetric matrix. 

Instructions

Dans la matrice donnée, la matrice transposée sera -

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

On peut voir que la deuxième ligne et la troisième ligne ou la deuxième colonne et la troisième colonne sont différentes.

REMARQUE - Comme nous pouvons le voir, la transposée d'une matrice donnée peut être formée en échangeant des lignes et des colonnes, ce qui signifie que si la matrice a des dimensions N*M, alors la matrice transposée aura des dimensions M*N . Cela signifie que pour qu’une matrice soit symétrique, N doit être égal à M, ce qui donne une matrice carrée.

Méthode naïve

Dans cette méthode, nous obtenons d'abord la matrice transposée en créant une nouvelle matrice et en stockant les éléments en lignes et en colonnes. Ensuite, nous allons simplement parcourir les deux matrices et les comparer. S'ils ne correspondent à aucun index, nous renverrons false, sinon nous renverrons true.

Exemple

// 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")
}

Complexité temporelle et spatiale

La complexité temporelle du code ci-dessus est O(N*N), où N est la taille de la matrice donnée.

La complexité spatiale du code ci-dessus est O(N*N) car nous utilisons un espace supplémentaire pour stocker les éléments matriciels transposés.

Méthode efficace

La matrice transposée peut être obtenue en échangeant des lignes et des colonnes, c'est-à-dire que chaque colonne est égale à la ligne correspondante. Par conséquent, la valeur à n’importe quel indice (i,j) sera égale à la valeur à (j,i) dans la matrice donnée.

Exemple

// 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")
}

Complexité temporelle et spatiale

La complexité temporelle du code ci-dessus est O(N*N), où N est la taille de la matrice donnée.

La complexité spatiale du code ci-dessus est O(1) car nous n'utilisons aucun espace supplémentaire.

Conclusion

Dans le tutoriel ci-dessus, nous avons implémenté un code JavaScript pour savoir si une matrice donnée est une matrice symétrique. Une matrice symétrique est un cas particulier de matrice dans laquelle la matrice et la transposée de la matrice sont identiques, et la transposée de la matrice peut être obtenue en échangeant les lignes et les colonnes. Une matrice doit être carrée pour être symétrique. Nous avons implémenté deux méthodes avec une complexité temporelle de O(N*N), une complexité spatiale de O(N*N) et une complexité spatiale de O(1).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer