首頁  >  文章  >  web前端  >  檢查矩陣是否對稱的 JavaScript 程式

檢查矩陣是否對稱的 JavaScript 程式

WBOY
WBOY轉載
2023-08-27 15:37:08576瀏覽

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

對稱矩陣是矩陣的特殊情況,其中矩陣和矩陣的轉置都相同。矩陣是一組以矩形形式儲存的整數或數字,相當於二維數組,矩陣的轉置也是將所有行替換為列得到的矩陣。我們將得到一個矩陣,並且必須列印它是否為對稱矩陣。

輸入

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

輸出

Yes, the given matrix is the symmetric matrix. 

說明

眾所周知,轉置矩陣是將列替換為行、將行替換為列的矩陣,因此這裡第一行與第一列相同,第二行與列相同,第三行與列相同也是一樣的。

輸入

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

輸出

No, the given matrix is not a symmetric matrix. 

說明

在給定的矩陣中,轉置矩陣將會是 -

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

我們可以看到第二行和第三行或第二列和第三列不一樣。

注意 - 如我們所見,給定矩陣的轉置可以透過交換行和列來形成,這意味著如果矩陣的維度為N*M,則矩陣的維度為轉置矩陣將為M*N。這意味著要讓矩陣成為對稱矩陣,N 必須等於 M,從而得到方陣。

天真的方法

在這個方法中,我們首先透過建立一個新矩陣並按行列儲存元素來取得轉置矩陣。然後我們將簡單地遍歷兩個矩陣並比較它們。如果它們在任何索引處不匹配,那麼我們將返回 false,否則我們將返回 true。

範例

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

時間與空間複雜度

上述程式碼的時間複雜度為 O(N*N),其中 N 是給定矩陣的大小。

上述程式碼的空間複雜度為 O(N*N),因為我們使用額外的空間來儲存轉置矩陣元素。

高效的方法

轉置矩陣可以透過交換行和列來得到,也就是每一列等於對應的行。因此,任何索引 (i,j) 處的值將等於給定矩陣中 (j,i) 處的值。

範例

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

時間與空間複雜度

上述程式碼的時間複雜度為 O(N*N),其中 N 是給定矩陣的大小。

上述程式碼的空間複雜度為 O(1),因為我們沒有使用任何額外的空間。

結論

在上面的教學中,我們實作了一段 JavaScript 程式碼來找出給定的矩陣是否是對稱矩陣。對稱矩陣是矩陣的特殊情況,其中矩陣和矩陣的轉置都相同,且矩陣的轉置可以透過交換行和列來獲得。矩陣必須是方陣才能成為對稱矩陣。我們實作了兩種方法,時間複雜度為 O(N*N),空間複雜度為 O(N*N),空間複雜度為 O(1)。

以上是檢查矩陣是否對稱的 JavaScript 程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除