কম্পিউটার টিউটোরিয়াল

দুই ম্যাট্রিক্স গুণ (ভিন্ন ডাইমেনশন) - JavaScript

দুটি ২D অ্যারে (ম্যাট্রিক্স) গুণ করার অ্যালগরিদম যেখানে প্রথম ম্যাট্রিক্সের কলাম সংখ্যা = দ্বিতীয় ম্যাট্রিক্সের রো সংখ্যা হলে।

নিয়ম

যদি A (m×n) এবং B (n×p) হয়, তবে A×B হবে (m×p) মাপের।

উদাহরণ

A (5×4) × B (4×6) = C (5×6)

সমাধান

const multiplyMatrices = (a, b) => {
  // ভ্যালিডেশন
  if (!Array.isArray(a) || !Array.isArray(b) || !a.length || !b.length) {
    throw new Error('Arguments must be 2D arrays');
  }
  
  const rowsA = a.length;
  const colsA = a[0].length;
  const colsB = b[0].length;
  
  // ডাইমেনশন চেক
  if (b.length !== colsA) {
    throw new Error('Columns of A must equal rows of B');
  }
  
  // রেজাল্ট ম্যাট্রিক্স ইনিশিয়ালাইজ (০ দিয়ে)
  const result = Array.from({ length: rowsA }, () => 
    Array(colsB).fill(0)
  );
  
  // ম্যাট্রিক্স গুণ
  for (let i = 0; i < rowsA; i++) {
    for (let j = 0; j < colsB; j++) {
      for (let k = 0; k < colsA; k++) {
        result[i][j] += a[i][k] * b[k][j];
      }
    }
  }
  
  return result;
};

// টেস্ট
const a = [
  [1, 2, 3, 1],
  [4, 5, 6, 1],
  [7, 8, 9, 1],
  [1, 1, 1, 1],
  [5, 7, 2, 6]
]; // 5×4

const b = [
  [1, 4, 7, 3, 4, 6],
  [2, 5, 8, 7, 3, 2],
  [3, 6, 9, 6, 7, 8],
  [1, 1, 1, 2, 3, 6]
]; // 4×6

console.log(multiplyMatrices(a, b));
// 5×6 ম্যাট্রিক্স

আউটপুট ব্যাখ্যা

প্রতিটি এলিমেন্ট C[i][j] = Σ(A[i][k] × B[k][j]) কেইk=0 থেকে n-1 পর্যন্ত।

অপ্টিমাইজেশন টিপস

  • ক্যাশ-ফ্রেন্ডলি লুপ অর্ডার (i, k, j)
  • Strassen অ্যালগরিদম বড় ম্যাট্রিক্সের জন্য (O(n²·⁸¹))
  • WebGL/GPU অ্যাক্সিলারেশন খুব বড় ম্যাট্রিক্সের জন্য

উৎপাদন

[ 
  [ 15, 33, 51, 37, 34, 40 ], 
  [ 33, 78, 123, 85, 76, 88 ], 
  [ 51, 123, 195, 133, 118, 136 ], 
  [ 7, 16, 25, 18, 17, 22 ], 
  [ 31, 73, 115, 88, 73, 96 ] 
]
  1. জাভাস্ক্রিপ্টে Const এবং Let এর পার্থক্য

  2. জাভাস্ক্রিপ্টে শর্তসাপেক্ষে অ্যারে জয়েন করা

  3. জাভাস্ক্রিপ্টে দুটি অ্যারে জয়েন করা

  4. জাভাস্ক্রিপ্টে দুটি অ্যারে গুণ করা