Rumah > hujung hadapan web > tutorial js > Program JavaScript untuk memeriksa sama ada matriks adalah simetri

Program JavaScript untuk memeriksa sama ada matriks adalah simetri

WBOY
Lepaskan: 2023-08-27 15:37:08
ke hadapan
606 orang telah melayarinya

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

Matriks simetri ialah kes khas matriks di mana kedua-dua matriks dan transpose matriks adalah sama. Matriks ialah satu set integer atau nombor yang disimpan dalam bentuk segi empat tepat, yang bersamaan dengan tatasusunan dua dimensi Transpose matriks juga merupakan matriks yang diperoleh dengan menggantikan semua baris dengan lajur. Kami akan mendapat matriks dan perlu mencetak sama ada matriks simetri atau tidak.

Masuk

Mat = [[1, 2, 3],
	   [2, 3, 8],
	   [3, 8, 0]]
Salin selepas log masuk

Output

Yes, the given matrix is the symmetric matrix. 
Salin selepas log masuk

Arahan

Seperti yang kita ketahui, matriks transpos ialah matriks yang menggantikan lajur dengan baris dan baris dengan lajur, jadi di sini baris pertama sama dengan lajur pertama, baris kedua sama dengan lajur, dan baris ketiga baris adalah sama dengan lajur.

Masuk

Mat = [[1, 2, 3],
	   [2, 3, 9],
	   [3, 8, 0]]
Salin selepas log masuk

Output

No, the given matrix is not a symmetric matrix. 
Salin selepas log masuk

Arahan

Dalam matriks yang diberikan, matriks yang ditransposkan ialah -

Trans: [[1, 2, 3],
	    [2, 3, 8],
	    [3, 9, 0]]
Salin selepas log masuk

Kita dapat lihat bahawa baris kedua dan baris ketiga atau lajur kedua dan lajur ketiga adalah berbeza.

NOTA - Seperti yang kita dapat lihat, transpose matriks yang diberikan boleh dibentuk dengan menukar baris dan lajur, yang bermaksud jika matriks mempunyai dimensi N*M, maka matriks transpos akan mempunyai dimensi M*N . Ini bermakna bahawa untuk matriks menjadi simetri, N mesti sama dengan M, menghasilkan matriks segi empat sama.

Kaedah naif

Dalam kaedah ini, kita mula-mula mendapatkan matriks transpos dengan mencipta matriks baharu dan menyimpan elemen dalam baris dan lajur. Kami kemudian hanya akan mengulangi kedua-dua matriks dan membandingkannya. Jika ia tidak sepadan pada mana-mana indeks maka kami akan mengembalikan palsu, jika tidak, kami akan mengembalikan benar.

Contoh

// 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")
}
Salin selepas log masuk

Kerumitan masa dan ruang

Kerumitan masa kod di atas ialah O(N*N), di mana N ialah saiz matriks yang diberikan.

Kerumitan ruang kod di atas ialah O(N*N) kerana kami menggunakan ruang tambahan untuk menyimpan elemen matriks yang ditranspos.

Kaedah yang cekap

Matriks transposed boleh diperolehi dengan menukar baris dan lajur, iaitu setiap lajur adalah sama dengan baris yang sepadan. Oleh itu, nilai pada mana-mana indeks (i,j) akan sama dengan nilai pada (j,i) dalam matriks yang diberikan.

Contoh

// 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")
}
Salin selepas log masuk

Kerumitan masa dan ruang

Kerumitan masa kod di atas ialah O(N*N), di mana N ialah saiz matriks yang diberikan.

Kerumitan ruang kod di atas ialah O(1) kerana kami tidak menggunakan sebarang ruang tambahan.

Kesimpulan

Dalam tutorial di atas, kami melaksanakan kod JavaScript untuk mencari sama ada matriks yang diberikan ialah matriks simetri. Matriks simetri ialah kes khas matriks di mana kedua-dua matriks dan transpose matriks adalah sama, dan transpos matriks boleh diperolehi dengan menukar baris dan lajur. Suatu matriks mestilah segi empat sama untuk menjadi simetri. Kami melaksanakan dua kaedah dengan kerumitan masa O(N*N), kerumitan ruang O(N*N), dan kerumitan ruang O(1).

Atas ialah kandungan terperinci Program JavaScript untuk memeriksa sama ada matriks adalah simetri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan